游侠的博客 游侠的博客
首页
  • 论文笔记
  • 一些小知识点

    • pytorch、numpy、pandas函数简易解释
  • 《深度学习500问》
开发
技术
更多
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Ranger

一名在校研究生
首页
  • 论文笔记
  • 一些小知识点

    • pytorch、numpy、pandas函数简易解释
  • 《深度学习500问》
开发
技术
更多
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • Vue

  • SpringBoot2

  • JavaWeb

  • SSM

    • Spring

    • Mybatis

      • 一、MyBatis详解
      • 二、搭建MyBatis
      • 三、MyBatis的增删改查
      • 四、核心配置文件详解
      • 五、MyBatis参数值获取
      • 六、MyBatis的各种查询方式
      • 七、特殊SQL语句的执行
        • 7.1、模糊查询
        • 7.2、批量删除
        • 7.3、动态设置表名
        • 7.4、添加功能获取自增的主键
      • 八、自定义映射resultMap
      • 九、动态SQL
      • 十、MyBatis的缓存
      • 十一、MyBatis的逆向工程
      • 十二、分页插件
    • SpringMVC

    • SSM整合
  • SpringBoot3

  • 技术
  • SSM
  • Mybatis
yangzhixuan
2023-04-03
目录

七、特殊SQL语句的执行

# 7.1、模糊查询

模糊查询的时候最好用${}的方式,因为如果使用#{},解析的时候会通过?来进行占位符赋值,而这个占位符在两个单引号之间,就不会被当成占位符,而是字符串。

/**
* 测试模糊查询
* @param mohu
* @return
*/
List<User> testMohu(@Param("mohu") String mohu);
1
2
3
4
5
6
<!--List<User> testMohu(@Param("mohu") String mohu);-->
<select id="testMohu" resultType="User">
    <!--select * from t_user where username like '%${mohu}%'-->
    <!--select * from t_user where username like concat('%',#{mohu},'%')-->
	select * from t_user where username like "%"#{mohu}"%"
</select>
1
2
3
4
5
6

# 7.2、批量删除

复选框删除时会使用到

/**
* 批量删除
* @param ids
* @return
*/
int deleteMore(@Param("ids") String ids);
1
2
3
4
5
6
<!--int deleteMore(@Param("ids") String ids);-->
<delete id="deleteMore">
	delete from t_user where id in (${ids})
</delete>
1
2
3
4

# 7.3、动态设置表名

同样也是由于表名不能加单引号,所以不能用#{}而用${}

/**
* 动态设置表名,查询所有的用户信息
* @param tableName
* @return
*/
List<User> getAllUser(@Param("tableName") String tableName);
1
2
3
4
5
6
<!--List<User> getAllUser(@Param("tableName") String tableName);-->
<select id="getAllUser" resultType="User">
	select * from ${tableName}
</select>
1
2
3
4

# 7.4、添加功能获取自增的主键

场景模拟:

t_clazz(clazz_id,clazz_name)

t_student(student_id,student_name,clazz_id)

1、添加班级信息

2、获取新添加的班级的id

3、为班级分配学生,即将某学的班级id修改为新添加的班级的id

/**
* 添加用户信息
* @param user
* @return
* useGeneratedKeys:设置使用自增的主键
* keyProperty:因为增删改有统一的返回值是受影响的行数,因此只能将获取的自增的主键放在传输的参数user对象的某个属性中
*/
int insertUser(User user);
1
2
3
4
5
6
7
8
<!--int insertUser(User user);-->
<insert id="insertUser" useGeneratedKeys="true" keyProperty="id">
	insert into t_user values(null,#{username},#{password},#{age},#{sex})
</insert>
1
2
3
4
编辑 (opens new window)
上次更新: 2024/05/30, 07:49:34
六、MyBatis的各种查询方式
八、自定义映射resultMap

← 六、MyBatis的各种查询方式 八、自定义映射resultMap→

最近更新
01
tensor比较大小函数
05-30
02
Large Language Models can Deliver Accurate and Interpretable Time Series Anomaly Detection
05-27
03
半监督学习经典方法 Π-model、Mean Teacher
04-10
更多文章>
Theme by Vdoing | Copyright © 2023-2024 Ranger | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式