public interface StudentDao {
/**
* 前台的表单给出的查询条件不能封装成一个对象的时候
* 查询只能是多个参数了! 也就是参数不全是Student中的属性!
* 这时候就有两个解决方案
* 01.第一种方式 使用map查询姓名带小 年龄大于10 的学生信息
*/ List<Student> selectStudentsByNameAndAge(Map<String, Object> map); }

先从前台的测试开始写

public class StudentTest {
StudentDao dao;
SqlSession session; @Before
public void before() {
// 因为需要关闭session 需要把session提取出去
session = SessionUtil.getSession();
dao = session.getMapper(StudentDao.class);
} @After
public void after() {
if (session != null) {
session.close();
}
} // 01.查询姓名带 小 年龄大于10 的学生信息
@Test
public void test() {
Map<String,Object> map=new HashMap<String, Object>();
map.put("StuName", "小");
map.put("StuAge", 10);
List<Student> list = dao.selectStudentsByNameAndAge(map);
for (Student student : list) {
System.out.println(student);
}
} }

那么xml文件的配置如下

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-Mapper.dtd">
<mapper namespace="cn.bdqn.dao.StudentDao">
<!-- id要和dao的方法名相同
#{值} 必须和前台map中的key一致!否则会报错--> <select id="selectStudentsByNameAndAge" resultType="Student">
select id,name,age from student
where name like '%' #{StuName} '%'
and age > #{StuAge}
</select> </mapper>

之后运行测试类代码即可!

现在又多了一个需求!查询姓名带 小 年龄大于10 ,并且编号大于 小黑 的学生信息

修改测试类代码

    // 02.查询姓名带 小   年龄大于10 并且编号大于 小黑 的学生信息
@Test
public void test2() {
//创建小黑 对象
Student stu=new Student(16, "小黑", 30); Map<String,Object> map=new HashMap<String, Object>();
map.put("StuName", "小");
map.put("StuAge", 10);
//增加对象到map中
map.put("stu", stu);
List<Student> list = dao.selectStudentsByNameAndAge(map);
for (Student student : list) {
System.out.println(student);
}
}

修改xml文件中的内容

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-Mapper.dtd">
<mapper namespace="cn.bdqn.dao.StudentDao">
<!-- id要和dao的方法名相同
#{值} 必须和前台map中的key一致!否则会报错--> <select id="selectStudentsByNameAndAge" resultType="Student">
select id,name,age from student
where name like '%' #{StuName} '%'
and age > #{StuAge}
<!-- 关键是#{}里面必须是写 对象名.属性 -->
and id >#{stu.id}
</select> </mapper>

运行测试代码 即可得到结果!

第二种方式 使用索引的方式来解决 多个参数的问题

public interface StudentDao {
/**
* 前台的表单给出的查询条件不能封装成一个对象的时候
* 查询只能是多个参数了! 也就是参数不全是Student中的属性!
* 这时候就有两个解决方案
* 02.使用多个参数查询姓名有小 年龄大于10的学生信息
*/ //
List<Student> selectStudentsByNameAndAge(String name, int age);
}

测试类中的代码如下

// 03.查询姓名带 小   年龄大于10  的学生信息
@Test
public void test2() {
List<Student> list = dao.selectStudentsByNameAndAge("小",10);
for (Student student : list) {
System.out.println(student);
}
}

xml文件中的内容如下

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-Mapper.dtd">
<mapper namespace="cn.bdqn.dao.StudentDao">
<!-- #{0} 和 #{1} 存放的是参数列表的位置 -->
<select id="selectStudentsByNameAndAge" resultType="Student">
select id,name,age from student
where name like '%' #{0} '%'
and age > #{1}
</select> <!--
小结:#{}中可以存放什么内容
01.参数对象的属性
02.任意内容,此时的#{}只是一个占位符
03.map的key
04.如果key所对应的value是对象,则存放的是对象的属性
05.参数的索引号!从0开始
-->
</mapper>

运行测试代码即可得到结果!

mybatis05--多条件的查询的更多相关文章

  1. asp.net mvc多条件+分页查询解决方案

    开发环境vs2010 css:bootstrap js:jquery bootstrap paginator 原先只是想做个mvc的分页,但是一般的数据展现都需要检索条件,而且是多个条件,所以就变成了 ...

  2. JSP+Servlet+javabean+oracle实现页面多条件模糊查询

    之前写过一篇JSP+Servlet+javabean+mysql实现页面多条件模糊查询 使用的是mysql进行的分页查询,mysql用limit控制,而oracle则是用rownum,今天第一次写or ...

  3. 【java】spring-data-jpa 集成hibernate实现多条件分页查询

    初次接触spring-data-jpa,实现多条件分页查询. 基础环境 Spring Boot+spring-data-jpa+hibernate+mysql 1.接口 要继承这个接口,这个接口提供了 ...

  4. HBase多条件筛选查询方案

    最近的项目需要使用Hbase做实时查询,由于Hbase只支持一级索引,也就是使用rowkey作为索引查询,所以对于多条件筛选查询的支持不够,在不建立二级索引的情况下,只能使用Hbase API中提供的 ...

  5. SQL中以count及sum为条件的查询

    在开发时,我们经常会遇到以“累计(count)”或是“累加(sum)”为条件的查询.比如user_num表: id user num 1 a 3 2 a 4 3 b 5 4 b 7   例1:查询出现 ...

  6. asp下实现多条件模糊查询SQL语句

    常写一个简单的模糊查询的SQL语句格式可以如下例: sql="select * from 表名 where 字段名 like ’%" & request.form(&quo ...

  7. ASP.NET MVC+EF框架+EasyUI实现权限管理系列(20)-多条件模糊查询和回收站还原的实现

    原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(20)-多条件模糊查询和回收站还原的实现 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇)   (1):框架 ...

  8. 使用ArcGIS API for Silverlight 进行复合多条件空间查询

    原文:使用ArcGIS API for Silverlight 进行复合多条件空间查询 这两天帮网上认识的一个兄弟做了一个查询的示例,多多少少总结一下,在此和大家分享. 为什么说是复合多条件呢?因为进 ...

  9. 实现多条件模糊查询SQL语句

    很多网友问到如何写模糊查询语句和多条件查询,这里我整理了一下,假设以姓名.性别.电话号...作为数据库中的字段名. 通常写一个简单的模糊查询的SQL语句格式可以如下例: sql="selec ...

  10. mysql 索引学习--多条件等值查询,顺序不同也能应用联合索引啦

    以前学习这一块的时候,是说:假设建立了联合索引a+b,那么查询语句也一定要是这个顺序才能应用该索引. 那么实际是怎样呢,经过mysql这么多次版本升级,相信mysql已经给我们做了某些优化. 下面是我 ...

随机推荐

  1. Sqoop: ERROR manager.SqlManager: Error reading from database: java.sql.SQLException:

    sqoop import --connect jdbc:mysql://122.206.79.212:3306/dating --username root --password 123456 --t ...

  2. Linux压力测试工具stress的参数详解

    为了测试服务器的负载情况,可以使用stress这个压力测试工具,可以在环境上验证测试下. stress安装 sudo yum install -y epel-release sudo yum inst ...

  3. apache配置伪静态Rewrite

    1: 修改apache的httpd.conf文件 找到这一行 #LoadModule rewrite_module modules/mod_rewrite.so 改成 LoadModule rewri ...

  4. 使用Azure的GPU系列虚拟机Ubuntu-16.0.4安装GPU驱动并使用Tensorflow-GPU的过程。

    1.source activate python362.source activate tensorflow-gpu3.pip install tensorflow-gpu(提示安装的这个版本:ten ...

  5. MacOS下保护浏览器主页和默认搜索

    Windows流氓软件已被中国人玩烂了, 终于连Mac也被沦陷. 视频演示地址: http://v.youku.com/v_show/id_XMTMwMTk4MzQ0MA==.html

  6. PHP,PSR开发规范

    https://github.com/hfcorriez/fig-standards/tree/zh_CN/%E6%8E%A5%E5%8F%97 PSR-1-basic-coding-standard ...

  7. 【20180409】IT管理之IT十二条令

    团队越来越大,靠人管几乎有力无心,只能靠制度管理了. 前段时间对部门颁布了12条令,效果明显. 特此Mark. 汇报: 三条总结:汇报讲究精简,一个事情最多一句话概括. 一页报告:内容精简,报告一页w ...

  8. Android设备真实DPI与系统标示DPI——ldpi/mdpi/hdpi/xhdpi/xxhdpi/xxxhdpi

    1.设备真实DPI与系统标示DPI 2.drawable允许的标示DPI值         drawable文件的合法名称如下: 3.如何验证         Demo如下,建立不同dpi的drawa ...

  9. idea 使用正则表达式 进行匹配替换

    关于正则表达式 可以参考相应的笔记 另外 如果要提取正则表达式中匹配到的内容,使用$1 - $... 按顺序取(第一个表达式 到 第N个表达式匹配到的数据),  这点和linux正则获取的方式是一样的

  10. Flume架构以及应用介绍[转]

    在具体介绍本文内容之前,先给大家看一下Hadoop业务的整体开发流程: 从Hadoop的业务开发流程图中可以看出,在大数据的业务处理过程中,对于数据的采集是十分重要的一步,也是不可避免的一步,从而引出 ...