MyBatis经典入门实例

时间:2021-01-26 05:12:54

周末学习了MyBatis开源框架,MyBatis是由原来的iBatis改名而来,目前已近发布了3.0.1版本。可以在官方网站http://www.mybatis.org下载

MyBatis作为持久层框架,其主要思想是将程序中的大量sql语句剥离出来,配置在配置文件中,实现sql的灵活配置。这样做的好处是将sql与程序代码分离,可以在不修改程序代码的情况下,直接在配置文件中修改sql。下面给个简单的入门例子。

下面的例子实现从数据库中查询商品表(Goods)中id为1的商品,并打印出商品名称。

数据库建表脚本如下:

DROP TABLE GOODS;

CREATE TABLE GOODS(

ID INT PRIMARY KEY,

CATE_ID INT,

NAME VARCHAR(50),

PRICE DECIMAL(16,2),

DESCRIPTION VARCHAR(100),

ORDER_NO INT,

UPDATE_TIME TIMESTAMP

);

数据库初始化脚本:

INSERT INTO GOODS(ID,CATE_ID,NAME,PRICE,DESCRIPTION,ORDER_NO,UPDATE_TIME) VALUES (1,1,'诺基亚N85',3010,'内置RealPlayer播放器',1,CURRENT_TIMESTAMP);

INSERT INTO GOODS(ID,CATE_ID,NAME,PRICE,DESCRIPTION,ORDER_NO,UPDATE_TIME) VALUES (2,1,'金立 A30',2000,'标准锂电池两块',2,CURRENT_TIMESTAMP);

一、configuration.xml配置文件

首先在工程中导入mybatis-3.0.1.jar包。然后编写configuration.xml配置文件。

xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>

<typeAliases>

<typeAlias alias="Goods" type="com.oryx.mybatis.Goods"/>

typeAliases>

<environments default="development">

<environment id="development">

<transactionManager type="JDBC"/>

<dataSource type="POOLED">

<property name="driver" value="com.mysql.jdbc.Driver"/>

<property name="url" value="jdbc:mysql://localhost:3306/test"/>

<property name="username" value="root"/>

<property name="password" value="root"/>

dataSource>

environment>

environments>

<mappers>

<mapper resource="com/oryx/mybatis/GoodsMapper.xml"/>

mappers>

configuration>

 

二、Mapper.xml配置文件

接着编写GoodsMapper.xml配置文件。Mapper配置文件主要是实现POJO类和sql之间的映射。

xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="com.oryx.mybatis.GoodsMapper">

<select id="selectGoods" parameterType="int" resultType="Goods">

select * from Goods where id = #{id}

select>

mapper>

其中#{id}是需要传入的参数,parameterType是参数的类型,resultType是查询返回的结果类。这地方的Goods是一个别名,可以在configuration.xml文件中找到它对应的具体类。

 

由此可知查询结果集将保存在com.oryx.mybatis.Goods中返回。

三、Goods类

在工程中新建com.oryx.mybatis.Goods.java类。

package com.oryx.mybatis;

import java.sql.Timestamp;

public class Goods {

private String id;

private String cateId;

private String name;

private double price;

private String description;

private int orderNo;

private Timestamp updateTime;

/**

* @return the goodsid

*/


public String getId() {

return id;

}

/**

* @param goodsid the goodsid to set

*/


public void setId(String id) {

this.id = id;

}

/**

* @return the cateId

*/


public String getCateId() {

return cateId;

}

/**

* @param cateId the cateId to set

*/


public void setCateId(String cateId) {

this.cateId = cateId;

}

/**

* @return the name

*/


public String getName() {

return name;

}

/**

* @param name the name to set

*/


public void setName(String name) {

this.name = name;

}

/**

* @return the price

*/


public double getPrice() {

return price;

}

/**

* @param price the price to set

*/


public void setPrice(double price) {

this.price = price;

}

/**

* @return the description

*/


public String getDescription() {

return description;

}

/**

* @param description the description to set

*/


public void setDescription(String description) {

this.description = description;

}

/**

* @return the orderNo

*/


public int getOrderNo() {

return orderNo;

}

/**

* @param orderNo the orderNo to set

*/


public void setOrderNo(int orderNo) {

this.orderNo = orderNo;

}

/**

* @return the updateTime

*/


public Timestamp getUpdateTime() {

return updateTime;

}

/**

* @param updateTime the updateTime to set

*/


public void setUpdateTime(Timestamp updateTime) {

this.updateTime = updateTime;

}

}

 

四、测试用例

package com.oryx.mybatis;

import java.io.IOException;

import java.io.Reader;

import java.sql.SQLException;

import org.apache.ibatis.io.Resources;

import org.apache.ibatis.session.SqlSession;

import org.apache.ibatis.session.SqlSessionFactory;

import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class TestMyBatis {

public static void main(String[] args) throws SQLException, IOException{

String resource = "com/oryx/mybatis/configuration.xml";

Reader reader = Resources.getResourceAsReader(resource);

SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);

SqlSession session = sessionFactory.openSession();

try{

Goods goods = (Goods)session.selectOne("com.oryx.mybatis.GoodsMapper.selectGoods",1);

System.out.println("good name:"+goods.getName());

}finally{

session.close();

}

}

}
实例源代码下载