MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
Maven方式
sqlSessionFactory是用来创建sqlSession对象的。
String resource = "org/mybatis/example/mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
XML 配置文件(configuration XML)中包含了对 MyBatis 系统的核心设置,包含获取数据库连接实例的数据源(DataSource)和决定事务作用域和控制方式的事务管理器(TransactionManager)。XML 配置文件的详细内容后面再探讨,这里先给出一个简单的示例:
xml version="1.0" encoding="UTF-8" ?>
PUBLIC "-//mybatis.org//DTD Config3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
Mybatis的映射文件就是sql语句所在的地方,这种把sql语句可见的方式更加的灵活,我们可以很好的对sql语句进行优化,不像hibernate完全的黑箱操作。
xml version="1.0" encoding="UTF-8" ?>
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
namespace="org.mybatis.example.BlogMapper">
select * from Blog where id = #{id}
既然有了 SqlSessionFactory ,顾名思义,我们就可以从中获得 SqlSession 的实例了。SqlSession 完全包含了面向数据库执行 SQL 命令所需的所有方法。你可以通过 SqlSession 实例来直接执行已映射的 SQL 语句。例如:
SqlSession session = sqlSessionFactory.openSession();
try {
Blog blog = (Blog) session.selectOne("org.mybatis.example.BlogMapper.selectBlog", 101);
} finally {
session.close();
}
诚然这种方式能够正常工作,并且对于使用旧版本 MyBatis 的用户来说也比较熟悉,不过现在有了一种更直白的方式。使用对于给定语句能够合理描述参数和返回值的接口(比如说BlogMapper.class),你现在不但可以执行更清晰和类型安全的代码,而且还不用担心易错的字符串字面值以及强制类型转换。
SqlSession session = sqlSessionFactory.openSession();
try {
BlogMapper mapper = session.getMapper(BlogMapper.class);
Blog blog = mapper.selectBlog(101);
} finally {
session.close();
}
这样就可以执行sql语句并直接返回封装好的对象了。
另外使用对于像 BlogMapper 这样的映射器类(Mapperclass)来说,还有另一招来处理。它们的映射的语句可以不需要用 XML 来做,取而代之的是可以使用 Java 注解。比如,上面的 XML 示例可被替换如下:
package org.mybatis.example;
public interface BlogMapper {
@Select("SELECT * FROM blog WHERE id = #{id}")
Blog selectBlog(int id);
}
对于简单语句来说,注解使代码显得更加简洁,然而 Java 注解对于稍微复杂的语句就会力不从心并且会显得更加混乱。因此,如果你需要做很复杂的事情,那么最好使用 XML 来映射语句。
以上就是mybatis的简单入门,学习起来也很简单。但要深入的学习mybatis持久层的框架,还有两个重要的部分,就是mybatis的核心配置文件和映射文件的编写,下面我们就来看这两个文件到底有那些作用呢。
mybatis的核心配置文件除了上面配置数据源数据驱动等等你还有很多配置项,常用的有开启二级缓存,开启驼峰映射等等。
其中包括:
可以点击链接了解,这里就不多做介绍。
· properties 属性
· settings 设置
· typeAliases 类型别名
· typeHandlers 类型处理器
· objectFactory 对象工厂
· plugins 插件
· environments 环境
o environment 环境变量
§ transactionManager事务管理器
§ dataSource 数据源
· databaseIdProvider 数据库厂商标识
· mappers 映射器
· cache – 给定命名空间的缓存配置。
· cache-ref – 其他命名空间缓存配置的引用。
· resultMap – 是最复杂也是最强大的元素,用来描述如何从数据库结果集中来加载对象。
· parameterMap – 已废弃!老式风格的参数映射。内联参数是首选,这个元素可能在将来被移除,这里不会记录。
· sql – 可被其他语句引用的可重用语句块。
· insert – 映射插入语句
· update – 映射更新语句
· delete – 映射删除语句
· select – 映射查询语句