这里重点是配置测试环境的搭建:mysql数据库、Eclipse、Mybatis3.2.0、jdk1.7。
一、准备数据库:
创建一个名称为Mybatis的数据库,编码UTF-8,创建一个user表,并添加一条记录。
Create TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`userName` varchar(50) DEFAULT NULL,
`userAge` int(11) DEFAULT NULL,
`userAddress` varchar(200) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
Insert INTO `user` VALUES ('1', '陆逊', '25', '万达广场');
二、源码目录结构:
三、配置文件:
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="User" type="com.tgb.mybatis.model.User"/>
</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://127.0.0.1:3306/mybatis" />
<property name="username" value="root"/>
<property name="password" value="123"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/tgb/mybatis/model/User.xml"/>
</mappers>
</configuration>
配置文件中配置了要扫描的映射的xml文件,数据库连接信息,以及实体的别称,整体上跟hibernate很像。
四、实体模型:
pojo类型,User包含以下字段:
public class User {
private int id;
private String userName;
private int userAge;
private String userAddress;
//get 、set 方法略
}
五、定义接口:
public interface IUserOperation {
/*
* 这里面有一个方法名 selectUserByID 必须与 User.xml 里面配置的 select 的id 对应(<select
* id="selectUserByID")
*/
public User selectUserByID(int id);
}
跟普通的接口没有两样。
六、映射文件:
User.xml内容如下:
<?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.tgb.mybatis.inter.IUserOperation">
<!-- com.yihaomen.mybatis.model.UserMapper -->
<!-- resultType的值要和Configuration.xml中的实体User的别名相同 -->
<select id="selectUserByID" parameterType="int" resultType="User">
select * from `user` where id = #{id}
</select>
</mapper>
配置文件是Mybatis的核心,需要遵循下面的规则:
接口中的方法名和参数和配置文件中的id和parameterType分别对应,sql写在配置文件中,参数和调用的类test中的方法一致。sql语句中的参数和实体中的字段名一致,大小写敏感。
七、测试:
package com.tgb.test;
import java.io.Reader;
import java.util.List;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import com.tgb.mybatis.inter.IUserOperation;
import com.tgb.mybatis.model.User;
public class Test {
private static SqlSessionFactory sqlSessionFactory;
private static Reader reader;
static {
try {
// 最终实现了从配置文件中配置工厂的初始化
reader = Resources.getResourceAsReader("Configuration.xml");
sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
} catch (Exception e) {
e.printStackTrace();
}
}
public static SqlSessionFactory getSession() {
return sqlSessionFactory;
}
public static void main(String[] args) {
//测试接口返回用户list列表
Test testUser=new Test();
testUser.selectUserByID(1);
}
}
八、总结:
这里重点是搭建一个Mybatis的环境,相关的jar包可以从这里下载,下篇文章会对具体的语法进行解释,并会展示增删改查的操作。
配置文件是核心,需要遵循如下规则: 接口中的方法名和参数和配置文件中的id和parameterType分别对应,sql写在配置文件中,参数和调用的类test中的方法一致。sql语句中的参数和实体中的字段名一致,大小写敏感。
另外,Mybatis也支持非接口的编程,因为在开发中一般都会面向接口,所以,这里就不再赘述。