MyBatis
最早来源于Apache基金会的开源项目iBatis,2010年移到google code改名为MyBatis
支持普通的SQL查询,是存储过程和高级映射的优秀持久层框架
封装了几乎所有的JDBC代码,包括参数以及结果集的检索
使用简单的XML来注解映射关系,将POJOS映射成数据库的记录
需要的jar包:mybatis-3.2.5.jar;mysql-connector-java-5.1.8-bin.jar
MyBatis配置流程:
一个是XML文件配置,一个是java代码的注解
MyBatis将SQL配置信息装载成一个个MappedStatement对象,并放入内存中
接口层接受到请求时,会传入SQL的id和传入对象(如:Map、JAVAbean、int等),根据SQL的ID找对应的MappedStatement,
然后根据参数对MappedsStatement对象解析成要执行的sql语句
执行后得到的结果集根据相应配置转换成对应的类型(如:HashMap、JavaBean或基本数据)
MyBatis配置文件
1)SqlMapConfig.xml:主配置文件,用于配置数据库相关参数和框架参数2)SqlMap.xml:映射文件,用于定义SQL和映射信息
MyBatis主要API
1)SqlSessionFactoryBuilder:主要对SqlMapConfig.xml主要配置文件构建SqlSessionFactory;2)SqlSessionFactory:SqlSessionFactory是应用的核心,负责创建SqlSeesion;3)SqlSeesion:SqlSeesion包含所有SQL执行的方法,用于执行已映射的SQL语句3)RowBounds类:实现分页功能,原理是在内存中分页不推荐使用。new RowBounds(offset,limit):offset:记录起始行,limt需要的记录条数
sqlSession.selectList("SQLid",参数,rowBounds对象)
4)DeptMapper:使用者自己创建。创建绑定映射语句的接口,可以从SqlSession中获取。其Mapper中的方法必须和SqlMap.xml中的id值一致。
MyBatis列子
insert into tableName set (col1,col2,...) values(#{属性名1},#{属性名2},...)
...
public class test{
public void test() throws IOException{
String conf = "path/SqlMapConfig.xml";
Reader rd = Resources.getResourcesAsReader(conf);
SqlSessionFactoryBuilder sfb = new SqlSessionFactoryBuilder;
SqlSessionFactory sf = sfb.build(rd);
SqlSession session = sf.openSession();
RowBounds rowBounds = new RowBounds(offset,limit);
session.insert("SQLid",参数);
session.update("SQLid",参数);
session.delete("SQLid",参数);
session.seleteOne("SQLid",参数);//查询条记录
session.selete("SQLid",参数,rowBounds);
session.commit();
session.close();
}
}