使用映射文件
(1) 准备工作
① 创建mappers目录
② 在application.properties中配置
mybatis.mapper-locations = classpath:mappers/*.xml
(2) 创建Mapper接口,编写对应的方法
ackage com.upc.mybatis_02.mapper;
import com.upc.mybatis_02.po.Salgrade;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface SalgradeMapper {
public List<Salgrade> findAll();
}
(3) 编写映射文件,在其中编写对应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">
<!-- namespace 属性的值必须是对应接口的 包名.接口名称 -->
<mapper namespace="com.upc.mybatis_02.mapper.SalgradeMapper">
<!-- 根据接口中的每一个方法进行sql的编写 -->
<!--
id属性对应接口中方法的名称
parameterType属性表示方法的参数类型,如果没有参数就不写了
resultType属性表示方法执行后的返回值类型,如果返回值类型
为集合(List),那么resultType对应集合中的泛型类型
例如 List<Emp> resultType="Emp"
通常 select标签必须有resultType属性
-->
<select id="findAll" resultType="com.upc.mybatis_02.po.Salgrade">
select * from salgrade
</select>
</mapper>
需要注意的问题:
A. 常用的节点
a) Select
b) Insert
c) Update
d) Delete
B. Select节点必须有resultType
C. Insert、delete、update必须提供parameterType
D. 标签中的id必须与接口中的方法名称相同
E. Mapper节点的namespace对应关联的接口
其他常用
- 动态sql:根据传递的参数是否有值,进行动态拼接,多条件组合查询
(1) 常用节点
① If
② Choose
- When
③ Where
④ Set
⑤ Trim
⑥ Foreach
-
关联映射,表连接查询时封装数据
-
Mybatis给po、dto包中的类设置别名
(1) 在application.properties文件添加包别名设置
mybatis.type-aliases-package=com.upc.mybatis_02.po,com.upc.mybatis_02.dto
(2) 在映射文件中,使用类名即可
没有使用别名以前
resultType=”com.upc.mybatis_02.po.Emp”
设置别名以后
resultType=”Emp” 或者 resultType=”emp” -
模糊查询
列名 like ‘%值%’
Select * from emp
where ename like ‘%a%’
%:表示任意个任意字符
_:表示一个任意字符
Ename like ‘_a%’ -
在mybatis的映射文件中不能使用 < 做小于比较,必须使用<代替
小于 sal<5000 sal < 5000
小于等于
sal<= 5000 sal <= 5000 -
注意的问题
(1) 映射文件的存放的位置
Mybatis.mapper-locations = Classpath:mappers/*.xml
(2) 映射文件中namespace的值必须是对应接口的位置
(3) Select、insert、delete、update中的id属性对应接口中方法的名称
(4) 映射文件中,${ }、#{ }、test=” ”其中的值都来自于类中的属性
(5) 判断属性值是否为空
Test=”属性名 != null and 属性名!= ‘’ ”