mybatis05–多条件的查询详解编程语言
编程语言 详解 查询 条件 8211
2023-06-13 09:20:36 时间
* 前台的表单给出的查询条件不能封装成一个对象的时候
* 查询只能是多个参数了! 也就是参数不全是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
运行测试代码即可得到结果!
12148.html
cjavaxml相关文章
- Python实现二分查找(二分查询)详解编程语言
- Python 发送带附件的email详解编程语言
- 10个 jQuery 小技巧/代码片段详解编程语言
- Android分页查询获取系统联系人信息详解编程语言
- Java实现一个简单 HTTP 服务器的代码详解编程语言
- Oracle 按每天,每周,每月,每季度,每年查询统计数据详解编程语言
- 解决MyBatis查询结果Map中值为null不存储键值的问题详解编程语言
- 页面分页实现详解编程语言
- Ext ComboBox 动态查询详解编程语言
- eclipse找不到 help->software update->find and install详解编程语言
- Http协议详解编程语言
- java中的数组排序(排序-冒泡排序)详解编程语言
- Spring Boot(七):springboot+mybatis多数据源最简解决方案详解编程语言
- sqlalchemy子查询详解编程语言
- django原生SQL语句查询与前端数据传递详解编程语言
- Mybatis学习总结(九):查询缓存详解编程语言
- PHP实现查询两个数组中不同元素的方法详解编程语言
- ABAP-权限查询-用户信息系统详解编程语言
- SAP工单设置技术上已完成和取消技术上已完成详解编程语言