mybatis利用example檔案進行異表字段模糊查詢
1.首先建立一個po表
po表中 新增不是本表的資料
例如
public class UserInfoPo extends UserInfo {
private String deptId;//部門id
private String uid;//使用者id
private String dept;//部門
private String position;//部門的職位
public String getDeptId() {
return deptId;
}
}
在example檔案中新增 模糊查詢用到的欄位
public class UserInfoExample {
private String position;//部門的職位
}
在xml檔案中
對映欄位
<resultMap id="BaseResultMap1" type="com.integral.po.UserInfoPo" extends="BaseResultMap">
<result column="uid" property="uid" jdbcType="VARCHAR" />
<result column="dept" property="dept" jdbcType="VARCHAR" />
<result column="position" property="position" jdbcType="VARCHAR"/>
</resultMap>
並且寫出sql
<select id="selectUserByExample" resultMap="BaseResultMap1" parameterType="com.integral.entity.UserInfoExample" >
select u.*,d.* from t_userinfo u,t_user_dept d
<!-- <if test="_parameter != null" >
<include refid="Example_Where_Clause" />
</if> -->
where u.id = d.uid
<if test="position != null" ><!--此處的position 與 example和po中的欄位一致-->
and d.position like #{position,jdbcType=VARCHAR}
<!--d.position 是欄位名字 -->
</if>
<if test="orderByClause != null" >
order by ${orderByClause}
</if>
</select>
在mapper檔案中
寫出方法:
/**
* 根據部門的模糊查詢獲取所有使用者
* @description:
* @author:xuzn
* @date:2017-2-13 上午9:41:52
* @modify:
* @param example
* @return
* @version:
*
*/
List<UserInfoPo> selectUserByExample(UserInfoExample example);
在serviceImpl中 方法如下:
/**
* 模糊查詢獲取使用者
*/
@Override
public List<UserInfoPo> selectUserByExample(UserInfoPo po) {
UserInfoExample example = new UserInfoExample();
Criteria criteria = example.createCriteria();
//判斷 欄位是否為空 由po獲取傳過來的資料
if(StringUtils.hasText(po.getPosition())){
//example檔案中 將 position賦值
example.setPosition("%"+po.getPosition()+"%");
}
List<UserInfoPo> list = userInfoMapper.selectUserByExample(example);
if (list.size()>0) {
return list;
}else {
return null;
}
}
controller層 方法 如下:
@RequestMapping("selectUserByExample")
@ResponseBody
public LBResult selectUserByExample(UserInfoPo po,
HttpServletRequest request,
HttpServletResponse response) {
List<UserInfoPo> list = userInfoService.selectUserByExample(po);
try {
if (list.size()>0) {
return LBResult.build(400, "成功", list);
}else {
return LBResult.build(404, "失敗");
}
} catch (Exception e) {
e.printStackTrace();
logger.error(e.getMessage());
return LBResult.build(500, ExceptionUtil.getStackTrace(e));
}
}