多种条件的查询的解决方法
//按照手机号或者会员卡号进行多种方式的查询,解决方法:
//比如按照id或者名字进行多种方式的查询:
//在xml文件中书写代码:
<!--根据id或者name进行查询信息-->
<select id="selectAllByIdAndTel" parameterType="com.kude.pojo.User" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from user
<where>
//注意这个if test中的userId和name,这两个字段是user实体类中的变量,and 后面的User_id和Name是数据库User表中的字段
<if test="userId!= null and userId!=''">
and User_id=#{userId}
</if>
<if test="name!= null and name!=''">
and Name LIKE '%' #{name} '%'
</if>
</where>
</select>
//Servcie层
//我这个写的时候是按照分页格式写的,实际上查询出来的一般是单条数据
ServerResponse<Pager> selectAllByIdAndTel(User user,int curentPageIndex,int countPerpage);
// ServiceImpl实现层
@Override
public ServerResponse<Pager> selectAllByIdAndTel(User user,int curentPageIndex,int countPerpage) {
UserExample example=new UserExample();
UserExample.Criteria criteria=example.createCriteria();
Pager pager=new Pager();
List<User> users=userMapper.selectAllByIdAndTel(user);
if(users.size()>0){//判断是否含有数据
pager.setBigList(users);
pager.setCurentPageIndex(curentPageIndex);//当前页数
pager.setCountPerpage(countPerpage);//总页数
ServerResponse serverResponse=ServerResponse.createBySuccess(pager.getSmallList(),"查询成功",users.size());
return serverResponse;
}else {
return ServerResponse.createByErrorMessage("查询失败");
}
}
//Controller控制器
@RequestMapping("/test/selectAllByIdAndTel.do")
@ResponseBody
public ServerResponse<Pager> selectAllByIdAndTel(User user, @RequestParam(value = "curentPageIndex", defaultValue = "1") int curentPageIndex,
@RequestParam(value = "countPerpage", defaultValue = "10") int countPerpage){
return testService.selectAllByIdAndTel(user,curentPageIndex,countPerpage);
}
//进行测试的接口:
http://localhost:8080/user//test/selectAllByIdAndTel.do?name=张三
或者测试
http://localhost:8080/user//test/selectAllByIdAndTel.do?userId=1
特别注意接口中的name和userId也是属于User实体类中的变量。