当前位置: 首页 > news >正文

企业级信息系统开发讲课笔记2.4 利用MyBatis实现条件查询

文章目录

  • 零、本节学习目标
  • 一、查询需求
  • 二、打开MyBatisDemo项目
  • 三、对学生表实现条件查询
    • (一)创建学生映射器配置文件
    • (二)配置学生映射器文件
    • (三)创建学生映射器接口
    • (四)测试学生映射器接口
      • 任务1、查询女生记录
      • 任务2、查询19岁的女生
      • 任务3、查询姓吴的19岁女生
      • 任务4、查找姓张的19岁女生

零、本节学习目标

  1. 理解条件查询的含义
  2. 掌握利用MyBatis实现条件查询
  • 京东网购就涉及条件查询
    在这里插入图片描述

一、查询需求

  • 对学生表进行条件查询,涉及姓名、性别和年龄三个字段。
    在这里插入图片描述
  • 比如查询姓“吴”,性别为“女”,同时年龄为19的学生记录。
    在这里插入图片描述
  • 注意:通配符%_的区别

二、打开MyBatisDemo项目

  • 打开MyBatisDemo项目
    在这里插入图片描述

三、对学生表实现条件查询

(一)创建学生映射器配置文件

  • resources/mapper目录里创建学生映射器配置文件 - StudentMapper.xml
    在这里插入图片描述
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="net.huawei.mybatis.mapper.StudentMapper"><!--按编号查询班级--><select id="getClazz" resultType="Clazz">SELECT c_id id, c_name name FROM t_class WHERE c_id = #{id}</select><!--定义学生结果映射--><resultMap id="studentMap" type="Student"><result column="s_id" property="id"/><result column="s_name" property="name"/><result column="s_gender" property="gender"/><result column="s_age" property="age"/><!--通过子查询getClazz关联到班级实体--><association column="class_id" property="clazz" javaType="Clazz" select="getClazz"/></resultMap><!--按条件查询学生记录,涉及姓名、性别与年龄的联合查询--><select id="findByCondition" parameterType="java.util.Map" resultMap="studentMap">SELECT * FROM t_student<trim prefix="WHERE" prefixOverrides="AND|OR"> <!--删除条件中多余的AND或OR--><!--关于姓名的条件,模糊查询--><if test="name != null">s_name LIKE CONCAT(#{name}, '%')</if><!--关于性别的条件--><if test="gender != null">AND s_gender = #{gender}  <!--注意AND不能少--></if><!--关于年龄的条件--><if test="age != null">AND s_age = #{age} <!--注意AND不能少--></if></trim></select>
</mapper>

(二)配置学生映射器文件

  • 在MyBatis配置文件的<mappers>元素里添加子元素<mapper resource="mapper/StudentMapper.xml"/>
    在这里插入图片描述

(三)创建学生映射器接口

  • net.huawei.mybatis.mapper包里创建学生映射器接口 - StudentMapper
    在这里插入图片描述
package net.huawei.mybatis.mapper;import net.huawei.mybatis.bean.Student;import java.util.List;
import java.util.Map;/*** 功能:学生映射器接口* 作者:华卫* 日期:2023年04月18日*/
public interface StudentMapper {List<Student> findByCondition(Map<String, Object> condition); // 按条件查询学生记录
}
  • 对应关系图
    在这里插入图片描述

(四)测试学生映射器接口

  • test/javanet.huawei.mybatis.mapper包里创建TestStudentMapper
    在这里插入图片描述
package net.huawei.mybatis.mapper;import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.After;
import org.junit.Before;import java.io.IOException;
import java.io.Reader;/*** 功能:测试学生映射器接口* 作者:华卫* 日期:2023年04月18日*/
public class TestStudentMapper {private SqlSession sqlSession; // SQL会话private StudentMapper studentMapper; // 学生映射器@Beforepublic void init() {try {// 读取MyBatis配置文件Reader reader = Resources.getResourceAsReader("mybatis-config.xml");// 基于MyBatis配置文件构建SQL会话工厂SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader);// 利用SQL会话工厂获取SQL会话sqlSession = factory.openSession();// 利用SQL会话获取学生映射器对象studentMapper = sqlSession.getMapper(StudentMapper.class);// 提示用户SQL会话创建成功System.out.println("SQL会话创建成功~");} catch (IOException e) {e.printStackTrace();}}@Afterpublic void destroy() {// 关闭SQL会话sqlSession.close();// 提示用户SQL会话关闭System.out.println("SQL会话已经关闭~");}
}

任务1、查询女生记录

  • 添加测试方法testFindByCondition()
    在这里插入图片描述
@Test // 测试按条件查询学生记录                                                  
public void testFindByCondition() {                                    // 创建条件对象                                                         Map<String, Object> condition = new HashMap<>();                  // 设置性别条件(女)                                                      condition.put("gender", "女");                                     // 按条件查询学生记录                                                      List<Student> students = studentMapper.findByCondition(condition);// 判断是否查询到满足条件的记录                                                 if (students.size() > 0) {                                        // 使用列表的遍历算子输出全部记录                                            students.forEach(student -> System.out.println(student));     } else {                                                          // 提示用户没有找到满足条件的记录                                            System.out.println("遗憾,没找到满足条件的记录~");                         }                                                                 
}                                                                     
  • 运行测试方法testFindByCondition(),查看结果
    在这里插入图片描述

任务2、查询19岁的女生

  • 修改测试方法里的查询条件
    在这里插入图片描述

  • 运行测试方法testFindByCondition(),查看结果
    在这里插入图片描述

任务3、查询姓吴的19岁女生

  • 修改测试方法里的查询条件
    在这里插入图片描述

  • 运行测试方法testFindByCondition(),查看结果
    在这里插入图片描述

任务4、查找姓张的19岁女生

  • 修改测试方法里的查询条件
    在这里插入图片描述

  • 运行测试方法testFindByCondition(),查看结果
    在这里插入图片描述

相关文章:

企业级信息系统开发讲课笔记2.4 利用MyBatis实现条件查询

文章目录 零、本节学习目标一、查询需求二、打开MyBatisDemo项目三、对学生表实现条件查询&#xff08;一&#xff09;创建学生映射器配置文件&#xff08;二&#xff09;配置学生映射器文件&#xff08;三&#xff09;创建学生映射器接口&#xff08;四&#xff09;测试学生映…...

【天梯赛—不想坑队友系列】L2-003 月饼(java)

目录 第一题&#xff1a; L2-003 月饼 输入格式&#xff1a; 输出格式&#xff1a; 输入样例&#xff1a; 输出样例&#xff1a; 题目分析 题目代码 第二题&#xff1a;德才论 输入格式&#xff1a; 输出格式&#xff1a; 输入样例&#xff1a; 输出样例&#xff…...

电磁兼容(EMC)的标准与测试内容

在国际范围上&#xff0c;电磁兼容标准的制定已经有了70多年的发展历程&#xff0c;最早为了保护无线电通信和广播&#xff0c;国际无线电干扰特别委员会&#xff08;CISPR&#xff09;对各种用电设备和系统提出了相关的电磁干扰发射限值和测量方法。到了20世纪60&#xff5e;7…...

滑动平均算法

class Solution { public static int[] maxSlidingWindow(int[] nums, int k) { int right 0; int[] res new int[nums.length -k 1]; int index0; LinkedList<Integer> list new LinkedList<>(); // 开始构造窗口 …...

个人职业发展

职业的本质就是人和社会的交换关系。选择什么职业&#xff0c;等于选择了用什么方式和世界交换。 比如&#xff0c;快递员、小时工靠“体力”&#xff1b;大多数打工者靠“体力智力”&#xff1b;网红靠“资源、平台”&#xff1b;各领域的大神、科学家、艺术家靠“天赋”。 这…...

剑指 Offer 51. 数组中的逆序对

剑指 Offer 51. 数组中的逆序对 难度&#xff1a;hard\color{red}{hard}hard 题目描述 在数组中的两个数字&#xff0c;如果前面一个数字大于后面的数字&#xff0c;则这两个数字组成一个逆序对。输入一个数组&#xff0c;求出这个数组中的逆序对的总数。 示例 1: 输入: [7…...

数字化转型迫在眉睫!药企如何应用AI技术加速创新?

导语 | 近年来&#xff0c;随着 AI 等技术的发展应用&#xff0c;数字化、智能化日渐成为各行各业转型升级的新兴力量&#xff0c;其与医药产业的融合创新也逐渐成为当前的新趋势&#xff0c;众多医药制造企业蓄势待发&#xff0c;搭乘数字化的快车&#xff0c;驶入高速发展的快…...

电脑显示屏是怎么显示出图像的?CPU与GPU又是什么关系?

文章目录电脑显示屏是怎么显示出图像的&#xff1f;CPU与GPU又是什么关系&#xff1f;显卡作用明明有了CPU为什么还要GPU?电脑显示屏是怎么显示出图像的&#xff1f;内存与显存所有运算都交给GPU处理可以吗&#xff1f;参考&#xff1a;电脑显示屏是怎么显示出图像的&#xff…...

报名截至在即 | “泰迪杯”挑战赛最后一场赛前指导直播!

为推广我国高校数据挖掘实践教学&#xff0c;培养学生数据挖掘的应用和创新能力&#xff0c;增加校企交流合作和信息共享&#xff0c;提升我国高校的教学质量和企业的竞争能力&#xff0c;第十一届“泰迪杯”数据挖掘挑战赛&#xff08;以下简称挑战赛&#xff09;已于2023年3月…...

经验分享:如何有效应对Facebook广告数据波动问题?

Facebook广告作为一种重要的数字营销工具&#xff0c;可以帮助企业和品牌快速获得目标受众的关注和转化。然而&#xff0c;由于广告投放过程的不稳定性&#xff0c;Facebook广告数据波动问题也经常出现。 对于广告主而言&#xff0c;如何应对Facebook广告数据波动问题&#xf…...

【Python】逆向解析js代码

目录 1. 打开百度翻译网页&#xff0c;查找翻译结果的网络资源包 2. 获取翻译结果网络资源包的url、请求头、请求体&#xff0c;解析json文件数据 3. 观察请求体字段&#xff0c;发现 query 字段便是我们输入的需要翻译的值 4. ctrl F 快捷键搜索sign值的网络资源包&#x…...

websorm启动vue项目修改内容后自动运行内存溢出

手动启动vue项目正常运行&#xff0c;修改部分内容保存后会自动重新run一下&#xff0c; 这个时候就报错内存溢出&#xff0c;然后很悲伤的需要再手动重启一下。 &#xff08;在网上查了好多方法就不单独加链接了&#xff09; 前3个方法都试过对于我的项目无效&#xff0c;第4…...

第05章_数组

第05章_数组 讲师&#xff1a;尚硅谷-宋红康&#xff08;江湖人称&#xff1a;康师傅&#xff09; 官网&#xff1a;http://www.atguigu.com 本章专题与脉络 1. 数组的概述 1.1 为什么需要数组 需求分析1&#xff1a; 需要统计某公司50个员工的工资情况&#xff0c;例如计…...

Spring Security --- 快速入门

概念 Spring Security是一个功能强大且高度可定制的&#xff0c;主要负责为Java程序提供声明式的 身份验证和访问控制 的安全框架Spring Security的底层主要是 基于 Spring AOP 和 Servlet 过滤器 来实现安全控制它提供了全面的安全解决方案同时授权粒度可以在 Web请求级和方法…...

程序员挣够了钱,到中年失业真的很可怕吗?

借用最近很火的一张图&#xff0c;看看没有工作&#xff0c;你手里的存款够用几年&#xff08;按每年年化3.5%&#xff0c;利息继续放入理财计算&#xff09;&#xff1a; 如果每年花销在10万左右&#xff08;折合每个月8333元&#xff0c;应该是比较富足的&#xff09;&#x…...

【Log and Dump Summary】

开各模块log前,建议先关闭selinux权限,并确定camera logD是已经有打印的,如果没有打印可以用如下命令开启: adb shell setenforce 0adb shell setprop persist.vendor.mtk.camera.log_level 3 adb shell pkill camera*再按以下方法开对应模块的 log: 1. 开MTK Camera2 …...

软考证书找工作有用吗?软考找工作用处大吗

软考证书是衡量IT技术人才能力的一种重要评价标准。 一、软考高级证书对找工作的帮助 1. 竞争力增强 软考高级证书具有一定难度和较高的专业技能要求&#xff0c;拥有该证书的人的技术水平和专业能力会得到认可和尊重&#xff0c;从而增强求职者的竞争力。 2. 拓宽职业发展…...

JavaWeb之谈论项目编码规范_Java版

1. 关于DDD项目结构约定 1.1 项目结构使用DDD整洁架构进行分包 maven项目结构遵从DDD整洁架构分为如下四个顶级包&#xff1a; application - 应用层代码&#xff0c;一般为接口层定义API的实现类和一些结构转化&#xff0c;application不应该承载业务逻辑 domain - 领域层&a…...

Map排序

(一&#xff09;treeHap 特点&#xff1a;treeMap中的元素根据键的大小自然排序&#xff08;默认是升序&#xff09; 1、treeHap遍历测试 import java.io.IOException; import java.util.*; public class Main {public static void main(String[] args)throws IOException {…...

mycat读写分离

1.准备工作 tar包 http://dl.mycat.org.cn/2.0/install-template/mycat2-install-template-1.20.zip jar包 http://dl.mycat.org.cn/2.0/1.21-release/ (下载最新的jar包) 将下载好的jar放到tar中的lib目录下并放入linux系统中 2.创建逻辑库 连接mycat端口8066 账号root 密码12…...

雷电模拟器装Magisk后,自带的文件管理器为啥打不开/data?用MT管理器一招搞定

雷电模拟器Magisk环境下文件管理器的权限困局与实战解决方案 当你在雷电模拟器中成功安装Magisk后&#xff0c;可能会遇到一个令人困惑的现象&#xff1a;原本可以自由访问系统目录的自带文件管理器&#xff0c;突然对/data和/system等关键路径"视而不见"。这并非模拟…...

打造轻量级Windows系统:Tiny11Builder深度应用指南

打造轻量级Windows系统&#xff1a;Tiny11Builder深度应用指南 【免费下载链接】tiny11builder Scripts to build a trimmed-down Windows 11 image. 项目地址: https://gitcode.com/GitHub_Trending/ti/tiny11builder 价值定位&#xff1a;解决三大系统痛点 你的Windo…...

OpenRocket:从设计到飞行的全链路火箭仿真实战指南

OpenRocket&#xff1a;从设计到飞行的全链路火箭仿真实战指南 【免费下载链接】openrocket Model-rocketry aerodynamics and trajectory simulation software 项目地址: https://gitcode.com/GitHub_Trending/op/openrocket 火箭爱好者与工程师的终极工具&#xff1a;…...

如何快速打造微信风格视频编辑功能?推荐开源神器WeiXinRecordedDemo

如何快速打造微信风格视频编辑功能&#xff1f;推荐开源神器WeiXinRecordedDemo 【免费下载链接】WeiXinRecordedDemo 仿微信视频拍摄UI, 基于ffmpeg的视频录制编辑 项目地址: https://gitcode.com/gh_mirrors/we/WeiXinRecordedDemo WeiXinRecordedDemo是一款基于FFmpe…...

空洞骑士模组管理终极指南:Scarab如何让复杂模组安装变得简单快速

空洞骑士模组管理终极指南&#xff1a;Scarab如何让复杂模组安装变得简单快速 【免费下载链接】Scarab An installer for Hollow Knight mods written in Avalonia. 项目地址: https://gitcode.com/gh_mirrors/sc/Scarab 对于《空洞骑士》玩家来说&#xff0c;模组&…...

基于Python的流浪动物救助平台毕业设计

博主介绍&#xff1a;✌ 专注于Java,python,✌关注✌私信我✌具体的问题&#xff0c;我会尽力帮助你。一、研究目的本研究旨在构建一个基于Python的流浪动物救助平台&#xff0c;以实现流浪动物的有效救助与管理工作。具体研究目的如下&#xff1a; 首先&#xff0c;通过构建流…...

JSON·学习笔记

“误报。我的安全阀一切正常。” “我们继续&#xff0c;今天我想解释一下什么是JSON。” “是啊&#xff0c;这个词我听过很多次了&#xff0c;什么意思&#xff1f;” “随着网络的发展&#xff0c;带有 JavaScript 的 HTML 页面开始主动与服务器通信并从服务器下载数据。为…...

WuliArt Qwen-Image Turbo新手必看:Web界面操作,一键保存高清图片

WuliArt Qwen-Image Turbo新手必看&#xff1a;Web界面操作&#xff0c;一键保存高清图片 1. 快速认识这个AI绘图神器 如果你正在寻找一个能在自己电脑上快速生成高质量图片的AI工具&#xff0c;WuliArt Qwen-Image Turbo绝对值得一试。这个工具最大的特点就是"快"…...

Axure RP中文界面完全指南:4步实现高效设计工作流

Axure RP中文界面完全指南&#xff1a;4步实现高效设计工作流 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包&#xff0c;不定期更新。支持 Axure 9、Axure 10。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn 作为产…...

【PAT甲级真题】- PAT Judge (25)

题目来源 PAT Judge (25) 题目描述点击链接自行查看 注意点&#xff1a; 排序&#xff1a;先按总分再按解决题目数再按id 思路简介 思路很简单&#xff0c;直接模拟即可 但是坑倒是很多 主要是要区分编译没过和过了但是得 0 分 方案&#xff1a; 初始化时分数为 -2 编译没…...