mybatis(3)特殊SQL的执行&&自定义resultMap
7、特殊SQL的执行
- 模糊查询(追加%的方式)
- 查询返回结果集的处理(结果集返回)
- 特殊字符处理
- 获取自增主键
**总览 **
SpecialSqlMapper.java
1 | public interface SpecialSqlMapper { |
SpecialSqlMapper.xml
1 |
|
7.1、模糊查询
- 需要注意SQL语句的 引号问题
1 | <!--接口方法: List<User> getUserByLike(@Param("ambiguous") String ambiguous);--> |
如果使用
#{}
获取参数,'%#{ambiguous}%'
,这里如果 用#{}
就会被理解为 ? 无法解析 ,因为被’ '包裹了,会被当成普通的字符串,无法获取到参数因此需要写两个引号,或者使用
concat
链接字符串也可以使用
${}
select * from t_user where username like "%"#{mohu}"%"
select *from t_user where username like concat('%',#{ambiguous},'%');
select *from t_user where username like '%${ambiguous}%'
7.2、批量删除
- 因为
#
有默认逗号隔开的作用,所以只能使用$
1 | int deleteMore(; String ids) |
- 传入的数据 的形式是 “107,108,13,6,87”
1 | <delete id="deleteMoreUser" > |
- 这里直接使用
${}
, 不用再考虑#{}
引号的问题
7.3、动态设置表名
- 没有什么高深的,就是把tableName当做参数
1 | <!-- List<User> getUserList(@Param("tableName")String tableName);--> |
7.4、添加功能获取自增的主键
- 这里主要就是用到了 insert标签的 两个属性 :
useGeneratedKeys
,keyProperty
-
useGeneratedKeys
:设置使用自增的主键 -
keyProperty
:因为增删改有统一的返回值是受影响的行数,因此只能将获取的自增的主键放在传输的参数user对象的某个属性中表示将添加的数据的自增主键赋值为实体类 类型的参数的属性赋值
1 | <!-- void insertUser(User user);获取自增的主键 |
8、自定义映射resultMap
8.1、resultMap处理字段和属性的映射关系
若字段名和实体类中的属性名不一致,则可以通过resultMap设置自定义映射
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 dhx_'blog!
评论