当前位置:网站首页>7. Execution of special SQL
7. Execution of special SQL
2022-08-04 05:30:00 【ape white】
7、特殊SQL的执行
7.1、模糊查询
//模糊查询
List<User> getUserByLike(@Param("mohu") String mohu);
<!--List<User> getUserByLike(@Param("username") String mohu);-->
<select id="getUserByLike" resultType="user">
<!--select * from t_user where username like '%#{
mohu}%' String concatenation error-->
<!--正确方式如下:-->
<!--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>
测试:
@Test
public void GetUserByLike(){
SqlSession sqlSession = sqlSessionUtil.getSqlSession();
SpecialSQLMapper mapper = sqlSession.getMapper(SpecialSQLMapper.class);
// for (User user : mapper.getUserByLike("a")) {
// System.out.println(user);
// }
List<User> a = mapper.getUserByLike("a");
a.forEach(System.out::println);
}
7.2、批量删除
//批量删除
void deleteMoreUser(@Param("ids") String ids);
<!--void deleteMoreUser(@Param("ids") String ids);-->
<delete id="deleteMoreUser">
delete from t_user where id in (${
ids})
</delete>
@Test
public void DeleteMoreUser(){
SqlSession sqlSession = sqlSessionUtil.getSqlSession();
SpecialSQLMapper mapper = sqlSession.getMapper(SpecialSQLMapper.class);
mapper.deleteMoreUser("5,6");
}
7.3、动态设置表名
//动态设置表名
List<User> getUserList(@Param("tableName") String tableName);
<!--List<User> getUserList(@Param("tableName") String tableName);-->
<select id="getUserList" resultType="user">
select * from ${
tableName}
</select>
@Test
public void testGetUserList(){
SqlSession sqlSession = sqlSessionUtil.getSqlSession();
SpecialSQLMapper mapper = sqlSession.getMapper(SpecialSQLMapper.class);
// for (User t_user : mapper.getUserList("t_user")) {
// System.out.println(t_user);
// }
List<User> t = mapper.getUserList("t_user");
t.forEach(System.out::println);
}
7.4、添加功能获取自增的主键
JDBC的功能:
@Test
public void testJDBC(){
try {
Class.forName("");
Connection connection = DriverManager.getConnection("", "", "");
// String sql = "";
// PreparedStatement preparedStatement = connection.prepareStatement(sql);
// preparedStatement.setString(1,"a");
String sql = "insert into t_user values()";
PreparedStatement ps = connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
ps.executeUpdate();
ResultSet resultSet = ps.getGeneratedKeys();
resultSet.next();
int id = resultSet.getInt(1);
} catch (Exception e) {
e.printStackTrace();
}
}
//添加用户信息
void InsertUser(User user);
<!--void InsertUser(User user);-->
<!--
useGeneratedKeys:Indicates that the currently added function uses an auto-incrementing primary key
keyProperty:因为增删改有统一的返回值是受影响的行数,因此只能将获取的自增的主键放在传输的参
数user对象的某个属性中
-->
<insert id="InsertUser" useGeneratedKeys="true" keyProperty="id">
insert into t_user values(null,#{
username},#{
password},#{
age},#{
gender},#{
email})
</insert>
@Test
public void testInsertUser(){
SqlSession sqlSession = sqlSessionUtil.getSqlSession();
SpecialSQLMapper mapper = sqlSession.getMapper(SpecialSQLMapper.class);
User user = new User(null, "张三", "2222", 18, "男", "[email protected]");
mapper.InsertUser(user);
System.out.println(user);
}
边栏推荐
- 如何低成本修bug?测试左移给你答案
- LCP 17. 速算机器人
- 21 days learning challenge 】 【 sequential search
- C Expert Programming Chapter 4 The Shocking Fact: Arrays and pointers are not the same 4.4 Matching declarations to definitions
- Introduction and application of go module
- TSF微服务治理实战系列(一)——治理蓝图
- 《看见新力量》第四期免费下载!走进十五位科技创业者的精彩故事
- Chapter 5 C programming expert thinking 5.4 alert Interpositioning of links
- 解决错误:npm WARN config global `--global`, `--local` are deprecated
- 获取单选框选中内容
猜你喜欢
企业需要知道的5个 IAM 最佳实践
Cannot read properties of null (reading ‘insertBefore‘)
你以为border-radius只是圆角吗?【各种角度】
触觉智能分享-SSD20X实现升级显示进度条
数的划分之动态规划
Resolved error: npm WARN config global `--global`, `--local` are deprecated
深度学习环境配置
Delphi-C端有趣的菜单操作界面设计
嵌入式系统驱动初级【4】——字符设备驱动基础下_并发控制
System design. How to design a spike system (full version transfer)
随机推荐
触觉智能分享-SSD20X实现升级显示进度条
BFC、IFC、GFC、FFC概念理解、布局规则、形成方法、用处浅析
Dynamic programming of the division of numbers
el-Select 选择器 底部固定
力扣:63. 不同路径 II
The difference between px, em, and rem
FPGA学习笔记——知识点总结
day13--postman接口测试
力扣:62.不同路径
【一步到位】Jenkins的安装、部署、启动(完整教程)
CentOS7 —— yum安装mysql
SLSA 框架与软件供应链安全防护
在被面试官说了无数次后,终于潜下心来整理了一下JVM的类加载器
一个对象引用的思考
Teenage Achievement Hackers Need These Skills
The symbol table
【JS】js给对象动态添加、设置、删除属性名和属性值
LCP 17. 速算机器人
C Expert Programming Chapter 4 The Shocking Fact: Arrays and Pointers Are Not the Same 4.5 Other Differences Between Arrays and Pointers
基于gRPC编写golang简单C2远控