1. 程式人生 > >Spring MVC 使用SQL進行模糊查詢

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 WHEREROLE_NAME LIKE  '%系統%';