案例一:条件查询+分页操作

 pojo类(作用:多参数传递)

public class PageParams { 
    private int start ; 
    private int limit; 
    /*******setter and getter*********/ 
}

接口方法

传递一个pojo类及另外参数
可用一个pojo类来代替,mapper中相应sql加<if>判断参数非空

public List<Role> findByMix (@Param ("params") Role role, 
@Param ("page") PageParams pageParams) ; 

mapper.xml

<select id=" findByMix" resultType="role" >
    select id,role_name as roleName ,note from t_role 
    where role_name like concat ('%', #{params.roleName},'%')
    and note like concat('%', #{params.note},'%')
    limit #{page.start},#{page.limit}
</select>

案例二:多条件查询角色数据

<select id="selectByParams" parameterType="map" resultType="map" >
    select 
		role_id as roleId,
		role_code as roleCode,
		role_name as roleName,
		status,
		sys_create_user as sysCreateUser,
		sys_create_time as sysCreateTime,
		sys_update_user as sysUpdateUser,
		sys_update_time as sysUpdateTime,
		remarks
     from
    <include refid="Base_Table_Name" />
    <where>
    	<trim prefix="(" suffix=")" suffixOverrides="and|or">
              <if test="roleName != null and roleName != '' ">
                  <![CDATA[ role_name like CONCAT('%', #{roleName,jdbcType=VARCHAR}, '%') and  ]]>
              </if>
              <if test="roleCode != null and roleCode != '' ">
                  <![CDATA[ role_code like CONCAT('%', #{roleCode,jdbcType=VARCHAR}, '%') and  ]]>
              </if>
              <if test="status != null and status != '' ">
                  <![CDATA[ status = #{status,jdbcType=VARCHAR} and  ]]>
              </if>
          </trim>
    </where>
  </select>

<trim> 标签的使用见https://blog.csdn.net/xiangwang2016

CDATA

术语 CDATA 指的是不应由 XML 解析器进行解析的文本数据(Unparsed Character Data)。

在 XML 元素中,"<" 和 "&" 是非法的。

"<" 会产生错误,因为解析器会把该字符解释为新元素的开始。

"&" 也会产生错误,因为解析器会把该字符解释为字符实体的开始。

某些文本,比如 JavaScript 代码,包含大量 "<" 或 "&" 字符。为了避免错误,可以将脚本代码定义为 CDATA。

CDATA 部分中的所有内容都会被解析器忽略。

CDATA 部分由 "<![CDATA[" 开始,由 "]]>" 结束:

如果文本包含了很多的"<"字符 <=和"&"字符——就象程序代码一样,那么最好把他们都放到CDATA部件中。

Logo

基于 Vue 的企业级 UI 组件库和中后台系统解决方案,为数万开发者服务。

更多推荐