MyBatis3
博文目录
MyBatis是一款持久层框架,原名叫ibatis;
摘自官网的简介:
MyBatis是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架。 MyBatis消除了几乎所有的 JDBC 代码和参数的手工设置以及结果集的检索。 MyBatis使用简单的 XML或注解用于配置和原始映射,将接口和 Java 的POJOs(Plan Old Java Objects,普通的 Java对象)映射成数据库中的记录。
MyBatis核心组件:
SqlSessionFactory:类似Hibernate中的SessionFactory
SqlSession:类似Hibernate中的Session
Mapper:类似之前写的DAO
Config file:配置信息
MyBatis的基本使用全程实录:
1,新建一个java project---mybatis
2,导入MyBatis的jar包
---mybatis-3.0.5.jar
---把压缩包中的optional文件夹中的jar包也添进去,说不定用的着
---连接数据库,千万不要忘记这个包:
---sql.jar(根据具体数据库导),我用的是mysql
3,配置MyBatis的配置文件,类似Hibernate连数据库的*cfg.xml
---名称随便起,我起名叫:mybatis.xml,放到src中
<?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> <!-- 配置MyBatis的环境,可以配置多个环境,每个环境包括事务管理器,数据源等信息,default表示当前使用哪一个环境(开发环境) --> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"></transactionManager> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql:///log"/> <property name="username" value="root"/> <property name="password" value="root"/> </dataSource> </environment> <enviroment id="test"> <!-- test开发环境 --> <transactionManager type="JDBC"></transactionManager> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql:///test"/> <property name="username" value="root"/> <property name="password" value="root"/> </dataSource> </enviroment> </environments> </configuration>
4,构建我们的POJO,仍然使用只有id,username,password的t_user表
package com.cn.pojo; public class User { private Integer id; private String username; private String password; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }
5,在com.cn.mapper包中创建POJO的映射文件UserMapper.xml
注:在MyBatis中,mapper配置文件相当于之前的DAO包中的UserDao的功能,只不过换了种格式表示;
<?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"> <!-- namespace推荐写成类似类的完全限定名样式的(虽说不是类)可以想象成一个mapper就是一个类,类中具有若干个方法 --> <mapper namespace="com.cn.mapper.UserMapper"> <!-- 相当于DAO中的方法,id是方法名,parameterType参数类型,resultType返回类型 关于resultType有两种形式: 1,直接写完全限定名:resultType="com.cn.pojo.User" 2,在主配置文件配置别名:请看mybatis.xml中的typeAliases标签内配置格式 select标签:查询 #{id}:表示匹配的参数名,方法中提供的参数名 --> <select id="findById" parameterType="int" resultType="User"> select id,username,password from t_user where id = #{id} </select> </mapper>
6,在mybatis.xml中添加对User别名的配置及对UserMapper.xml的关联
注:在mybatis.xml配置文件中,标签是有顺序要求的,标签按下面的顺序排列:
properties,settings,typeAliases,typeHandlers,objectFactory,objectWrapperFactory,plugins,environments,mappers
如果不按这个配置会报错:
<?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> <!-- 配置返回类型的别名alias --> <typeAliases> <typeAlias type="com.cn.pojo.User" alias="User"/> </typeAliases> <!-- 配置MyBatis的环境,可以配置多个环境,每个环境包括事务管理器,数据源等信息,default表示当前使用哪一个环境(开发环境) --> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"></transactionManager> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql:///log"/> <property name="username" value="root"/> <property name="password" value="root"/> </dataSource> </environment> </environments> <!-- 配置MyBatis的POJO映射文件,‘/’代表文件层级 --> <mappers> <mapper resource="com/cn/mapper/UserMapper.xml"/> </mappers> </configuration>
7,编写测试类,执行测试查询
package com.cn.test; import java.io.Reader; 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.cn.pojo.User; public class MyBatis { public static void main(String[] args) throws Exception { //读取mybatis的配置文件 Reader reader=Resources.getResourceAsReader("mybatis.xml"); //获取mybatis的SqlSessionFactory对象 SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(reader); //获取SqlSession,这里用来执行对数据库的操 SqlSession session=factory.openSession(); //selectOne方法第一个参数是mapper类中的方法的完全限定定义,第二个参数表示传入的参数 User user=(User) session.selectOne("com.cn.mapper.UserMapper.findById", 1); System.out.println(user.getUsername()); session.close();//关闭连接 } }
至此我们已经会使用MyBatis了!!基本架构就是这么简单。