MyBatis
2015年12月9日
包括对象和关系的实体映射及实体操作的映射。
PO=POJO+与表相同列属性。
参考:http://www.cnblogs.com/xdp-gacl/p/4261895.html
本机使用mysql-connector-java-5.0.8.jar。
//mybatis.xml
//Employee.java
package lee;
import java.io.Serializable;
public class Employee implements Serializable{
privateint id;
privateString emp_Name;
privateString emp_Address;
privateString emp_Mobile_Nos;
publicint getId() {
returnid;
}
publicvoid setId(int id) {
this.id= id;
}
publicString getEmp_Name() {
returnemp_Name;
}
publicvoid setEmp_Name(String emp_Name) {
this.emp_Name= emp_Name;
}
publicString getEmp_Address() {
returnemp_Address;
}
publicvoid setEmp_Address(String emp_Address) {
this.emp_Address= emp_Address;
}
publicString getEmp_Mobile_Nos() {
returnemp_Mobile_Nos;
}
publicvoid setEmp_Mobile_Nos(String emp_Mobile_Nos) {
this.emp_Mobile_Nos= emp_Mobile_Nos;
}
}
//empMapper.xml
resultType="lee.Employee">
select * from employee where id=#{id}
//Main.java
package lee;
import java.io.InputStream;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
importorg.apache.ibatis.session.SqlSessionFactoryBuilder;
public class Main {
publicstatic void main(String[] args) {
//TODO Auto-generated method stub
//mybatis的配置文件
Stringresource = "mybatis.xml";
//使用类加载器加载mybatis的配置文件(它也加载关联的映射文件)
InputStream is = Main.class.getClassLoader().getResourceAsStream(resource);
//构建sqlSession的工厂
SqlSessionFactory sessionFactory = newSqlSessionFactoryBuilder().build(is);
//使用MyBatis提供的Resources类加载mybatis的配置文件(它也加载关联的映射文件)
//Reader reader = Resources.getResourceAsReader(resource);
//构建sqlSession的工厂
//SqlSessionFactory sessionFactory = newSqlSessionFactoryBuilder().build(reader);
//创建能执行映射文件中sql的sqlSession
SqlSession session = sessionFactory.openSession();
/**
* 映射sql的标识字符串,
* me.gacl.mapping.userMapper是userMapper.xml文件中mapper标签的namespace属性的值,
*getUser是select标签的id属性值,通过select标签的id属性值就可以找到要执行的SQL
*/
String statement ="lee.empMapper.getUser";//映射sql的标识字符串
//执行查询返回一个唯一user对象的sql
Employee user =session.selectOne(statement, 1);
System.out.println(user.getEmp_Name());
}
}
结果:
参考:http://mybatis.org/mybatis-3/zh/dynamic-sql.html
参考:http://mybatis.org/mybatis-3/zh/configuration.html
configuration 配置,根节点
-|properties 属性,变量定义
-|environments 环境,全局配置
--|environment 环境变量,独立的配置,可以定义多个
---|transactionManager 事务管理器,连接池
---|dataSource 数据源,数据库连接配置
-|mappers 映射器,SQL操作映射
参考:http://mybatis.org/mybatis-3/zh/sqlmap-xml.html
mapper:映射根元素,需要指定一个唯一的namespace属性,一般使用文件的包路径。
-|cache – 给定命名空间的缓存配置。
-|cache-ref – 其他命名空间缓存配置的引用。
-|resultMap – 是最复杂也是最强大的元素,用来描述如何从数据库结果集中来加载对象。
-|sql – 可被其他语句引用的可重用语句块。
-|insert – 插入语句
-|update – 更新语句
-|delete – 删除语句
-|select – 查询语句,包含唯一标识id,参数类型parameterType,返回值类型resultType。
String resource ="org/mybatis/example/mybatis-config.xml";
InputStream inputStream =Resources.getResourceAsStream(resource);
sqlSessionFactory = newSqlSessionFactoryBuilder().build(inputStream);
SqlSession session =sqlSessionFactory.openSession();
String statement ="lee.empMapper.getUser";//映射sql的标识字符串
//执行查询返回一个唯一user对象的sql
Employee user =session.selectOne(statement, 1);
ORM:都实现了ORM,但是Hibernate的实体映射需要配置,MyBatis只需要实体类对应即可。
操作:Hibernate对PO操作,直接映射为SQL操作。MyBatis需要配置操作SQL,然后执行,不能直接映射PO操作。
易用性:Hibernate(推荐)学习较MyBatis更复杂一些,但是操作简单。
MyBatis=iBatis3
参考:http://baike.baidu.com/view/628102.htm