(一)什么是MyBatis
MyBatis是当前主流的java持久层框架之一。(另一个是Hibernate)。
Mybatis的前身是iBatis,是一种支持简单SQL数据操作、存储过程、高级映射的持久层框架。也被成为ORM框架(对象关系映射框架)。ORM就是一种处理Java对象和关系型数据库中数据类型不匹配得到技术
Hibernate和MyBatis的区别:
(二)MyBatis的工作原理
MyBatis 框架在操作数据库时,大体经过了 8 个步骤:
- 读取 MyBatis 配置文件,主要内容是获取数据库连接
- 加载映射文件 Mapper.xml
- 构建会话工厂SqISessionFactory
- 创建 SqlSession 对象
- MyBatis 底层定义了一个 Executor 接口来操作数据库,它会根据 SqlSession 传递的参
数动态地生成需要执行的 SOL 语句,同时负责查询缓存的维护 - MappedStatement 对象
- 输入参数映射
- 输出结果映射
(三)入门程序
(1)导包
(2)添加配置文件log4j.properties
备注:配置文件可以在mybatis-3.4.2.pdf文档中8.1.1.2中复制
(3)创建实体类
(4)创建映射文件 CustomerMaþper.xml
<?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.allen.mapper.CustomerMapper">
<select id="findCustomerById" resultType="com.allen.entity.CustomerDO" parameterType="Integer">
select * from customer where id = #{id}
</select>
<insert id="addCustomer" parameterType="com.allen.entity.CustomerDO">
insert into customer (username, jobs, phone) values (#{username}, #{jobs}, #{phone})
</insert>
</mapper>
备注:: mybatis-3.4.2.pdf,在第 2 小节 Getting started (入门指南)下的 2.1.5小节 Exploring Mapped SQL Statements 中,即可找到映射文件的约束信息
(5)创建 MyBatis 的核心配置文件 mybatis-config.xml
<?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>
<!-- 引进db.properties文件,作为参数 -->
<properties resource="db.properties"></properties>
<!-- 配置环境,默认的环境 id 为 mysql -->
<environments default="mysql">
<!-- 配置 id 为 mysql 的数据库环境 -->
<environment id="mysql">
<!-- 使用 JDBC 的事务管理 -->
<transactionManager type="JDBC" />
<!-- 数据库连接池 -->
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/allen/mapper/CustomerMapper.xml" />
</mappers>
</configuration>
db.properties文件
(6)测试类
MyBatis 的操作大致可分为以下几个步骤 。
( 1 ) 读取MyBatis配置文件 。
( 2 ) 根据配置文件构建 SqISessionFactory。
( 3 ) 通过 SqlSessionFactory 创建 SqlSession 。
( 4 )使用 SqlSession 对象操作数据库(包括查询、添加、修改、删除以及提交事务等)。
(5 )关闭 SqlSession 。
注释:更新数据添加sqlSession.commit();
补充:在使用"${}"进行 SQL 字符串拼接时,无法防止 SQL 注入问题 . 所以想要实现模糊查询,又要防止 SQL 注入,可以对上述映射文件中模糊查询的 select 语句进行修改,使用 MySQL 中的 concat()函数进行字符串拼接 . 具体修改示例如下所示 。
select * from t customer where username like concat ( '%', #{value}, '%' )