这里重点是配置测试环境的搭建: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>
接口中的方法名和参数和配置文件中的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也支持非接口的编程,因为在开发中一般都会面向接口,所以,这里就不再赘述。