mybatis 的条件查询的三个方法实现

原创 2015年08月12日 09:24:39

Mybatis的多条件查查询,传递参数,

第一种方法 传递map 型,

第二种方法 传递pojo 

带三种方法 多个参数如果不封装成Map,就用序列号代替。

如果参数比较多且乱建议用map 型,如果有定义的pojo 则建议用pojo类型,如果传递的参数不多,则建议用序列号代替的方法。

1.Map (当传入多个参数时可以使用map型)

例 :  mapper.java

//分页查询教师信息 

public List<Teacher> findTeacherByPage(Map<String, Object> map); 

相应地,这里用到了Map接口,就应该引入此接口:import java.util.Map。

 在执行类Collection中,调用findTeacherByPage方法的相关代码如下: 

Map<String,Object> params=new HashMap<String, Object>();

//以name字段升序排序, 

params.put("sort", "name");  

params.put("dir", "asc");  

//查询结果从第0条开始,查询2条记录 

params.put("start", 0);  

params.put("limit", 2);  

//查询职称为教授或副教授的教师 

params.put("title", "%教授");  

//分页查询教师信息 

List<Teacher> teachers=mapper.findTeacherByPage(params); 

 可以看出,我们先把参数放在了一个Map中,这样我们就可以在相应的SQL语句中以#{…}的形式引用这些参数了。如下所示:

<selectid="findTeacherByPage"resultMap="upervisorResultMap"

parameterType="java.util.Map">

select * from teacher where title like #{title} order by ${sort} ${dir} limit #{start},#{limit}  

</select>

2.pojo

2.1 . mapper.xml

<sql id="query_items_where">

 <!-- 使用动态sql,通过if判断,满足条件进行sql拼接

     商品的查询条件需要通过ItemsQueryVo包装对象中itemsCustom属性传递

     ${}字符串的拼接

  -->

 <if test="itemsCustom!=null">

 <if test="itemsCustom.name!=null and itemsCustom.name!=''">

     items.name LIKE'%${itemsCustom.name}%'

 </if>

 </if>

  </sql>

 

<select id="findItemsList"parameterType="cn.hpu.ssm.po.ItemsQueryVo"  resultType="cn.hpu.ssm.po.ItemsCustom">

 SELECT * FROM items

 <where>

 <include refid="query_items_where"></include>

  </where>

2. 2 Mapper.java

public interfaceItemsMapperCustom {

 //商品类表查询

public List<ItemsCustom> findItemsList (ItemsQueryVo itemsQueryVo)throws Exception;

}

3.Serviceimpl.java 在服务实现类中调用

   public List<ItemsCustom>findItemsList(ItemsQueryVo itemsQueryVo)throws Exception {

   //通过ItemsMapperCustom查询数据库

      //itemsQueryVoservice直接传递到dao

return itemsMapperCustom.findItemsList(itemsQueryVo);

   }

2.3controller 中调用 itemsCustom可以输入itemsCustom中的某个属性值具体看mapper.xml中的sql片段

@RequestMapping("/queryItems")

public ModelAndView queryItems(HttpServletRequest request,

ItemsQueryVo itemsCustom) throws Exception {

// 调用service查找数据库,查询商品列表,使用静态数据模

   // 测试froward后能否拿到id

   System.out.println(request.getParameter("id"));

   List<ItemsCustom> itemsList = itemsService.findItemsList(itemsCustom);

// 返回ModelAndView

ModelAndView modelAndView = new ModelAndView();

// 相当于requesrsetAttribut,在jsp页面中通过itemsList来取得数据

modelAndView.addObject("itemsList", itemsList);

   // 指定视图

   // 下边的路径在试图解析器中配置前缀和后缀

   modelAndView.setViewName("items/itemsList");

//modelAndView.setViewName("/WEBINF/jsp/items/itemsList.jsp");

   return modelAndView;

}

3.序列号代替

如果不想用map 也不想用pojo可以用序列号代替

Mapper.xml

<select id="login"parameterType="String" resultType="cn.hpu.back.po.Users">

 SELECT *  FROM users WHERE userphone= #{0} AND userpass=#{1}

 </select>

Mapper.java

Users login (String userphone ,String userpass)throwsException;

Serviceimpl.java调用

//登录

   public String logion(Stringuserphone, String userpass) throws Exception {

      // TODO Auto-generated method stub

      Usersstr= usersMapperCustom.login(userphone,userpass);

      Stringresult=null;

      if(str!=null)

        result="ok";    

      else

        result="no";

      return result;

   }

版权声明:本文为博主编写文章,未经博主允许转载,转载请注明出处。

MyBatis中动态SQL语句完成多条件查询

一看这标题,我都感觉到是mybatis在动态SQL语句中的多条件查询是多么的强大,不仅让我们用SQL语句完成了对数据库的操作;还通过一些条件选择语句让我们SQL的多条件、动态查询更加容易、简洁、直观。...
  • yanggaosheng
  • yanggaosheng
  • 2015年06月29日 19:00
  • 30461

mybatis动态条件查询和翻页查询的例子

接上篇文章 继续测试动态查询的语句和翻页查询语句。
  • rishengcsdn
  • rishengcsdn
  • 2014年09月16日 14:12
  • 17325

mybatis的动态条件查询

如何动态查询?当我没有接触到mybatis的时候一般的条件查询就是通过后台来判断参数分别执行不同的sql语句来得到我们想要的数据(反正我个人是这个样子的,不知道你们是不是这个样子啊),从刚开始对着my...
  • u013164612
  • u013164612
  • 2016年08月14日 09:16
  • 2866

Mybatis 注解形式多条件查询

创建商家实体类package com.clsystem.Dto;import com.clsystem.MybatisUtil.Invisible; import io.swagger.annotat...
  • YyCarry
  • YyCarry
  • 2017年11月20日 18:57
  • 633

基于mybatis的动态条件分页查询

public class BaseDao{ private SqlSessionTemplate session; /** * 分页查询 * @param listSql 当前...
  • zjx2016
  • zjx2016
  • 2016年08月21日 18:13
  • 1448

mybatis查询sql中in条件使用(foreach)

foreach属性主要有item,index,collection,open,separator,close。 1、item表示集合中每一个元素进行迭代时的别名, 2、index指定一个名字,用于...
  • aiyawalie
  • aiyawalie
  • 2016年10月28日 10:40
  • 21649

mybatis collection 多条件查询

业务需要通过mybatis 查询返回嵌套集合,嫌多次查询太麻烦,用自带的高级查询解决问题,下边是代码,已测试通过。 说下自己的理解,就是一个主查询结果集里面嵌套了子查询的结果集,可以是多个子查询,每...
  • di315362886
  • di315362886
  • 2017年03月03日 18:17
  • 2661

mybatis 根据条件查询

select id="GetRecordCountByCondition1" parameterType="java.util.Map" resultType="int"> select coun...
  • u012767369
  • u012767369
  • 2017年02月08日 15:42
  • 499

Mybatis 不确定条件查询(动态语句where和if)借助实体类封装参数

Mybatis 不确定条件查询(动态语句where和if) 在下面的案例本人将演示如何使用动态语句批量删除数据库数据,本人在数据库建了一张emp员工表(表的数据自己填充),表的结构如下: ...
  • benxiaohai888
  • benxiaohai888
  • 2017年11月17日 20:43
  • 444

Mybatis条件查询

最近做的项目涉及Mybatis条件查询,期间遇到好多问题,最后又很神奇的消失了。现将代码贴上来,为以后的开发铺路。 select from dop_parameter wh...
  • yuan_cheerleaders
  • yuan_cheerleaders
  • 2016年04月08日 09:07
  • 392
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:mybatis 的条件查询的三个方法实现
举报原因:
原因补充:

(最多只允许输入30个字)