Mybatis学习笔记7 参数处理专题

Mybatis学习笔记6 使用时的一些小技巧_biubiubiu0706的博客-CSDN博客

1.单个简单类型参数

2.Map参数

3.实体类参数

4.多参数

5.@Param注解(命名参数)

6.@Param源码分析

建表

插入点数据

新建模块

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.example</groupId><artifactId>mybatis-06</artifactId><version>1.0-SNAPSHOT</version><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target></properties><dependencies><!--mybatis依赖--><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.10</version></dependency><!--mysql驱动--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.30</version></dependency><!--junit--><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13.2</version><scope>test</scope></dependency><!--logback--><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.2.11</version></dependency></dependencies>
</project>

目录结构

1.单个简单类型参数包括:

byte   short   int   long   float   double   char

Byte   Short   Integer   Long   Double   Char

String 

java.util.Date

java.sql.Date

持久层接口

pojo

映射文件

<?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="com.example.mapper.StuMapper"><!--parameterType属性的作用:告诉mybatis框架,我这个方法的参数类型是什么类型。mybatis框架自身带有类型自动推断机制,所以大部分情况下parameterType属性都是可以省略不写的。SQL语句最终是这样的:select * from t_student where id = ?JDBC代码是一定要给?传值的。怎么传值?ps.setXxx(第几个问号, 传什么值);ps.setLong(1, 1L);ps.setString(1, "zhangsan");ps.setDate(1, new Date());ps.setInt(1, 100);...mybatis底层到底调用setXxx的哪个方法,取决于parameterType属性的值。注意:mybatis框架实际上内置了很多别名。可以参考开发手册。--><select id="selectById" resultType="student" parameterType="java.lang.Long">select * from t_student where id=#{id}</select><select id="selectByName" resultType="student">select * from t_student where name=#{name}</select><select id="selectByBirth" resultType="student">select * from t_student where birth=#{birth}</select><select id="selectBySex" resultType="student">select * from t_student where sex=#{sex}</select>
</mapper>

测试代码 

import com.example.mapper.StuMapper;
import com.example.pojo.Student;
import com.example.utils.SqlSessionUtil;
import org.apache.ibatis.session.SqlSession;import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;/*** @author hrui* @date 2023/9/19 1:24*/
public class Test {@org.junit.Testpublic void selectBySex(){SqlSession sqlSession = SqlSessionUtil.openSession();StuMapper mapper = sqlSession.getMapper(StuMapper.class);List<Student> students = mapper.selectBySex('男');students.forEach(student-> System.out.println(student));sqlSession.close();}@org.junit.Testpublic void selectByBirth() throws ParseException {SqlSession sqlSession = SqlSessionUtil.openSession();StuMapper mapper = sqlSession.getMapper(StuMapper.class);//List<Student> students = mapper.selectByBirth(new Date(1978-1900,1,3));SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd");Date parse = simpleDateFormat.parse("1980-10-11");List<Student> students = mapper.selectByBirth(parse);students.forEach(student-> System.out.println(student));sqlSession.close();}@org.junit.Testpublic void selectByName(){SqlSession sqlSession = SqlSessionUtil.openSession();StuMapper mapper = sqlSession.getMapper(StuMapper.class);List<Student> students = mapper.selectByName("张三");students.forEach(student-> System.out.println(student));sqlSession.close();}@org.junit.Testpublic void selectById(){SqlSession sqlSession = SqlSessionUtil.openSession();StuMapper mapper = sqlSession.getMapper(StuMapper.class);List<Student> students = mapper.selectById(1L);students.forEach(student-> System.out.println(student));sqlSession.close();}
}

加上这个或许效率高一点,但是一般不这么麻烦,不需要

2.Map参数

map也可以这样,#{XXX}是key就行

3.实体类参数

4.多参数

假如说在没有使用@Param指定参数名时候,你非想试试其他的

这里注意下,低版本mybatis可以写#{0},#{1}

上面也可以混着用 比如第一个参数#{arg0} 第二个参数#{param2}  也是可以的

使用@Param指定名字   这样  arg0 arg1就失效了    但是param1 param2还是可以用

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

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

相关文章

数据结构(java)--队列1

一、我们还是依旧引入一个小例子&#xff08;银行排队&#xff09;&#xff1a; 需要取号排队&#xff0c;服务完下一个 二、队列介绍 1&#xff09;队列是一个有序列表&#xff0c;可以用数组或是链表来实现 2&#xff09;遵循先入先出的原则。即&#xff1a;先存入队列的数…

肖sir__项目实战讲解__004

项目实战讲解 一、项目的类型 金融类&#xff1a; 保险(健康险理财险)、证券、基金(股票型基金、混合型基金、指数型基金、债券型基金、 天天基金网&#xff08;ETF基金、货币型基金、量化基金)、银行、贷款、信用卡、外汇、二元期权、期货原油、blockchain、 数字货币、黄金白…

机器学习之正则化与验证提高模型泛化

文章目录 正则化&#xff08;Regularization&#xff09;&#xff1a;验证&#xff08;Validation&#xff09;&#xff1a; 正则化和验证是机器学习中重要的概念&#xff0c;它们帮助提高模型的性能和泛化能力。让我详细介绍一下这两个概念&#xff1a; 正则化&#xff08;Re…

三维重建_纹理重建与表面细化

目录 前言&#xff1a;为什么要重建纹理&#xff1f; 1. 纹理图像的自动创建 1.1 基础知识 1.2 算法流程 1.2.1 视角选择 1.2.2 纹理坐标的计算 1.2.3 全局颜色调整 1.2.4 泊松图像编辑 1.2.5 OBJ文件 1.3 结果示例 2. 网格细化优化 2.1 基础知识与数学模型 2.2 优…

TLS/SSL(十) session缓存、ticket 票据、TLS 1.3的0-RTT

一 TLS优化手段 TLS 为了提升握手速度而提出优化手段,主要是减少TLS握手中RTT消耗的时间关于session cache和session ticket,nginx关于ssl握手的地方都有影子 [指令] https面经 ① session 缓存 resume: 重用,复用 案例&#xff1a; 第二次访问www.baidu.com 说明&#x…

解决域控制器的传感器配置问题

gpu加速计划 下载东西有时会报没有apt-utils&#xff0c;所以最好先给它下了&#xff1a; sudo apt-get install apt-utils验证&#xff1a; python #输入库 import torch #查看版本 print(torch.__version__) #查看gpu是否可用 torch.cuda.is_available() #返回设备gpu个数…

解决typescript报错=》不能将类型“undefined”分配给类型“boolean”

报错如下&#xff1a; 然后看看isSearch的类型定义&#xff1a; isSearch的定义是可选属性&#xff0c;但是TypeScript 中将一个参数标记为可选时&#xff0c;它的默认值将是 undefined。可选参数表示你可以选择性地提供该参数&#xff0c;如果不提供&#xff0c;那么它将默认为…

八一书《乡村振兴战略下传统村落文化旅游设计》许少辉瑞博士生辉少许——2023学生开学季许多少年辉光三农

八一书《乡村振兴战略下传统村落文化旅游设计》许少辉瑞博士生辉少许——2023学生开学季许多少年辉光三农

阿里云服务器+Frp+Proxifier工具进行内网穿透

阿里云服务器FrpProxifier工具进行内网穿透 为什么进行内网穿透&#xff1f; 什么叫内网穿透&#xff1f; 首先我们对内网和外网这两个名词做个解释&#xff1a; 内网&#xff1a;是内部建立的局域网络或办公网络,例如家庭内部网络&#xff0c;公司内部网络&#xff1b; 外…

【力扣485】最大连续 1 的个数

&#x1f451;专栏内容&#xff1a;力扣刷题⛪个人主页&#xff1a;子夜的星的主页&#x1f495;座右铭&#xff1a;前路未远&#xff0c;步履不停 目录 一、题目描述二、题目分析1、最值模拟2、双指针 一、题目描述 题目链接&#xff1a;最大连续 1 的个数 给定一个二进制数…

Linux---su:鉴定故障

问题来源:在使用xshell操作Linux命令时,切换root权限报错 可能是未设置密码:输入 sudo password 重新设置一下密码即可 本人犯的错: 因为在Linux下输入密码是没有显示的,然后我的键盘num键没开!!!(也就是输入数字开关的键盘),导致我认为我的密码输进去了,给我整懵逼了&#x…

树结构数据在table中回显 treeselect disabled

<el-table-column label"产业认定" align"center" prop"industryIdentification"><template slot-scope"scope"><treeselectv-if"scope.row.industryIdentification"v-model"scope.row.industryIdentif…

ESP8266使用记录(一)

1、23.7.17从TB买了个8266 2、下载安装Arduino 3、卖家的配套资料&#xff0c;直接覆盖相关文件 4、文件-首选项-设置-编辑器语言-中文(简体) 其他开发板管理器地址 http://arduino.esp8266.com/stable/package_esp8266com_index.json 5、工具-端口-COM6 工具-开发板-esp8266…

C# EPPlus 访问 Excel表格

EPPlus是什么&#xff1f; 一个访问Excel表格的库&#xff0c;调用相当简单 怎么访问&#xff1f; 表格可以简单理解成一个二维数组我希望访问表格像二维数组一样简单我希望消耗不算太大 封装一个类 下载DLL以及这个文件&#xff1a;《下载传送门->》 注意需要导入EP…

小程序引入vant-Weapp保姆级教程及安装过程的问题解决

小知识&#xff0c;大挑战&#xff01;本文正在参与“程序员必备小知识”创作活动。 本文同时参与 「掘力星计划」&#xff0c;赢取创作大礼包&#xff0c;挑战创作激励金 当你想在小程序里引入vant时&#xff0c;第一步&#xff1a;打开官方文档&#xff0c;第二步&#xff…

如何把利用paddlepaddle导出的json文件转化为yolo或者voc文件

目录 1. 修改源码&#xff0c;让模型能够生成出对于单个图像的标注。 2. 把数据转为yolo格式 3.把yolo格式转化为xml格式 这两天想偷懒&#xff0c;想让模型先在数据上标一遍&#xff0c;然后我再做修正&#xff0c;主要是图个省事。由于我们主要是利用paddle,模型也是基于p…

What is the difference between Parseval‘s theorem and Plancherel Theorem

Plancherel定理是调和分析里的一个结论, 最早由Michel Plancherel证明, 其可表述为 对同时属于 L 1 ( R ) L^{1}(R) L1(R) 和 L 2 ( R ) L^{2}(R) L2(R) 的函数f来说,其傅立叶变换F属于 L 2 ( R ) L^{2}(R) L2(R) ,且傅立叶变换是等距变换.数学表述为&#xff1a; ∥ f ^ ∥ 2…

如何让一个uniform variable在多级shader中都起作用(类似C语言的全局变量)?

GLSL编程中通常设计多个shader&#xff0c;如vertex shader, fragment shader等等。在最近的某个项目中&#xff0c;我需要定义一个变量&#xff0c;该变量类似C语言中的全局变量&#xff0c;要同时在两个shader中都起作用。c - OpenGL Uniform Across Multiple Shaders - Stac…

JavaScript系列从入门到精通系列第六篇:JavaScrip当中的运算符,主要涉及JavaScript当中的六大数据类型的四则运算

文章目录 前言 一&#xff1a;算数运算符 1&#xff1a;Number类型的四则运算 2&#xff1a;其他数据类型的四则运算 (一)&#xff1a;加法运算 (二)&#xff1a;减法运算 3&#xff1a;乘法运算 4&#xff1a;除法运算 5&#xff1a;取模运算 前言 运算符也叫操作符。…

HarmonyOS之 开发环境搭建

一 鸿蒙简介&#xff1a; 1.1 HarmonyOS是华为自研的一款分布式操作系统&#xff0c;兼容Android&#xff0c;但又区别Android&#xff0c;不仅仅定位于手机系统。更侧重于万物物联和智能终端&#xff0c;目前已更新到4.0版本。 1.2 HarmonyOS软件编程语言是ArkTS&#xff0c…