1.区别
<if test='studentName!=null'>
前端传入json
{ "studentName":"程" , "teamName":"" }
后端对应为
Map{ "studentName":"程" , "teamName":"" }
前端传入json
{ "studentName":"程" }
后端对应为
Map{ "studentName":"程" , "teamName":null }
"teamName":""时,test='studentName!=null'为true
"teamName":null时,test='studentName!=null'为false
2.项目源码
//KbsStudentDao
//搜索学员(按组名和学员姓名模糊查询,参数可为空)
@Select("<script>"
+ "select distinct SYS_USER.USERID as studentID,SYS_USER.USER_NAME as studentName from SYS_USER"
+ " LEFT JOIN SYS_USER_ROLE on SYS_USER.USERID=SYS_USER_ROLE.USERID"
+ " RIGHT JOIN KBS_TEAM_USER on SYS_USER.USERID=KBS_TEAM_USER.USER_ID"
+ " RIGHT JOIN KBS_TEAM on KBS_TEAM.TEAM_ID=KBS_TEAM_USER.TEAM_ID"
+ " where ROLEID='ROLE_STUDENT' "
+ " <if test='studentName!=null'> and SYS_USER.USER_NAME like '%${studentName}%'</if> "
+ " <if test='teamName!=null'> and KBS_TEAM.TEAM_NAME=#{teamName} </if> "
+ "</script>")
public ArrayList<KbsStudent> queryStudents(Map<String,Object> map);
//IKbsStudentService
//搜索学员(按组名和学员姓名模糊查询,参数可为空)
public QueryResultObject queryStudents(Map<String,Object> map);
//KbsStudentService implements IKbsStudentService
@Override
//搜索学员(按组名和学员姓名模糊查询,参数可为空)
public QueryResultObject queryStudents(Map<String,Object> map) {
ArrayList<KbsStudent> studentList=kbsStudentDao.queryStudents(map);
return RestUtils.wrappQueryResult(studentList);
}
//KbsStudentController
@Autowired
private KbsStudentService kbsStudentService;
//搜索学员(按组名和学员姓名模糊查询,参数可为空)
@ApiOperation("搜索培训学员(参数可为空)")
@RequestMapping(value="/queryStudents",method=RequestMethod.POST)
public WrappedResult queryStudents(@RequestBody JSONObject json,HttpServletResponse response) {
HashMap<String, Object> map=new HashMap<String, Object>();
String studentName=json.getString("studentName");
String teamName=json.getString("teamName");
map.put("studentName", studentName);
map.put("teamName",teamName);
//********************
if(teamName=="" ){
map.put("teamName",null);
}
//********************
try{
QueryResultObject result=kbsStudentService.queryStudents(map);
logger.info("查询成功");
return WrappedResult.successWrapedResult(result);
}catch(Exception e){
logger.error(e.getMessage(),e);
String errorMessage="查询异常";
if(isDev){
errorMessage=e.getMessage();
}
return WrappedResult.failedWrappedResult("查询异常");
}
}
3.运行结果
SQL执行如下
select distinct SYS_USER.USERID as studentID,SYS_USER.USER_NAME as studentName
from SYS_USER LEFT
JOIN SYS_USER_ROLE on SYS_USER.USERID=SYS_USER_ROLE.USERID RIGHT
JOIN KBS_TEAM_USER on SYS_USER.USERID=KBS_TEAM_USER.USER_ID RIGHT
JOIN KBS_TEAM on KBS_TEAM.TEAM_ID=KBS_TEAM_USER.TEAM_ID
WHERE ROLEID='ROLE_STUDENT'
and SYS_USER.USER_NAME like '%程%'