mybatis使用<choose> <when>】的更多相关文章

一.需求 后台使用orcale数据库,mybatis做持久层,前台搜索功能,根据类型搜索,但是数据库中没有类型字段, 所以需要在where条件语句中进行判断,当type == x1 时和type == x2时where中的判断条件不同 二.解决 <select id = "" resultMap = ""> select * from table <where> <if test="type == 'x1' ">…
<!-- 4.2 choose用法 需求: 在已有的sys_user表中,除了主键id外,我们认为user_name也是唯一的, 所有的用户名都不可以重复.现在进行如下查询:当参数id有值的时候,优先 使用id查询,如果id没有值的时候,就判断用户名是否有值,如果用户名有值 就使用用户名查询,如果用户名也没有值,就使SQL查询无结果. --> <select id="selectByUserName" resultType="tk.mybatis.simpl…
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!-- 收入统计报表相关 --> <mapper namespace="reven…
<select id="getCount" resultType="int"> select count(1) from <choose> <when test='type!=null and type=="2"'> (或者<when test="type!=null and type=='2'.toString()">) t_evaluate_training t,t_trai…
choose标签是按顺序判断其内部when标签中的test条件是否成立,如果有一个成立,则 choose 结束. 当 choose 中所有 when 的条件都不满则时,则执行 otherwise 中的sql. 类似于Java 的 switch 语句,choose 为 switch,when 为 case,otherwise 则为 default. 例如下面例子,同样把所有可以限制的条件都写上,方面使用. choose会从上到下选择一个when标签的test为true的sql执行.安全考虑,我们使…
<choose> <when test="scoreRange!=null and scoreRange eq 1"> AND sc.score <![CDATA[ < ]]> 60 </when> <when test="scoreRange!=null and scoreRange eq 2"> AND (sc.score <![CDATA[ >= ]]> 60 AND sc.s…
SELECT<choose> <when test='timeType=="yy"'> TO_CHAR(REPORT_TIME,'yyyy') </when> <when test='timeType=="mm"'> TO_CHAR(REPORT_TIME,'yyyy-MM-dd') </when> <when test='timeType=="dd"'> TO_CHAR(R…
需求:模拟实际业务情况,传入多条件进行查询 /** * 需求:模拟实际业务,用户传入多个条件,进行用户列表信息的查询 * @param roleids * @return */ public List<User> getUserListByMulConditions(@Param("usercode")String usercode,@Param("userName")String userName,@Param("userRole"…
上篇文章<深入浅出Mybatis系列(八)---mapper映射文件配置之select.resultMap>简单介绍了mybatis的查询,至此,CRUD都已讲完.本文将介绍mybatis强大的动态SQL. 那么,问题来了: 什么是动态SQL? 动态SQL有什么作用? 传统的使用JDBC的方法,相信大家在组合复杂的的SQL语句的时候,需要去拼接,稍不注意哪怕少了个空格,都会导致错误.Mybatis的动态SQL功能正是为了解决这种问题, 其通过 if, choose, when, otherwi…
[注:摘自MyBatis官网 ] 1.动态SQL的元素: if choose (when, otherwise) trim (where, set) foreach bind 2.if语句:   <select id="findActiveBlogWithTitleLike" resultType="Blog"> SELECT * FROM BLOG WHERE state = ‘ACTIVE’ <if test="title != nu…