测试Demo的目录结构:
com.luohao.config ->MyBatisCongfig.xml ->userMapper.xml com.luohao.Test ->TestMyBatis.class ->User.class
测试数据库是MySQL,用的数据库连接是JDBC,上面的目录结构中MyBatisConfig.xml是MyBatis的核心配置文件,userMapper.xml是用来映射SQL语句的,这里的映射使用了mxl文件来配置而没有使用注释的方式的原因是在很多复杂的情况下使用xml文件来配置这里会使程序看起来整洁而且编程更加高效。
核心配置文件的xml文件是这样的:
文件:MyBatisConfig.xml
1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE configuration 3 PUBLIC "-//mybatis.org//DTD Config 3.0//EN" 4 "http://mybatis.org/dtd/mybatis-3-config.dtd"> 5 <configuration> 6 <environments default="development"> 7 <environment id="development"> 8 <transactionManager type="JDBC"/> 9 <dataSource type="POOLED"> 10 <property name="driver" value="com.mysql.jdbc.Driver"/> 11 <property name="url" value="jdbc:mysql://localhost:3306/blogtest"/> 12 <property name="username" value="root"/> 13 <property name="password" value="*******"/> 14 </dataSource> 15 </environment> 16 </environments> 17 18 <mappers> 19 <mapper resource="com/luohao/config/userMapper.xml"/> 20 </mappers> 21 22 </configuration>
每一个environment对应了每一个数据库,这里的数据使用了我的一个博客的数据库作为测试。底下的mapper标签是用来映射SQL语句的文件路径的,这里从目录结构来看userMapper.xml来看路径应该是com/luohao/config/userMapper.xml。
之后只映射的SQL语句,文件为userMapper.xml
1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 3 <mapper namespace="com.luohao.config.userMapper"> 4 <select id="Username" parameterType="String" 5 resultType="com.luohao.Test.User"> 6 select * from user where username=#{username} 7 </select> 8 </mapper>
这里的命名空间是必须的,这是MyBatis是新特性也是让代码跟家严格的特性。
id用是一个标识,之后的java代码中会出现这个,paramterType是用来对应数据类型的,这里是username,对应的是String类,resultType对应的是实例类也可以叫做模型类,是数据库SQL语句执行所得到参数所对应的get或者set方法。
之后的数据库语句基本一致,只是#号之后的java代码会插入要查找的东西。下面就是java代码了。
1 package com.luohao.Test; 2 3 import java.io.IOException; 4 import java.io.InputStream; 5 import org.apache.ibatis.io.Resources; 6 import org.apache.ibatis.session.SqlSession; 7 import org.apache.ibatis.session.SqlSessionFactory; 8 import org.apache.ibatis.session.SqlSessionFactoryBuilder; 9 10 public class TestMyBaits { 11 12 public static void main(String[] args){ 13 String resource="com/luohao/config/MyBatisConfig.xml";//对应的配置文件路径 14 InputStream inputStream = null; 15 try { 16 inputStream = Resources.getResourceAsStream(resource); 17 } catch (IOException e) { 18 e.printStackTrace(); 19 } 20 //建立SQLSession工厂 21 SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream); 22 SqlSession session=sqlSessionFactory.openSession(); 23 String statment ="com.luohao.config.userMapper.Username"; //这里的Username对应的是Mapper里的id,之后的selectOne方法可以映射到SQL语句中 24 User user=session.selectOne(statment,"luohao"); 25 System.out.println(user.getEmail()); 26 } 27 }
之后的user类就不多说了,是get和set方法。
这就是一个比较简单的MyBatis的Demo.