MyBatis常用的小技巧

简介: 这篇文章分享了MyBatis中的一些常用技巧,包括使用`in`语句处理字符串或集合参数、在`insert`语句后获取自增ID,以及使用`like concat`进行模糊查询以防止SQL注入。

1、MyBatis使用in语句,入参为字符串或集合时的写法

1、当levels为字符串时,如:"1,2,3,4,5",使用in (${param})

<select id="xxxxxxxx" resultType="java.lang.String">
    select username from user where status = 0

    <if test="levels != null and '' != levels">
        and level in

        (${levels})
    </if>
</select>

2、当levels为List时,如:[1,2,3,4,5],使用in foreach遍历
<select id="xxxxxxxx" resultType="java.lang.String">
    select username from user where status = 0

    <if test="levels.size() > 0">
        and level in

        <foreach item="level" index="index" collection="levels" open="(" close=")" separator=",">
            #{level}
        </foreach>
    </if>
</select>

2、MyBatis新增insert语句执行完返回该条记录自增的ID

<insert id="xxxxxxxx" parameterType="com.example.ProductPo">
    insert into product (name, type_id, price, create_time, update_time)
    value (#{name}, #{type_id}, #{price}, #{create_time}, #{update_time})
    <selectKey keyColumn="id" keyProperty="id" resultType="java.lang.Long" order="AFTER">
        select LAST_INSERT_ID() as id
    </selectKey>
</insert>

3、MyBatis使用like concat实现模糊查询,还能防止SQL注入

<select id="fn" resultType="java.lang.Long">
    select
        id
    from
        t_xxx
    where name like concat('%', #{keyName}, '%')
    order by name
</select>
目录
相关文章
|
消息中间件 NoSQL Java
Springboot 指定重发的次数和延迟时间,定时异步执行 重发任务
Springboot 指定重发的次数和延迟时间,定时异步执行 重发任务
1154 0
Springboot 指定重发的次数和延迟时间,定时异步执行 重发任务
|
Java 测试技术 容器
SpringBoot单元测试报空指针异常解决方案
java.lang.NullPointerException空指针异常 1.测试类中产生空指针异常,可能不是你的逻辑代码写错了,而是因为获取容器失败,即没有使用正确的测试方法 2.在SpringBoot项目中我们一般可以使用两种Junit进行测试,在导入@Test包时,会出现两个选项
1758 0
SpringBoot单元测试报空指针异常解决方案
|
Java
java8中修改parallelStream默认并发数
java8中修改parallelStream默认并发数
2510 0
java8中修改parallelStream默认并发数
|
5月前
|
安全 Java 网络安全
Java 实现 SMTP 协议调用的详细示例及实战指南 SMTP Java 调用示例
本文介绍了如何使用Java调用SMTP协议发送邮件,涵盖SMTP基本概念、JavaMail API配置、代码实现及注意事项,适合Java开发者快速掌握邮件发送功能集成。
530 0
|
数据可视化 Linux 数据库连接
Linux达梦数据库:通过disql登录命令行操作数据库,打开达梦数据库自带的数据库管理连接工具
Linux达梦数据库:通过disql登录命令行操作数据库,打开达梦数据库自带的数据库管理连接工具
3542 0
Linux达梦数据库:通过disql登录命令行操作数据库,打开达梦数据库自带的数据库管理连接工具
|
Linux 数据库
Linux下DM达梦数据库导入导出dmp文件实战演示,dexp和dimp命令详细使用方法
Linux下DM达梦数据库导入导出dmp文件实战演示,dexp和dimp命令详细使用方法
2361 0
Linux下DM达梦数据库导入导出dmp文件实战演示,dexp和dimp命令详细使用方法
|
存储 缓存 安全
在 Java 编程中,创建临时文件用于存储临时数据或进行临时操作非常常见
在 Java 编程中,创建临时文件用于存储临时数据或进行临时操作非常常见。本文介绍了使用 `File.createTempFile` 方法和自定义创建临时文件的两种方式,详细探讨了它们的使用场景和注意事项,包括数据缓存、文件上传下载和日志记录等。强调了清理临时文件、确保文件名唯一性和合理设置文件权限的重要性。
929 2
|
消息中间件 大数据 Kafka
Kafka消息封装揭秘:从Producer到Consumer,一文掌握高效传输的秘诀!
【8月更文挑战第24天】在分布式消息队列领域,Apache Kafka因其实现的高吞吐量、良好的可扩展性和数据持久性备受开发者青睐。Kafka中的消息以Record形式存在,包括固定的头部与可变长度的消息体。生产者(Producer)将消息封装为`ProducerRecord`对象后发送;消费者(Consumer)则从Broker拉取并解析为`ConsumerRecord`。消息格式简化示意如下:消息头 + 键长度 + 键 + 值长度 + 值。键和值均为字节数组,需使用特定的序列化/反序列化器。理解Kafka的消息封装机制对于实现高效、可靠的数据传输至关重要。
461 4
|
消息中间件 安全 大数据
Kafka多线程Consumer是实现高并发数据处理的有效手段之一
【9月更文挑战第2天】Kafka多线程Consumer是实现高并发数据处理的有效手段之一
1163 5
dynamic-datasource动态添加移除数据源
dynamic-datasource动态添加移除数据源
955 0

热门文章

最新文章