Mybatis3系列课程8-带参数查询
简介
上节课内容中讲解了查询全部, 不需要带条件查, 这节我们讲讲 带条件查询
目标
1. 带一个条件查询-基本数据类型
2.带两个条件查询-连个基本数据类型
3.带一个对象类型查询
为了实现目标, 我们要实现 按照主键 查询某个学生信息, 按照姓名和年级编号查询学生信息
按照学生部分信息查询完整信息
实现步骤
按照主键查询学生信息
主键是唯一的,如果按照主键查, 最多查询到一位同学信息
修改 StudentMapper.java 增加以下代码
/*** 按照主键查询学生信息* @param id 学生编号* @return 学生信息*/Student findById(int id);
修改StudentMapper.xml增加 select
<!--按照主键查询--><select id="findById" parameterType="int" resultType="student">select * from student where sid=#{id}</select>
一个参数查询的说明:
select 标签的id 属性值 对应 接口中 方法的名字
parameterType 对应 接口中 参数的类型
resultType 对应 接口中的返回值类型
一个参数的查询, 在mybatis中 可以使用 #{任意字符} 来获取,
但 为了与接口一致, 一般使用接口中参数的名字来代替 即 #{参数名}
测试 代码
import entity.Student;
import mapper.StudentMapper;
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.Before;
import org.junit.Test;import java.io.IOException;
import java.io.InputStream;
import java.util.List;public class TestStudent {private SqlSessionFactory sqlSessionFactory;@Beforepublic void init() throws IOException {// mybatis 配置文件的文件名String resource = "mybatis-config.xml";InputStream inputStream = Resources.getResourceAsStream(resource);sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);}@Testpublic void testFindAll() throws IOException {//获得SqlSessionSqlSession session = sqlSessionFactory.openSession();StudentMapper mapper = session.getMapper(StudentMapper.class);List<Student> list = mapper.findAll();list.forEach((e)->System.out.println(e));}@Testpublic void testFindById(){//获得SqlSessionSqlSession session = sqlSessionFactory.openSession();StudentMapper mapper = session.getMapper(StudentMapper.class);Student student = mapper.findById(2);System.out.println(student);}
}
运行结果
按照姓名和年级编号查询学生信息
按照姓名和年级编号查, 可以查询多个学生信息, (一个年级中可以出现同名学生)
修改StudentMapper.java 增加
/*** 按照 姓名及年级编号查询学生信息* @param name 姓名* @param gid 年级编号* @return 学生信息*/List<Student> findBy(String name,int gid);
修改StudentMapper.xml 增加 select 标签
<!--按照姓名及年级编号查询--><select id="findBy" resultType="student">select * from student where gid=#{param2} and sname=#{param1}</select>
编写测试类
@Testpublic void testFindBy() throws IOException {//获得SqlSessionSqlSession session = sqlSessionFactory.openSession();StudentMapper mapper = session.getMapper(StudentMapper.class);List<Student> list = mapper.findBy("王凯",7);list.forEach((e)->System.out.println(e));}
结果如下
使用 arg0 测试
两个参数总结:
对应 select标签id的值 对应 接口中 方法名
不需要配置 paramterType
通过 #{arg0}或#{param1} 引用获得第一个参数
通过 #{arg1}或#{param2} 引用获得第二个参数, 以此类推
按照多条件查询学生信息
多条件查询 一般推荐 参数使用 实体类本身
修改StudentMapper.java 增加
/*** 多条件查询* @param student 多条件* @return*/List<Student> find(Student student);
修改StudentMapper.xml 增加
<!--按照多条件查询--><select id="find" resultType="student" parameterType="student">select * from student where gid=#{gid} and sname=#{sname} and phone=#{phone}</select>
@Testpublic void testFind() throws IOException {//获得SqlSessionSqlSession session = sqlSessionFactory.openSession();StudentMapper mapper = session.getMapper(StudentMapper.class);Student stu = new Student();stu.setPhone("13852615963");stu.setSname("王凯");stu.setGid(7);List<Student> list = mapper.find(stu);list.forEach((e)->System.out.println(e));}
总结:
使用对象类型作为参数
#{属性名} , 要注意 属性名区分大小写
本文只是为了 讲解 接口中方法参数的写法,
例如像 电话,姓名应该用模糊查询写法, 本文目前先不涉及,后续更新模糊查询
相关文章:
Mybatis3系列课程8-带参数查询
简介 上节课内容中讲解了查询全部, 不需要带条件查, 这节我们讲讲 带条件查询 目标 1. 带一个条件查询-基本数据类型 2.带两个条件查询-连个基本数据类型 3.带一个对象类型查询 为了实现目标, 我们要实现 按照主键 查询某个学生信息, 按照姓名和年级编号查询学生信息 按照学生…...
IDEA shorten command line介绍和JAR manifest 导致mybatis找不到接口类处理
如果类路径太长,或者有许多VM参数,程序就无法启动。原因是大多数操作系统都有命令行长度限制。在这种情况下,IntelliJIDEA将试图缩短类路径。最好选中 classpath file模式。 shorten command line 选项提供三种选项缩短类路径。 none&#x…...
泽攸科技SEM台式扫描电子显微镜
泽攸科技是一家国产的科学仪器公司,专注于研发、生产和销售原位电镜解决方案、扫描电镜整机、台阶仪、探针台等仪器。目前台式扫描电镜分为三个系列:ZEM15、ZEM18、ZEM20。 ZEM15台式扫描电镜: ZEM18台式扫描电镜: ZEM20台式扫描…...
华为交换机配置BGP的基本示例
BGP简介 定义 边界网关协议BGP(Border Gateway Protocol)是一种实现自治系统AS(Autonomous System)之间的路由可达,并选择最佳路由的距离矢量路由协议。早期发布的三个版本分别是BGP-1(RFC1105࿰…...
数据分析基础之《numpy(4)—ndarry运算》
一、逻辑运算 当我们要操作符合某一条件的数据时,需要用到逻辑运算 1、运算符 满足条件返回true,不满足条件返回false # 重新生成8只股票10个交易日的涨跌幅数据 stock_change np.random.normal(loc0, scale1, size(8, 10))# 获取前5行前5列的数据 s…...
分享一个项目——Sambert UI 声音克隆
文章目录 前言一、运行ipynb二、数据标注三、训练四、生成总结 前言 原教程视频 项目链接 运行一个ipynb,就可操作 总共四步 1)运行ipynb 2)数据标注 3)训练 4)生成 一、运行ipynb 等运行完毕后,获得该…...
ES6 语法精粹简读
本文旨在记录 ES6 的核心常用语法,略去一些细节。 文章目录 1 var 函数作用域与 let/const 块作用域2 解构赋值数组结构赋值对象结构赋值3 ES6 中字符串的新语法模板字符串模板编译标签模板4 ES6 中的函数默认值rest 参数箭头函数this 指向问题部署管道机制尾调用优化...
uniapp整合echarts(目前性能最优、渲染最快方案)
本文echarts示例如上图,可扫码体验渲染速度及loading效果,下文附带本小程序uniapp相关代码 实现代码 <template><view class="source...
解决Electron应用中的白屏问题的实用方法
在使用Electron构建应用程序时,一些开发者可能会面临窗口加载过程中出现的白屏问题。这种问题主要分为两个方面: Electron未加载完毕HTML: 这时Electron自身产生的白色背景可能导致用户在启动应用时看到一片空白。HTML加载渲染过程中的短暂白…...
大数据---34.HBase数据结构
一、HBase简介 HBase是一个开源的、分布式的、版本化的NoSQL数据库(即非关系型数据库),依托Hadoop分布式文件系统HDFS提供分布式数据存储,利用MapReduce来处理海量数据,用Zookeeper作为其分布式协同服务,一…...
【工具使用-有道云笔记】如何在有道云笔记中插入目录
一,简介 本文主要介绍如何在有道云笔记中插入目录,方便后续笔记的查看,供参考。 二,具体步骤 分为两个步骤:1,设置标题格式;2,插入标题。非常简单~ 2.1 设置标题格式 鼠标停在标…...
用户管理第2节课-idea 2023.2 后端一删除表,从零开始---【本人】
一、清空model文件夹下,所有文件 1.1.1效果如下: 1.1代码内容 package com.daisy.usercenter.model;import lombok.Data;Data public class User {private Long id;private String name;private Integer age;private String email; }二、清空mapper文件…...
如何添加jar包到本地Maven项目中
在 Maven 中添加一个外部 JAR 包的依赖,你需要使用 Maven 的 <dependency> 元素来指定该 JAR 包的坐标信息。以下是具体的步骤: 将 JAR 包手动添加到 Maven 本地仓库: 首先,确保将外部 JAR 包手动添加到 Maven 本地仓库。可…...
智能优化算法应用:基于学校优化算法3D无线传感器网络(WSN)覆盖优化 - 附代码
智能优化算法应用:基于学校优化算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于学校优化算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.学校优化算法4.实验参数设定5.算法结果6.…...
【MATLAB第85期】基于MATLAB的2023年智能进化算法/元启发式算法合集(持续更新)
【MATLAB第85期】基于MATLAB的2023年智能进化算法/元启发式算法合集(持续更新) 1.海象进化算法(Walrus Optimization Algorithm) 作者:Pavel Trojovsk and Mohammad Dehghani 2.暴龙优化算法(Tyrannosa…...
[Realtek sdk-3.4.14b]RTL8197FH-VG+RTL8812F WiFi使用功率限制功能使用说明
sdk说明 ** Gateway/AP firmware v3.4.14b – Aug 26, 2019** Wireless LAN driver changes as: Refine WiFi Stability and Performance Add 8812F MU-MIMO Add 97G/8812F multiple mac-clone Add 97G 2T3R antenna diversity Fix 97G/8812F/8814B MP issu…...
Vue中为什么data属性是一个函数而不是一个对象?(看完就会了)
文章目录 一、实例和组件定义data的区别二、组件data定义函数与对象的区别三、原理分析四、结论 一、实例和组件定义data的区别 vue实例的时候定义data属性既可以是一个对象,也可以是一个函数 const app new Vue({el:"#app",// 对象格式data:{foo:&quo…...
Linux中一些知识积累(持续补充)
如何安装Eigen3库? 在linux中直接命令安装。Eigen/Dense 是 Eigen 库中的一个模块,提供了对密集矩阵(Dense Matrix)的支持。 sudo apt install libeigen3-devLinux 中VScode中运行C时,gdb 的Launch与Attach有什么区别…...
内网渗透基础
内网 内网指的是内部局域网,常说的LAN(local area network)。常见家庭wifi网络和小型的企业网络,通常内部计算机直接访问路由器设备,路由器设备接入移动电信的光纤实现上网。 内部局域网可以通过交换机/防火墙组成多个…...
【2023年网络安全优秀创新成果大赛专刊】银行数据安全解决方案(天空卫士)
在2023年网络安全优秀创新成果大赛,成都分站中,天空卫士银行数据安全方案获得优秀解决方案奖。与此同时,天空卫士受信息安全杂志邀请,编写《银行数据安全解决方案》。12月6日,天空卫士编写的《银行数据安全解决方案》做…...
嵌入式串口输入详细实例
学习目标 掌握串口初始化流程掌握串口输出单个字符掌握串口输出字符串掌握通过串口printf熟练掌握串口开发流程学习内容 需求 串口循环输出内容到PC机。 串口数据发送 添加Usart功能。 首先,选中Firmware,鼠标右键,点击Manage Project Items 接着,将gd32f4xx_usart.c添…...
springboot(ssm智慧生活商城系统 网上购物系统Java系统
springboot(ssm智慧生活商城系统 网上购物系统Java系统 开发语言:Java 框架:ssm/springboot vue JDK版本:JDK1.8(或11) 服务器:tomcat 数据库:mysql 5.7(或8.0) 数…...
Peter算法小课堂—贪心与二分
太戈编程655题 题目描述: 有n辆车大甩卖,第i辆车售价a[i]元。有m个人带着现金来申请购买,第i个到现场的人带的现金为b[i]元,只能买价格不超过其现金额的车子。你是大卖场总经理,希望将车和买家尽量多地进行一对一配对…...
搭建Vue前端项目的流程
1、安装nodejs 测试安装是否成功 $ npm -v 6.14.16 $ node -v v12.22.122、全局安装npm install -g vue/cli,后续会使用到vue命令 $ vue --version vue/cli 5.0.8使用vue create demo_project_fe命令创建项目,使用箭头键来选择,确认使用回车…...
1.使用 Blazor 利用 ASP.NET Core 生成第一个 Web 应用
参考 https://dotnet.microsoft.com/zh-cn/learn/aspnet/blazor-tutorial/create 1.使用vs2022创建新项目 选择 C# -> Windows -> Blzxor Server 应用模板 2.项目名称BlazorApp下一步 3.选择 .NET6.0 或 .NET7.0 或 .NET8.0 创建 4.运行BlazorApp 5.全部选择是。 信…...
如何入门 GPT 并快速跟上当前的大语言模型 LLM 进展?
入门GPT 首先说第一个问题:如何入门GPT模型? 最直接的方式当然是去阅读官方的论文。GPT模型从2018年的GPT-1到现在的GPT-4已经迭代了好几个版本,通过官方团队发表的论文是最能准确理清其发展脉络的途径,其中包括GPT模型本身和一…...
【pentaho】kettle读取Hive表不支持bigint和timstamp类型解决。
一、bigint类型 报错: Unable to get value BigNumber(16) from database resultset显示kettle认为此应该是decimal类型(kettle中是TYPE_BIGNUMBER或称BigNumber),但实际hive数据库中是big类型。 修改kettle源码解决: kettle中java.sql.Types到kettle…...
centos 8 部署nextCloud
参考链接: Example installation on CentOS 8 — Nextcloud latest Administration Manual latest documentation 第一次 在RHEL 9.2部署,部署完成后,上传任意文件提示: 与服务器断开链接 发生未知错误 第二次 计划在centos…...
vue3 element-plus 输入框 clearable属性 聚焦时宽度会变化
解决办法 因为你的代码中el-input是没有宽度的, 所以实际渲染出来的 el-input宽度 原生input宽度 前缀图标宽度 后缀图标宽度。 可以写css固定el-input宽度来处理。 :deep.el-input.el-input--default.el-input--suffix {// 固定宽度width: 200px !important; …...
【科技前沿】数字孪生技术改革智慧供热,换热站3D可视化引领未来
换热站作为供热系统不可或缺的一部分,其能源消耗对城市环保至关重要。在双碳目标下,供热企业可通过搭建智慧供热系统,实现供热方式的低碳、高效、智能化,从而减少碳排放和能源浪费。通过应用物联网、大数据等高新技术,…...
做外国订单有什么网站/百度识图网页版在线
集线器-------集线器也叫Hub,工作在物理层(最底层),没有相匹配的软件系统,是纯硬件设备。集线器主要用来连接计算机等网络终端。集线器为共享式带宽,连接在集线器上的任何一个设备发送数据时,其…...
怎样做网站手机和电脑通用/广州百度搜索排名优化
星期日星期一星期二星期三星期四星期五星期六 所花时间 (包括上课) 8:00~9:50 9:30~10:30代码量(行) 206(不包括复制例子)博客量(篇) 1…...
wptamed wordpress仪表盘汉化/直通车关键词怎么选 选几个
5730. 将所有数字用字符替换给你一个下标从 0 开始的字符串 s ,它的 偶数 下标处为小写英文字母,奇数 下标处为数字。 定义一个函数 shift(c, x) ,其中 c 是一个字符且 x 是一个数字,函数返回字母表中 c 后面第 x 个字符。 比方…...
企业网站营销的成功案例/有没有专门做营销的公司
如题。 之前是IE7时正常,装IE8后在VS2005中按F5正常启动,但是打开IE之后VS2005自动回到非调试状态。 在调试菜单中“附加到进程”中附加到WebDev.WebServer.EXE倒是可以,不知道是怎么回事。 转载于:https://www.cnblogs.com/chinhr/archive/2…...
网站制作的地方/网络营销服务商
静态字段缓存基本使用 /// <summary>/// 1 客户端缓存-CDN缓存-反向代理缓存-本地缓存/// 2 本地缓存原理和手写基础实现/// 3 缓存更新/过期/多线程测试 /// 4 缓存类库封装和缓存应用总结 /// </summary>/// <param name="args"></param&…...
c 能用来做网站吗/百度地图广告投放
2010年7月份,NASA和Rackspace公司将Openstack开源。到今天,Openstack马上六周岁了。而6周岁正是孩子上小学一年级的时候,Openstack是否也准备好上小学了呢? Openstack在刚开始的3年受到了整个市场的热捧,很多国际大牌不…...