MyBatis 问题与修复
Mybatis xml 参数 0 自动转化为空字符 <if test="gender != null and gender !=''"> 加了and gender !='' ,当传入 0 时,会自动转…
Mybatis xml 参数 0 自动转化为空字符
<if test="gender != null and gender !=''"> 加了and gender !='' ,当传入 0 时,会自动转化成空字符
MyBatis 中 in 查询
使用 Java 8 的String.join()方法将整数列表转换为逗号分隔的字符串,然后将其传递给查询。以下是一个示例代码:
1@Select("SELECT ceramic_id FROM detect_history WHERE device_id IN (${deviceIds})")
2List<String> listByField(@Param("deviceIds") List<Integer> deviceIds);
1// 调用方法
2List<Integer> deviceIds = Arrays.asList(1, 2, 3);
3String deviceIdsStr = String.join(",", deviceIds.stream().map(Object::toString).collect(Collectors.toList()));
4List<String> result = listByField(deviceIdsStr);
动态SQL
注解 SQL:
1@Select("SELECT name FROM info WHERE id = #{id}")
2String selectName(int id); //静态SQL
3@Select("<script> SELECT name FROM info WHERE id = #{id}
4<if test= "id != null and id != '' "> and type = 1 </if> </script>")
5String selectName(int id); //动态SQL
类 SQL:
1@SelectProvider(type = staticProvider.class, method = "selectName")
2String selectName(int id); //静态SQL
3
4public class staticProvider{
5 public String selectName(int id){
6 return new SQL().SELECT(name).FROM(info).WHERE("id = #{id}").toString();}
7}
8@SelectProvider(type = dynamicProvider.class, method = "selectName")
9String selectName(int id); //动态SQL
10
11public class dynamicProvider{
12 public String selectName(int id){
13 StringBuilder where = new StringBuilder();
14 return new SQL(){
15 SELECT("name");
16 FROM("info");
17 WHERE("id = #{id}");
18 if(id !=null && id.equals("")){
19 where.append("and type = 1")
20 WHERE(where.toString());}
21 }.toString();
22 }
23}
XML SQL:
1String selectName(int id); //静态SQL
2
3<?xml version="1.0" encoding="UTF-8"?>
4<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
5<mapper namespace="com.luxiaolan.oral.mapper.Mapper">
6 <select id = "selectName" resultType="java.lang.String">
7 SELECT name FROM info WHERE id = #{id}
8 </select>
9
10</mapper>
11
12String selectName(int id); //动态SQL
13
14<?xml version="1.0" encoding="UTF-8"?>
15<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
16<mapper namespace="com.luxiaolan.oral.mapper.Mapper">
17 <select id = "selectName" resultType="java.lang.String">
18 SELECT name FROM info WHERE id = #{id}
19 <if test="id !=null and id !='' ">
20 and type = 1
21 </if>
22 </select>
23</mapper>