MyBatis-获取参数

1. 创建MyBatis配置文件模板

  1. 编辑完Mybatis核心配置文件和properties文件后,打开IDEA的设置界面,找到Editor中的File and Code Templates,点击加号新增模板。在这里插入图片描述
  2. 接着将编辑好的核心配置文件中的内容复制粘贴到空白框中,设置好模板名等内容即可。在这里插入图片描述
  3. 接下来右键点击,选择new,就能直接使用创建好的模板了。在这里插入图片描述

2. 创建映射文件的模板

照着上述步骤来即可。
在这里插入图片描述

3. 创建工具类来完成获得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 java.io.IOException;
import java.io.InputStream;public class SqlSessionUtils {public static SqlSession getSqlSession() throws IOException {InputStream resourceAsStream = Resources.getResourceAsStream("mybatis-config.xml");SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();SqlSessionFactory build = sqlSessionFactoryBuilder.build(resourceAsStream);return build.openSession(true);}}

在这里插入图片描述

4. MyBatis获取参数的两种方式

MyBatis由两种方式来获取参数:

  • ${}:本质为字符串拼接,需要注意sql注入问题
  • #{}:本质为占位符复制

4.1 传入单个字面值

    <!--根据id查询用户当传入单个字面值时,可以使用任意名称来获取参数值,因为传参不以参数名为准,而是以位置为准要注意${}方法的单引号问题--><select id="getUserById" resultType="User"><!--使用#{},可以用任意名称接收参数甚至是字面值--><!--select * from user where id=#{2};--><!--使用${},可以使用任意名称接收参数,但需要注意双引号,否则会报错因为此方法为字符串拼接,如果参数是字符串类型,那么拼接后的字符串不带引号,所以会报错-->select * from user where id='${2}'</select>

4.2 传入多个字面值

    <!--当传入多个字面值时,mybatis会将这些参数放在一个map集合中以arg0,arg1...(或param1,param2...)为键,参数值为值所以要通过map中的键来获取相应的值--><select id="getUserByUsernameAndAge" resultType="User"><!--根据map中的键来获取参数值--><!--select * from user where username=#{arg0} and age=#{param2}-->select * from user where username='${param1}' and age=${arg1}</select>

4.3 自定义Map传入

    <!--可以自己将传入的参数放在一个map集合中,就可以使用自定义的键来获取参数值了--><insert id="insertUser"><!--insert into user values (#{id},#{username},#{password},#{age},#{sex},#{email})-->insert into user values (${id},'${username}','${password}',${age},'${sex}','${email}')</insert>
    @Testpublic void test4() throws IOException {SqlSession sqlSession = SqlSessionUtils.getSqlSession();UserDao mapper = sqlSession.getMapper(UserDao.class);Map<String,Object> map = new HashMap<>();map.put("id",4);map.put("username","hellen");map.put("password","12386kk");map.put("age",22);map.put("sex","女");map.put("email","jn@asd.com");Integer i = mapper.insertUser(map);System.out.println(i);}

4.4 传入实体类对象

    <!--当传入参数为实体对象时,可以通过属性名直接获取属性值要注意,在这里的属性实际上不需要对象中必须有对应字段只要有相应的get方法,去掉get后将首字母小写,得到的就是属性名,这个属性值就可以通过属性名获取--><insert id="insertUserByClass"><!--insert into user values (#{id},#{username},#{password},#{age},#{sex},#{email})-->insert into user values (${id},'${username}','${password}',${age},'${sex}','${email}');</insert>
    @Testpublic void test5() throws IOException {SqlSession sqlSession = SqlSessionUtils.getSqlSession();UserDao mapper = sqlSession.getMapper(UserDao.class);Integer i = mapper.insertUserByClass(newUser(6, "jcack", "aasddscx", 33, '女'));System.out.println(i);}

4.5 使用@Param注解命名参数

    <!--当使用了@Param注解命名了参数后,多个参数在map中就以自定义的名称为键(或param1,param2...为键),参数值为值在获取参数时可以直接使用自定义的参数名获取--><select id="getUserByUsernameAndSex" resultType="User">select * from user where username=#{username} and sex='${param2}'</select>

5.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/693648.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

代码随想录第二十一天 701.二叉搜索树中的插入操作 108.将有序数组转换为二叉搜索树

701.二叉搜索树中的插入操作 题目描述 给定二叉搜索树&#xff08;BST&#xff09;的根节点 root 和要插入树中的值 value &#xff0c;将值插入二叉搜索树。 返回插入后二叉搜索树的根节点。 输入数据 保证 &#xff0c;新值和原始二叉搜索树中的任意节点值都不同。 注意&a…

上传代码到云效

1.获得邀请链接&#xff0c;加入工作台 > 点击代码管理 2.创建代码库后 > 点击克隆下载 > 复制https链接 3.如果未安装git客户端先安装 > 选择一个本地文件夹右击鼠标点击Git Bash Here打开git命令窗 4.克隆时提示输入账号密码&#xff0c;在云效个人设置页面Ht…

利用MATLAB/Simulink仿真模型加速嵌入式控制系统的开发——以多学科融合的电机控制为例

电机控制涵盖了广泛的应用领域&#xff0c;从家用电器到工业设备&#xff0c;从电动汽车到航空航天&#xff0c;其重要性不言而喻。从过去到现在&#xff0c;再到未来&#xff0c;电机控制技术的发展经历了显著的变革&#xff0c;并持续推动着相关行业的进步。 一、电机控制的…

基于Jenkins实现的CI/CD方案

基于Jenkins实现的CI/CD方案 前言 最近基于Jenkins的基座&#xff0c;搭建了一套适用于我们项目小组的持续集成环境。现在把流程整理分享出来&#xff0c;希望可以给大家提供一些帮助和思路。 使用到的组件和版本 组件名称组件版本作用Harbor2.7.3镜像仓库Jenkins2.319.2持…

fastApi笔记03-请求体

请求体是客户端发送给API的数据&#xff0c;fastApi使用 Pydantic 模型来声明请求体 不能使用 GET操作&#xff08;HTTP 方法&#xff09;发送请求体。 要发送数据&#xff0c;必须使用下列方法之一&#xff1a;POST&#xff08;较常见&#xff09;、PUT、DELETE 或 PATCH 创…

zabbix5.0利用percona监控MySQL

具体来说包括: Percona Monitoring Plugins 这是一组用于收集MySQL实例各种性能指标和状态的插件脚本,包括: mysqld_stats.pl - 收集服务器状态计数器mysqld_statement_replay.pl - 进行负载模拟测试pt-status - 收集InnoDB资源使用情况等 Percona Templates 基于这些插件收集…

博途PLC PID仿真(单容水箱液位高度控制)

单容水箱和双荣水箱的微分方程和数值求解,可以参考下面文章链接: https://rxxw-control.blog.csdn.net/article/details/131139432https://rxxw-control.blog.csdn.net/article/details/131139432这篇博客我们利用欧拉求解器在PLC里完成单容水箱的数学建模。PLC也可以和MATL…

一次平平无奇的 Oracle 注入

在某次项目中&#xff0c;首先是发现注入点&#xff0c;数据库是Oracle&#xff0c;利用方式是时间盲注&#xff1a; 因为需要具体数据&#xff0c;所以要深入利用&#xff0c;手工肯定不方便&#xff0c;所以直接上 Sqlmap: Sqlmap也可以扫出该注入点&#xff0c;但想要进一步…

C++数组实战——考试成绩统计

成绩一成绩二成绩三同学一100100100同学二607999同学三1009587 代码&#xff1a; #include <iostream> #include<string> using namespace std;int main() { int score[3][3] {{100,100,100},{60,79,99},{100,95,87},}; #定义分数二维数组string names[3]{&qu…

软件实际应用,物流运输货运单打印,打印样式模板可以定制

软件实际应用&#xff0c;物流运输货运单打印&#xff0c;打印样式模板可以定制 一、前言 以下软件程序教程以 佳易王物流单打印查询系统V17.0为例说明 软件文件下载可以点击最下方官网卡片——软件下载——试用版软件下载 1、 物流单起始站可以设置直接选择&#xff0c;到达…

ARM 之十六 详解 CMSIS 版本变迁、各组件使用示例

目前,CMSIS 已经发展到了第六版,其目录结构也发生了重大的变化。在不断发展中,很多原来 CMSIS 的组件被不断独立出去,并因此成立了很多开源社区,今天就来学习一下! 由于 CMSIS 已经包含了相当丰富的文档,因此,本文重点学习版本之间的变化以及一些实际使用示例。 什么是…

2024云服务器ECS_云主机_服务器托管_e实例-阿里云

阿里云服务器ECS英文全程Elastic Compute Service&#xff0c;云服务器ECS是一种安全可靠、弹性可伸缩的云计算服务&#xff0c;阿里云提供多种云服务器ECS实例规格&#xff0c;如ECS经济型e实例、通用算力型u1、ECS计算型c7、通用型g7、GPU实例等&#xff0c;阿里云服务器网al…

SpringBoot---集成MybatisPlus

介绍 使用SpringBoot集成MybatisPlus框架。 第一步&#xff1a;添加MybatisPlus依赖 <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.3.2</version> </depende…

雷卯有多种5V低压ESD防静电元器件供您选择

一、5V单路ESD产品推荐 二、5V多路产品推荐 三、多路特色ESD内部结构图展示 四、方案推荐 USB3.0/TYPE-C 静电滤波保护方案 方案优点&#xff1a;USB3.0提供5.0Gbps的传输速度&#xff0c;本方案采用多路集成器件防护, 可节约空间&#xff0c;可保证信号完整性&#xff0c;可…

将 mixamo 中的动画重定向到 UE 的小白人中

动画网站 https://www.mixamo.com/ 导入网格和动画 导入网格 为了方便可以在 Content 目录下面创建一个文件夹用于放 Mixamo 导入的项目。 进入 Mixamo 的官方。 按照图片中的步骤进行下载。 将下载好的文件拖入到 UE4 项目中创建好的文件夹 Character 中。导入时设置直接…

多端开发围炉夜话

文章目录 一、多端开发 一、多端开发 uni-app 官网 UNI-APP中的UI框架&#xff1a;介绍常用的UI框架及其特点 uView UIVant WeappColor UIMint UI

Redis之缓存雪崩问题解决方案

文章目录 一、书接上文二、介绍三、解决方案1. 锁2. 不同的过期时间3. 缓存预热和定时任务 一、书接上文 Redis之缓存穿透问题解决方案实践SpringBoot3Docker 二、介绍 缓存雪崩&#xff0c;指大量的缓存失效&#xff0c;大量的请求又同时落在数据库。主要的一种诱因是key设…

jenkins的nmp install命令无法下载包

问题&#xff1a;在jenkin的流水线脚本中执行到&#xff1a;npm install命令后无法下载前端依赖包 1、进到jenkins的工作目录&#xff0c;一般在底层为/var/lib/jenkins/workspace/任务名称 cd /var/lib/jenkins/workspace/xkc处理方式&#xff1a; # 查看镜像源 npm config …

电路设计(24)——循环彩灯控制器的proteus仿真

1.设计要求 实先循环彩灯&#xff0c;功能如下&#xff1a; 8个LED从上到下依次亮&#xff0c;然后从上到下依次灭。重复以上过程 4个LED从上到下依次亮&#xff0c;然后从上到下依次灭。重复以上过程 2.设计思路 将两片74194级联&#xff0c;就可以实现八位的移位寄存器&…

最优二叉搜索树 C#实现

最优二叉搜索树 C#实现 介绍一下 上一篇博文搞半天挺烧脑&#xff0c;没搞清楚继续… 主要是练习动态规划算法。最关键的一个是这个最优二叉搜索树能干啥。我认为如果数据稳定&#xff0c;统计出概率来&#xff0c;用最优二叉树保存&#xff0c;以后搜索应该是效率比较高的。…