在动态sql的使用where时,if标签判断中,如果实体类中的某一个属性是String类型,那么就可以这样来判断连接语句:

如果是String类型的字符串进行判空的时候:

<if test="inspectOrg != null and inspectOrg != ‘‘">
INSPECT_ORG = #{inspectOrg}
</if>

但是如果是实体类中的Integer类型,就是去掉空字符串的判断:

<if test="inspectTaio != null">
AND INSPECT_TAIO = #{inspectTaio}
</if>

否则会被空字符串判定条件下,导致添加不上需要连接的条件查询语句,

最后导致执行的sql,会在执行的时候,使用0的时候会不能执行

原文地址:https://www.cnblogs.com/qingmuchuanqi48/p/11594716.html

时间: 2024-10-23 21:41:45

在动态sql的使用where时,if标签判断中,如果实体类中的某一个属性是String类型,那么就可以这样来判断连接语句:的相关文章

Mybatis中实体类中的字段跟对应表的字段不一致时解决办法

解决字段名与实体类属性名不相同的冲突 实体类字段: public class Order { private int id; private String orderNo; private float price; } 对应数据库表字段: CREATE TABLE orders( order_id INT PRIMARY KEY AUTO_INCREMENT, order_no VARCHAR(20), order_price FLOAT ); 方式一:通过在sql语句中定义别名: <selec

hibernate映射实体类查询时数据库空字段赋值给实体类报错的问题

因为一直报实体类空异常,去网上查了资料只查到了并没有查到数据库空值时不给实体类赋值的属性,只有这两个属性 这两个属性时设置 实体类有空字段插入或更新 数据库时空属性为默认值 异常 org.hibernate.InvalidMappingException: Could not parse mapping document from resource cn/pojo/EmpDao.xml at org.hibernate.cfg.Configuration.addResource(Configur

mybatis动态sql之修改(学习set标签)

EmployeeMapperDynamicSql.java package com.gong.mybatis.mapper; import java.util.List; import java.util.Map; import org.apache.ibatis.annotations.MapKey; import com.gong.mybatis.bean.Employee; public interface EmployeeMapperDynamicSql { public List<Em

在实体类中对与记录数量的属性进行修改时,定义相关方法在实体类中,进行修改时方便

在demo.java中有一个private  Integer count;属性,需要对这个属性进行加一和减一 private Integer count; public Integer getCount() { return count; } public void setCount(int count) { this.count = count; } //对属性加一,先判断是否为null,当创建的是新的对象时,对属性加一就可以先设为0,然后加一,不用在再代码中进行判断 public int a

TreeMap和TreeSet在排序时如何比较元素?Collections工具类中的sort()方法如何比较元素?

TreeSet要求存放的对象所属的类必须实现Comparable接口,该接口提供了比较元素的compareTo()方法,当插入元素时会回调该方法比较元素的大小.TreeMap要求存放的键值对映射的键必须实现Comparable接口从而根据键对元素进行排序.Collections工具类的sort方法有两种重载的形式,第一种要求传入的待排序容器中存放的对象比较实现Comparable接口以实现元素的比较:第二种不强制性的要求容器中的元素必须可比较,但是要求传入第二个参数,参数是Comparator接

MyBatis学习(三)、动态SQL语句

三.动态SQL语句 有些时候,sql语句where条件中,需要一些安全判断,例如按某一条件查询时如果传入的参数是空,此时查询出的结果很可能是空的,也许我们需要参数为空时,是查出全部的信息.使用Oracle的序列.mysql的函数生成Id.这时我们可以使用动态sql. 下文均采用mysql语法和函数(例如字符串链接函数CONCAT). 3.1 selectKey 标签 在insert语句中,在Oracle经常使用序列.在MySQL中使用函数来自动生成插入表的主键,而且需要方法能返回这个生成主键.使

MyBatis学习 之 四、动态SQL语句

有些时候,sql语句where条件中,需要一些安全判断,例如按某一条件查询时如果传入的参数是空,此时查询出的结果很可能是空的,也许我们需要参数为空时,是查出全部的信息.使用Oracle的序列.mysql的函数生成Id.这时我们可以使用动态sql. 下文均采用mysql语法和函数(例如字符串链接函数CONCAT). 3.1 selectKey 标签 在insert语句中,在Oracle经常使用序列.在MySQL中使用函数来自动生成插入表的主键,而且需要方法能返回这个生成主键.使用myBatis的s

MyBatis学习 之 三、动态SQL语句

有些时候,sql语句where条件中,需要一些安全判断,例如按某一条件查询时如果传入的参数是空,此时查询出的结果很可能是空的,也许我们需要参数为空时,是查出全部的信息.使用Oracle的序列.mysql的函数生成Id.这时我们可以使用动态sql. 下文均采用mysql语法和函数(例如字符串链接函数CONCAT). 3.1 selectKey 标签 在insert语句中,在Oracle经常使用序列.在MySQL中使用函数来自动生成插入表的主键,而且需要方法能返回这个生成主键.使用myBatis的s

mybatis 使用动态SQL

RoleMapper.java public interface RoleMapper { public void add(Role role); public void update(Role role); public void delete(Role role); public List<Role> getRoleList(Role role); } RoleMapper.xml <?xml version="1.0" encoding="UTF-8&