天天看点

Spring MVC 使用SQL进行模糊查询

Spring MVC SQL模糊匹配实现

<mapper namespace="com.frmscs.repository.mapper.sys.SysRoleMapper" >
  <resultMap id="BaseResultMap" type="com.frmscs.entity.sys.SysRole" >
    <id column="ROLE_ID" property="roleId" jdbcType="INTEGER" />
    <result column="ROLE_NAME" property="roleName" jdbcType="VARCHAR" />
    <result column="ROLE_DESC" property="roleDesc" jdbcType="VARCHAR" />
    <result column="SYS_ROLE_GROUP_ID" property="sysRoleGroupId" jdbcType="INTEGER" />
    <result column="CREATE_DATE" property="createDate" jdbcType="TIMESTAMP" />
    <result column="UPDATE_DATE" property="updateDate" jdbcType="TIMESTAMP" />
    <result column="create_by" property="createBy" jdbcType="INTEGER" />
    <result column="update_by" property="updateBy" jdbcType="INTEGER" />
  </resultMap>
           

设置查询公共属性

<sql id="Base_Column_List" >
  ROLE_ID, ROLE_NAME, ROLE_DESC, SYS_ROLE_GROUP_ID, CREATE_DATE, UPDATE_DATE, create_by, update_by
</sql>
           

查询方法

<select id="findAllSysRole" resultMap="BaseResultMap" parameterType='com.frmscs.repository.command.SysRoleCmd'>
  select
  <include refid="Base_Column_List" />
  from sys_role
  <where> 1=1
    <if test="sysRoleGroupId != null">
      AND SYS_ROLE_GROUP_ID = #{sysRoleGroupId}
    </if>
    <if test="roleName != null and roleName != ''">
      AND ROLE_NAME like CONCAT('%',#{roleName,jdbcType=VARCHAR},'%')
    </if>
  </where>
</select>
           

如上所示 roleName 不等于null 并且 roleName 不等于 空字符串 

ROLE_NAME LIKE CONCAT('%',#{roleName,jdbcType = VARCHAR},'%') 就可以实现对ROLE_NAME的模糊匹配

例: 要查询结果为 '系统管理' 的信息 , 输入 其中任意一个字符就可以查到 '系统'

SQL中查询:

SELECT * FROM sys_role WHERE ROLE_NAME LIKE  '%系统%';