-
properties
-
主要用于加载外部配置文件,比如db.properties
-
下面数据源配置信息,就可以使用${xxx}替换
-
-
settings
-
设置日志
-
设置下划线转驼峰
-
-
typeAliases
-
类型别名,简化映射文件中类型全路径
-
-
plugins
-
插件,扩展mybatis功能
-
原理: 语句执行过程中的某一点进行拦截
-
实战: PageHelper插件,实现分页
-
原理是对SQL语句拦截,拼接分页limit语句,以及自动发出select count语句
-
-
environments
-
事务管理,目前使用JDBC,后期会交给Spring框架管理
-
数据源,默认使用mybatis自己连接池技术
-
可以使用Druid来替换
-
-
mappers
-
加载映射文件
-
推荐使用package方式,一下加载整个包下的映射文件
-
映射器的 XML 文件就显得相对简单。如果拿它跟具有相同功能的 JDBC 代码进行对比,你会立即发现省掉了将近 95% 的代码。MyBatis 致力于减少使用成本,让用户能更专注于 SQL 代码。
SQL 映射文件只有很少的几个顶级元素(按照应被定义的顺序列出):
-
cache
– 该命名空间的缓存配置。 -
cache-ref – 引用其它命名空间的缓存配置。
-
resultMap
– 描述如何从数据库结果集中加载对象,是最复杂也是最强大的元素。 -
sql
– 可被其它语句引用的可重用语句块。 -
insert
– 映射插入语句。 -
update
– 映射更新语句。 -
delete
– 映射删除语句。 -
select
– 映射查询语句。
result map --> 结果映射
结果: sql语句的结果
映射: sql语句的结果和实体类的映射
public class User {
private int id;
private String username;
private String password;
private String phone;
private Date createTime;
private double money;
private int sex;
// set get...
}
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.qf.mapper.UserMapper">
<!--开始手动映射: 将列名和属性名一一对应 -->
<resultMap id="userResultMap" type="User">
<!-- id标签,用来映射主键列 -->
<id column="uid" property="id"/>
<!-- 其他列,就是使用result标签 -->
<result column="name" property="username"/>
<result column="pwd" property="password"/>
<result column="tel" property="phone"/>
<!-- 其他列,列名和属性一致,可以不用设置,会自动封装 -->
</resultMap>
<!-- 当自动封装失败,就使用手动映射 -->
<!-- 使用手动映射时,就不在设置resultType,而是设置resultMap指定那个id-->
<select id="findUserById" resultMap="userResultMap">
SELECT
id uid,
username name,
password pwd,
phone tel,
create_time,
money,
sex
FROM
tb_user
WHERE
id = #{id}
</select>
</mapper>