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的多条件、动态查询更加容易、简洁、直观。...

Mybatis 多条件查询(模糊查询 使用in查询)

Mybatis支持多个条件的查询,使用if标签拼接。 下面是三个条件的查询得例子,使用的数据库是mysql,用到了模糊查询及in做条件查询。 xml文件: s...

mybatis的多条件查询案例(动态sql)

mybatis的动态sql拼接方式介绍
  • figo645
  • figo645
  • 2015年09月23日 11:59
  • 11617

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

接上篇文章 继续测试动态查询的语句和翻页查询语句。

mybatis中SQL块使用/动态条件查询

`id`, `username`, `password` 使用:

mybatis collection 多条件查询

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

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

MyBatis中动态SQL语句完成多条件查询,条件可以为字符串,数值,时间,以及自定义的类. 写的不好之处请指教~ MyBatis的XML:                        ...

mybatis的动态条件查询

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

MyBatis 判断条件为等于的问题

在用MyBatis操作数据库的时候相信很多人都用到,当在判断null, 大于,大于等于,小于,小于等于,不等于时估计很多都用到,比较容易实现了,这里就省略了,但唯独判断条件为等于时估计蛮多人遇到坑了,...

Mybatis3.1.1 if 或者 when判断条件不通过的问题

调查了很久,终于找到了问题之所在。 Mybatis3.1.1中 if 或者 when如果按照下面的写法是不会通过的。 错误写法: 因为里面的单引号包裹的字符串(例子中是'0')解析时候被去掉单引...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:mybatis 的条件查询的三个方法实现
举报原因:
原因补充:

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