Mybatis是一个数据持久化层(Persisitence layer)(轻量级的框架)的开源框架(https://github.com/mybatis/) 简化手工处理
优点:消除大量的JDBC冗余代码;易于DB协同工作;接受自然的SQL语句;与Spring和Guice框架继承;易于第三方的缓存库继承;优秀的性能支持;
Sql与Java的编码分离,Sql 是开发人员控制的
Mybatis抽象了创建了Statement对象,设置输入参数,获取结果集,关闭资源。自动化了将从输入的Java的对象中的属性设置成查询参数、从Sql结果集上生成Java对象这两个过程。
- 在Sql Mapper 映射文件中配置Sql语句,假定为BookMapper.xml (每个实体对应一个 映射文件。
- 创建一个Bookmapper 接口
- 在Java代码中,在需要出可使用如下代码触发Sql语句;
SqlSession session = getSqlSessionFactory().openSession();
BookMapper mapper = session.getMapper(BookMappe.class);
Book book = mapper.selectBookBylsbn("isbn");
mapper.insertBook(book);
添加接口时:namespace :指定接口为接口的全类名;
接口可以和配置文件进行动态绑定。
Mybatis的按装配置
- 下载Mybatis
- 下载mysql数据库驱动
- 创建数据库表和Web应用项目
- 创建Mybatis的配置文件和书记表的映射文件
- 创建Mybatis工厂单例类(创建会话工厂)
- 创建书籍对象的操作接口和服务类
MyBatis的开发步骤。
1.下载mybatis.jar包并导入工程
2.编写mybatis核心的配置文件
3.创建实体类
4.Dao层-Sql映射文件
5.创建测试类
1.接口编程
原声 DAO ==>DaoImpl
Mybatis Mapper ==>xxMapper.xml
2.SqlSession 代表和数据库的一次会话,用完必须关闭。
3.SqlSession 和connection 一样非线程安全的,每次使用都应该获取新的对象
4.mapper接口没有实现类,但是Mybatis会围着个接口生成一个代理对象。
(将接口和xml进行绑定)
5.两个重要的配置文件,
Mybatis的全局配置文件:包含数据 库连接池的信息,事务管理器信息
系统运行环境信息等
<?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>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/mybatis_test" />
<property name="username" value="root" />
<property name="password" value="root" />
</dataSource>
</environment>
</environments>
<!-- 将我们写好的sql映射文件(EmployeeMapper.xml)一定要注册到全局配置文件(mybatis-config.xml)中 -->
<mappers>
<mapper resource="EmployeeMapper.xml" />
</mappers>
</configuration>
sql映射文件,保存了每一个Sql语句映射信息, 将Sql语句抽取出来。
<?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";>
<mapper namespace="com.atguigu.mybatis.dao.EmployeeMapper">
<!--
namespace:名称空间
id :唯一标识
resultType:返回类型
-->
<select id="getEmpById" resultType="com.atguigu.mybatis.bean.Employee">
select id,last_name lastName,email,gender from tbl_employee where id = #{id}
</select>
</mapper>