特殊SQL的执行

模糊查询

/**
* 根据用户名进行模糊查询
* @param username
* @return java.util.List<com.atguigu.mybatis.pojo.User>
* @date 2022/2/26 21:56
*/
List<User> getUserByLike(@Param("username") String username);
<!--List<User> getUserByLike(@Param("username") String username);-->
<select id="getUserByLike" 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>
  • 其中select * from t_user where username like "%"#{mohu}"%"是最常用的

批量删除

  • 只能使用${},如果使用#{},则解析后的sql语句为delete from t_user where id in ('1,2,3'),这样是将1,2,3看做是一个整体,只有id为1,2,3的数据会被删除。正确的语句应该是delete from t_user where id in (1,2,3),或者delete from t_user where id in ('1','2','3')
/**
* 根据id批量删除
* @param ids
* @return int
* @date 2022/2/26 22:06
*/
int deleteMore(@Param("ids") String ids);
<delete id="deleteMore">
delete from t_user where id in (${ids})
</delete>
//测试类
@Test
public void deleteMore() {
SqlSession sqlSession = SqlSessionUtils.getSqlSession();
SQLMapper mapper = sqlSession.getMapper(SQLMapper.class);
int result = mapper.deleteMore("1,2,3,8");
System.out.println(result);
}

动态设置表名

  • 只能使用${},因为表名不能加单引号
/**
* 查询指定表中的数据
* @param tableName
* @return java.util.List<com.atguigu.mybatis.pojo.User>
* @date 2022/2/27 14:41
*/
List<User> getUserByTable(@Param("tableName") String tableName);
<!--List<User> getUserByTable(@Param("tableName") String tableName);-->
<select id="getUserByTable" resultType="User">
select * from ${tableName}
</select>

测试类代码

package com.atguigu.mybatis.test;

import com.atguigu.mybatis.mapper.SqlMapper;
import com.atguigu.mybatis.pojo.user;
import com.atguigu.mybatis.utils.sqlSessionUtils;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test; import java.util.List; public class SQLMapperTest {
@Test
public void testGetUserByLike(){
SqlSession sqlSession = sqlSessionUtils.GetSqlSession();
SqlMapper mapper = sqlSession.getMapper(SqlMapper.class);
List<user> a = mapper.getUserByLike1("a");
System.out.println(a); }
@Test
public void testDeleteMore(){
SqlSession sqlSession = sqlSessionUtils.GetSqlSession();
SqlMapper mapper = sqlSession.getMapper(SqlMapper.class);
int resoult = mapper.deleteMore("1,2,3");
System.out.println(resoult);
}
@Test
public void testGetUserByTableName(){
SqlSession sqlSession = sqlSessionUtils.GetSqlSession();
SqlMapper mapper = sqlSession.getMapper(SqlMapper.class);
List<user> t_user = mapper.getUserByTableName("t_user");
System.out.println(t_user);
} }

最新文章

  1. python3 不同目录间模块调用
  2. lecture3-线性神经元和算法
  3. 自定义 导航条分割线,tabBar分割线颜色(或者是 去掉)
  4. 笔记二、本地git命令
  5. 阿里巴巴Java面试题
  6. Ubuntu1404+Django1.9+Apache2.4部署配置2配置文件设置
  7. thinkPHP 模板中的语法知识 详细介绍(十二)
  8. dfs 与 dijkstra 总结
  9. 关于装双系统Ubantu16.04+Win10引导问题
  10. mysql的连接处理过程
  11. 在循环列表的富文本里摘出每个item的img标签内容(适合vue渲染)
  12. VS2017 + EF6连接MySql
  13. Hadoop组件
  14. java面试经常问到的计算机网络问题
  15. Chain训练准则的计算
  16. Python 进程池
  17. js 实时数据显示
  18. Python中新式类和经典类的区别,钻石继承
  19. sklearn_k均值聚类
  20. 使用Goland同步远程代码

热门文章

  1. 052_末晨曦Vue技术_处理边界情况之程序化的事件侦听器
  2. ceph 009 管理定义crushmap 故障域
  3. MapReduce核心原理(下)
  4. html js 导出excel表格
  5. (四连测)滑雪场的高度差题解---二分 + 搜索---DD(XYX)​​​​​​​的博客
  6. 如何修改SAO用户密码
  7. Kubernetes中使用ClusterDNS进行服务发现
  8. 使用二进制文件部署Etcd集群
  9. 国产电脑可较为流畅运行的Windows系统
  10. Docker容器虚拟化