【SSM框架】特殊SQL的执行

简介: 1.模糊查询2.批量删除3.动态设置表名 4.添加功能获取自增的主键

1.模糊查询


接口:

public interface SelectMapper {
    List<User> getUserByLike(@Param("mohu") String mohu);
}

SQL(错误示范):

SQL(错误示范):

测试:

    public  void  test7(){
        SqlSessionUtils sqlSessionUtils = new SqlSessionUtils();
        SqlSession sqlSession = sqlSessionUtils.getSqlSession();
        SelectMapper mapper = sqlSession.getMapper(SelectMapper.class);
        List<User> userByLike = mapper.getUserByLike("123");
        System.out.println(userByLike);
    }

运行结果:



SQL: SELECT * FROM t_user WHERE   PASSWORD  LIKE  '%?%'


因为:#{}:相当于参数占位符,且会对自动传入的数据加一个双引号,外面已经有一层引号,所以报错。


SQL(正确示范,以下3种都行):


select * from t_user where password like '%${mohu}%'

select * from t_user where password like concat('%',#{mohu},'%')

select * from t_user where password like "%"#{mohu}"%"


运行结果:



2.批量删除


接口:

  /**
     * 
     * @param ids
     * @return
     */
    int deleteMoreUser(@Param("ids") String ids);

SQL:

    <delete id="deleteMoreUser">
        delete from t_user where id in(${ids})
    </delete>

表: 运行结果:




3.动态设置表名  


当有多张表时,例如  VIP表  和  普通表 ,这时需要动态设置表名。

接口:

List<User> getAllUser(@Param("tableName") String tableName);

SQL:

select * from ${tableName} 

注意:不能使用 #{}


select * from #{tableName}


因为#{} 会自动添加单引号,就变成了:


select * from  '表名'


4.添加功能获取自增的主键


场景模拟:


t_clazz(clazz_id,clazz_name)


t_student(student_id,student_name,clazz_id)


1 、添加班级信息


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


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

接口:

int insertUser(User user);

SQL:

  <insert id="insertUser" useGeneratedKeys="true"  keyProperty="id">
        insert into t_user values(null,#{username},#{password},#{age},#{sex},#{email})
    </insert>

测试:

    public  void  test9(){
        SqlSessionUtils sqlSessionUtils = new SqlSessionUtils();
        SqlSession sqlSession = sqlSessionUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        User user = new User(null,"小K","183918389",22,"男","13121178@qq.com");
        mapper.insertUser(user);
        System.out.println(user);
    }

效果: 如果把    useGeneratedKeys       keyProperty 删除运行结果: 发现id=null

相关文章
|
2月前
|
SQL 数据采集 自然语言处理
NL2SQL之DB-GPT-Hub<详解篇>:text2sql任务的微调框架和基准对比
NL2SQL之DB-GPT-Hub<详解篇>:text2sql任务的微调框架和基准对比
|
24天前
|
SQL 监控 安全
Flask 框架防止 SQL 注入攻击的方法
通过综合运用以上多种措施,Flask 框架可以有效地降低 SQL 注入攻击的风险,保障应用的安全稳定运行。同时,持续的安全评估和改进也是确保应用长期安全的重要环节。
142 71
|
4月前
|
Java 数据库连接 Maven
手把手教你如何搭建SSM框架、图书商城系统案例
这篇文章是关于如何搭建SSM框架以及实现一个图书商城系统的详细教程,包括了项目的配置文件整合、依赖管理、项目结构和运行效果展示,并提供了GitHub源码链接。
手把手教你如何搭建SSM框架、图书商城系统案例
|
19天前
|
SQL 存储 人工智能
Vanna:开源 AI 检索生成框架,自动生成精确的 SQL 查询
Vanna 是一个开源的 Python RAG(Retrieval-Augmented Generation)框架,能够基于大型语言模型(LLMs)为数据库生成精确的 SQL 查询。Vanna 支持多种 LLMs、向量数据库和 SQL 数据库,提供高准确性查询,同时确保数据库内容安全私密,不外泄。
86 7
Vanna:开源 AI 检索生成框架,自动生成精确的 SQL 查询
|
4月前
|
SQL Java 数据库
建模底层逻辑问题之ORM框架建模中,执行SQL的过程中被抽象和组织是如何实现的
建模底层逻辑问题之ORM框架建模中,执行SQL的过程中被抽象和组织是如何实现的
|
22天前
|
SQL 安全 Java
除了Flask框架,还有哪些框架能防止SQL注入攻击?
这些框架都在安全方面有着较好的表现,通过它们的内置机制和安全特性,可以有效地降低 SQL 注入攻击的风险。然而,无论使用哪个框架,开发者都需要具备良好的安全意识,正确配置和使用框架提供的安全功能,以确保应用的安全可靠。同时,持续关注安全更新和漏洞修复也是非常重要的。
38 7
|
1月前
|
SQL 安全 PHP
PHP开发中防止SQL注入的方法,包括使用参数化查询、对用户输入进行过滤和验证、使用安全的框架和库等,旨在帮助开发者有效应对SQL注入这一常见安全威胁,保障应用安全
本文深入探讨了PHP开发中防止SQL注入的方法,包括使用参数化查询、对用户输入进行过滤和验证、使用安全的框架和库等,旨在帮助开发者有效应对SQL注入这一常见安全威胁,保障应用安全。
56 4
|
4月前
|
Java 数据库连接 Spring
后端框架入门超详细 三部曲 Spring 、SpringMVC、Mybatis、SSM框架整合案例 【爆肝整理五万字】
文章是关于Spring、SpringMVC、Mybatis三个后端框架的超详细入门教程,包括基础知识讲解、代码案例及SSM框架整合的实战应用,旨在帮助读者全面理解并掌握这些框架的使用。
后端框架入门超详细 三部曲 Spring 、SpringMVC、Mybatis、SSM框架整合案例 【爆肝整理五万字】
|
4月前
|
Java 数据库连接 Maven
SSM框架整合图书管理项目
这篇文章是关于SSM框架整合到图书管理项目的详细教程,涵盖了从Maven项目构建、依赖导入、数据库连接、配置文件编写、实体类和接口实现到SpringMVC整合的完整步骤。
SSM框架整合图书管理项目
|
3月前
|
XML Java 数据库连接
如何搭建SSM框架、图书商城系统
这是一份详尽的《Spring + SpringMVC + Mybatis 整合指南》,作者耗时良久整理出约五万字的内容,现已经全部笔记公开。此文档详细地介绍了如何搭建与整合SSM框架,具体步骤包括创建Maven项目、添加web骨架、配置pom文件以及整合Spring、SpringMVC和Mybatis等。无论是对初学者还是有一定基础的开发者来说,都是很好的学习资源。此外,作者还提供了项目源码的GitHub链接,方便读者实践。虽然当前主流推荐学习SpringBoot,但了解SSM框架仍然是不可或缺的基础。
52 0