MyBatis choose、when和otherwise标签简介说明
MyBatis 中动态语句 choose-when-otherwise其功能同Java中的switch-case-default语句相同
但是因为MyBatis没有为 if 提供对应的 else 标签
当我们需达到 if ... else 的效果时,可使用choose when otherwise标签实现
动态语句 choose-when-otherwise 语法如下
DEBUG [main] - ==> Parameters: Java(String)
DEBUG [main] - <== Total: 1
UserInfo[id=1,name=王二,notes=java爱好者,age=88]
但是因为MyBatis没有为 if 提供对应的 else 标签
当我们需达到 if ... else 的效果时,可使用choose when otherwise标签实现
动态语句 choose-when-otherwise 语法如下
<choose> <when test="判断条件1"> SQL语句1 </when > <when test="判断条件2"> SQL语句2 </when > <when test="判断条件3"> SQL语句3 </when > <otherwise> SQL语句4 </otherwise> </choose>
choose 标签按顺序判断其内部 when 标签中的判断条件是否成立, 当有一个成立,则执行相应的 SQL 语句,choose 执行结束; 当都不成立,则执行 otherwise 中的 SQL 语句例 UserInfoMapper.xml 代码
<mapper namespace="com.java265.mapper.UserInfoMapper"> <select id="selectUserInfo" parameterType="com.java265.po.UserInfo" resultType="com.java265.po.UserInfo"> SELECT id,name,notes,age FROM UserInfo WHERE 1=1 <choose> <when test="name != null and name !=''"> AND name LIKE CONCAT('%',#{name},'%') </when> <when test="notes != null and notes !=''"> AND notes LIKE CONCAT('%',#{notes},'%') </when> <otherwise> AND age is not null </otherwise> </choose> </select> </mapper>UserInfoMapper 类中
public list<UserInfo> selectUserInfo(UserInfo userInfo);测试类
public class Test { public static void main(String[] args) throws IOException { // 读取配置文件mybatis-config.xml InputStream config = Resources.getResourceAsStream("mybatis-config.xml"); // 根据配置文件构建 SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(config); // 通过SqlSessionFactory创建SqlSession SqlSession ss = ssf.openSession(); UserInfo userInfo = new UserInfo(); userInfo.setname("Java"); List<UserInfo> userList = ss.selectList("com.java265.mapper.UserInfoMapper.selectUserInfo", userInfo); for (userInfo t : userList) { System.out.println(t); } } }输出结果--- DEBUG [main] - ==> Preparing: SELECT id,name,notes,age FROM UserInfo WHERE 1=1 AND name LIKE CONCAT('%',?,'%')
DEBUG [main] - ==> Parameters: Java(String)
DEBUG [main] - <== Total: 1
UserInfo[id=1,name=王二,notes=java爱好者,age=88]
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。