Mybatis-2
@(知识)
定义resultMap
如果sql查询字段名和pojo的属性名不一致,可以通过resultMap将字段名和属性名作一个对应关系 ,resultMap实质上还需要将查询结果映射到pojo对象中。
resultMap可以实现将查询结果映射为复杂类型的pojo,比如在查询结果映射对象中包括pojo和list实现一对一查询和一对多查询。
- resultMap的配置
1 | <resultMap type="com.yyt.mybatis.po.User" id="userListResultMap"> |
1 | <select id="findUserListForResultMap" parameterType="queryvo" resultMap="userListResultMap"> |
动态sql
- if语句
1 | <!-- 传递pojo综合查询用户信息 --> |
- where语句
1 | <select id="findUserList" parameterType="user" resultType="user"> |
- foreach语句
- 向sql传递数组或List,mybatis使用foreach解析
- mapper配置
queryvo类中包括一个Integer集合ids
1 | <select id="findUserByForeach" parameterType="queryvo" resultMap="userListResultMap"> |
* 运行结果
* `Preparing: SELECT * FROM USER WHERE username LIKE '%张%' and id in( ? , ? , ? )`
* `Parameters: 10(Integer), 89(Integer), 16(Integer)`
- sql片段
- Sql中可将重复的sql提取出来,使用时用include引用即可,最终达到sql重用的目的
- 代码如下
1 | <select id="findUserListForResultMap" parameterType="queryvo" resultMap="userListResultMap"> |
关联查询
- 一对一的查询
一张订单对应只有一个用户
- mapper代码
1 | <!-- 查询订单关联用户信息使用resultmap --> |
* 在订单实体类中加入用户的属性,并提供get,set方法
- 一对多查询
一个用户可以有多个订单
- mapper代码
1 | <!-- 配置一对多的关系 --> |
- 在用户实体类中加入订单对象的list集合属性,并提供get和set方法