当前位置:网站首页>7、特殊SQL的执行
7、特殊SQL的执行
2022-08-04 05:24:00 【猿 白】
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}%' 字符串拼接报错-->
<!--正确方式如下:-->
<!--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:表示当前添加功能使用自增的主键
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);
}
边栏推荐
- Delphi-C端有趣的菜单操作界面设计
- C Expert Programming Chapter 5 Thinking about Linking 5.3 5 Special Secrets of Library Linking
- JS基础--强制类型转换(易错点,自用)
- Turn: Management is the love of possibility, and managers must have the courage to break into the unknown
- 2022 software test interview questions The latest ByteDance 50 real interview questions, 15k have been won after brushing, with explanation + Q&A
- [Evaluation model] Topsis method (pros and cons distance method)
- CentOS7 —— yum安装mysql
- System design. How to design a spike system (full version transfer)
- 8款最佳实践,保护你的 IaC 安全!
- 解决错误:npm WARN config global `--global`, `--local` are deprecated
猜你喜欢

少年成就黑客,需要这些技能

FPGA学习笔记——知识点总结

数的划分之动态规划

Programming hodgepodge (4)

There is an 8 hour difference between the docker installation of mysql and the host.

部署LVS-DR群集【实验】

npm报错Beginning October 4, 2021, all connections to the npm registry - including for package installa

MySQL日志篇,MySQL日志之binlog日志,binlog日志详解

代码重构:面向单元测试

信息学奥赛一本通 1312:【例3.4】昆虫繁殖
随机推荐
2023年PMP考试会用新版教材吗?回复来了!
C语言 -- 操作符详解
C专家编程 第4章 令人震惊的事实:数组和指针并不相同 4.3 什么是声明,什么是定义
腾讯136道高级岗面试题:多线程+算法+Redis+JVM
【评价类模型】Topsis法(优劣解距离法)
OpenGL绘制圆
LCP 17. 速算机器人
As soon as flink cdc is started, the CPU of the source Oracle server soars to more than 80%. What is the reason?
leetcode 12. 整数转罗马数字
C专家编程 第4章 令人震惊的事实:数组和指针并不相同 4.4 使声明与定义相匹配
路网编辑器技术预研
某母婴小程序加密参数解密
详解八大排序
[SemiDrive source code analysis] [MailBox inter-core communication] 47 - Analysis of RPMSG_IPCC_RPC mode limit size of single transmission and limit bandwidth test
Towards Real-Time Multi-Object Tracking(JDE)
深度学习21天——准备(环境配置)
注意!软件供应链安全挑战持续升级
MySQL数据库(基础)
触觉智能分享-SSD20X实现升级显示进度条
What is the salary of a software testing student?