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 '%系统%';