MyBatis特殊SQL的执行实例代码

 更新时间:2023年01月30日 14:17:05   作者:热爱编程的小白白  
这篇文章主要给大家介绍了关于MyBatis特殊SQL执行的相关资料,文中通过实例代码和图文介绍的非常详细,对大家学习或者使用MyBatis具有一定的参考学习价值,需要的朋友可以参考下

1.模糊查询

接口:

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

SQL(错误示范):

  <select id="getUserByLike" resultType="com.atguigu.mybatis.pojo.User">
        SELECT * FROM t_user WHERE   PASSWORD  LIKE  '%#{mohu}%'
    </select>

测试:

    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>

测试:

    public  void  test8(){
        SqlSessionUtils sqlSessionUtils = new SqlSessionUtils();
        SqlSession sqlSession = sqlSessionUtils.getSqlSession();
        SelectMapper mapper = sqlSession.getMapper(SelectMapper.class);
        int i = mapper.deleteMoreUser("1,2");
    }

表:

 运行结果:

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

 useGeneratedKeys:设置使用自增的主键

 keyProperty:因为增删改有统一的返回值是受影响的行数,因此只能将获取的自增的主键放在传输的参数user对象的某个属性中

总结

到此这篇关于MyBatis特殊SQL的执行的文章就介绍到这了,更多相关MyBatis特殊SQL执行内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java实现视频格式转化的操作代码

    Java实现视频格式转化的操作代码

    在当今数字化时代,视频已成为我们日常生活和工作中不可或缺的一部分,不同的设备和平台可能支持不同的视频格式,因此,视频格式转换的需求也日益增长,本文将介绍如何使用Java实现视频格式转换,需要的朋友可以参考下
    2025-01-01
  • 基于mybatis一对多查询内层排序的问题

    基于mybatis一对多查询内层排序的问题

    这篇文章主要介绍了基于mybatis一对多查询内层排序的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教。
    2022-01-01
  • Java实现的JSONUtil工具类与用法示例

    Java实现的JSONUtil工具类与用法示例

    这篇文章主要介绍了Java实现的JSONUtil工具类与用法,结合实例形式分析了Java操作json格式数据工具类JSONUtil的定义与简单使用技巧,需要的朋友可以参考下
    2018-07-07
  • List转换成Map工具类的简单实例

    List转换成Map工具类的简单实例

    下面小编就为大家带来一篇List转换成Map工具类的简单实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-01-01
  • Java Stream.reduce()用法详细解析

    Java Stream.reduce()用法详细解析

    Stream API提供了丰富的中间函数,归并函数和终端函数,这些函数还支持并行化执行,下面这篇文章主要给大家介绍了关于Java Stream.reduce()用法的相关资料,需要的朋友可以参考下
    2022-12-12
  • SpringBoot的Bean类三种注入方式详解

    SpringBoot的Bean类三种注入方式详解

    在 Spring Boot 中,Bean 的注入方式主要包括构造函数注入(Constructor Injection)、字段注入(Field Injection)以及 Setter 方法注入(Setter Injection),以下是这几种注入方式的详细介绍,并附上 Lombok 的注入方式,需要的朋友可以参考下
    2024-12-12
  • 深入理解框架背后的原理及源码分析

    深入理解框架背后的原理及源码分析

    这篇文章来为大家深入的介绍了框架背后的原理及源码分析,希望大家能够更深层次的理解并使用好框架,在此与君共勉,框架虽好,但不要丢了其背后的原理
    2022-01-01
  • springboot中如何实现kafa指定offset消费

    springboot中如何实现kafa指定offset消费

    这篇文章主要介绍了springboot中如何实现kafa指定offset消费,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • 深入理解java中Arrays.sort()的用法

    深入理解java中Arrays.sort()的用法

    这篇文章主要介绍了深入理解java中Arrays.sort()的用法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05
  • shiro拦截认证的全过程记录

    shiro拦截认证的全过程记录

    Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理,下面这篇文章主要给大家介绍了关于shiro拦截认证的相关资料,需要的朋友可以参考下
    2021-11-11

最新评论