动态sql
通过一些表达式的判断等,对sql语句进行灵活的拼接,组装
Sql片段
- 定义sql片段
- 引用sql片段
foreach
SELECT * FROM USER WHERE id = 1 OR id = 2;
SELECT * FROM USER WHERE id IN (1,2);
List ids
- 定义
- 定义接口方法
- 测试方法
注意:
另一种实现 in(1,2)
高级映射
一对一查询
需求:查询订单信息,关联查询创建订单的用户信息
SELECT
order.*,
user.username,
user.sex,
user.address
FROM
orders,
USER
WHERE orders.user_id = user.id;
resultType方式实现:
创建pojo类
定义 mapper.xml映射文件
定义接口:
测试程序
resultMap方式实现
- 定义resultMap
- 定义statemet中的resultMap
- 定义接口
- 测试
ResultType:方式简单,只需要在pojo类中添加需要新增的属性即可完成映射,没有特殊需求情况下使用这种方式
ResultMap:需要单独定义resultMap映射,适应于对查询结果有一些特殊需求的情况
ResultMap可以实现延迟加载,resultType不行
一对多查询
定义相关pojo类
1.给Orders类中添加List
2.
3.
4
5.
多对多查询
场景:查询用户和用户订单对应的产品信息
1.
延迟加载:
提高程序性能
ResultMap 里面的 association collection 具有延迟加载的功能
默认开启一级缓存
Cache Hit Ratio [com.mybatis.mapper.UserMapper]: 0.0