[TOC]
mybatis使用Criteria的用法小坑
原文:https://developer.aliyun.com/article/665448
在用Criteria时,相关代码如下:
1
2
3
4
|
final RolePermissionExample example = new RolePermissionExample();
example.createCriteria().andRoleIdEqualTo(roleId);
example.createCriteria().andProjectIdEqualTo(projectId);
List<RolePermission> rolePermissions = rolePermissionMapper.selectByExample(example);
|
后面发现只有第一个条件才生效,第二个是不生效的。
经调整,代码修改如下:
1
2
3
|
final RolePermissionExample example = new RolePermissionExample();
example.createCriteria().andRoleIdEqualTo(roleId).andProjectIdEqualTo(projectId);
List<RolePermission> rolePermissions = rolePermissionMapper.selectByExample(example);
|
经测试,功能正常!
mybatis批量插入返回主键id
可以实现,前提要:
- 升级Mybatis版本到3.3.1以上
- 在mapper.java中不能使用@param注解。
- Mapper.xml中使用list变量接受Dao中的集合。
- xxxDao中,也只能传一个LIST参数. 两个参数是不行的
issue链接:https://github.com/mybatis/mybatis-3/pull/350
示例
1
|
int batchInsert(List<FastDriverDislikeCargoEntity> cargoEntityList);
|
注意collection用的参数名是list
1
2
3
4
5
6
7
8
9
10
|
<insert id="batchInsert" keyProperty="id" useGeneratedKeys="true">
insert into fast_driver_dislike_cargo (driver_id, consign_id, intention_id, cargo_name,
operator_id, dislike_reason, source,
create_time, update_time, is_valid)
VALUES
<foreach collection="list" item="entity" separator="," index="index">
(#{entity.driverId}, #{entity.consignId}, #{entity.intentionId}, #{entity.cargoName}, #{entity.operatorId},
#{entity.dislikeReason}, #{entity.source}, #{entity.createTime}, #{entity.updateTime}, 1)
</foreach>
</insert>
|