Mybatis---增删改查
目录
一、添加用户
(1)持久层接口方法
(2)映射文件
(3)测试方法
二、修改用户
(1)持久层接口方法
(2)映射文件
(3)测试方法
三、删除用户
(1)持久层接口方法
(2)映射文件
(3)测试方法
四、查询用户
(1)持久层接口方法
(2)映射文件
(3)测试方法
五、模糊查询
(1)持久层接口方法
(2)映射文件
(3)测试方法
六、分页查询
(1)持久层接口方法
(2)映射文件
(3)测试方法
七、映射文件注意点
一、添加用户
(1)持久层接口方法
public interface UserMapper {//增加用户void add(User user); }
(2)映射文件
<?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="com.gq.mapper.UserMapper"><!-- 增加用户--><insert id="add" parameterType="com.gq.pojo.User">insert into user(username,sex,address) values(#{username},#{sex},#{address})</insert> </mapper>
(3)测试方法
@Testpublic void addTest() throws Exception {InputStream is=Resources.getResourceAsStream("SqlMapConfig.xml");SqlSessionFactoryBuilder sqlSessionFactoryBuilder=new SqlSessionFactoryBuilder();SqlSessionFactory sqlSessionFactory=sqlSessionFactoryBuilder.build(is);SqlSession session=sqlSessionFactory.openSession();UserMapper userMapper=session.getMapper(UserMapper.class);User user=new User("大明","女","合肥");userMapper.add(user);session.commit();session.close();is.close();}
二、修改用户
(1)持久层接口方法
public interface UserMapper {//更新用户void update(User user); }
(2)映射文件
<?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="com.gq.mapper.UserMapper"><!-- 更新用户--><update id="update" parameterType="com.gq.pojo.User">update user set username=#{username},sex=#{sex},address=#{address} where id=#{id}</update> </mapper>
(3)测试方法
@Testpublic void updateTest() throws Exception{InputStream is=Resources.getResourceAsStream("SqlMapConfig.xml");SqlSessionFactoryBuilder sqlSessionFactoryBuilder=new SqlSessionFactoryBuilder();SqlSessionFactory sqlSessionFactory=sqlSessionFactoryBuilder.build(is);SqlSession session=sqlSessionFactory.openSession();UserMapper userMapper=session.getMapper(UserMapper.class);User user=new User(7,"唐三","男","北京");userMapper.update(user);session.commit();session.close();is.close();}
三、删除用户
(1)持久层接口方法
public interface UserMapper {//删除用户void delete(int userid); }
(2)映射文件
<?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="com.gq.mapper.UserMapper"><!--根据id删除用户--><delete id="delete" parameterType="int">delete from user where id=#{userid}</delete> </mapper>
(3)测试方法
@Testpublic void deleteTest() throws Exception{InputStream is=Resources.getResourceAsStream("SqlMapConfig.xml");SqlSessionFactoryBuilder sqlSessionFactoryBuilder=new SqlSessionFactoryBuilder();SqlSessionFactory sqlSessionFactory=sqlSessionFactoryBuilder.build(is);SqlSession session=sqlSessionFactory.openSession();UserMapper userMapper=session.getMapper(UserMapper.class);userMapper.delete(7);session.commit();session.close();is.close();}
四、查询用户
(1)持久层接口方法
public interface UserMapper {//根据id查询用户User findById(int userid); }
(2)映射文件
<?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="com.gq.mapper.UserMapper"><!--根据id查询用户 --><select id="findById" parameterType="int" resultType="com.gq.pojo.User">select *from user where id=#{userid}</select> </mapper>
(3)测试方法
@Testpublic void selectByidTest() throws Exception{InputStream is=Resources.getResourceAsStream("SqlMapConfig.xml");SqlSessionFactoryBuilder sqlSessionFactoryBuilder=new SqlSessionFactoryBuilder();SqlSessionFactory sqlSessionFactory=sqlSessionFactoryBuilder.build(is);SqlSession session=sqlSessionFactory.openSession();UserMapper userMapper=session.getMapper(UserMapper.class);User user=userMapper.findById(3);System.out.println("-------------_______---------------");System.out.println("username="+user.getUsername()+" address="+user.getAddress()+" sex="+user.getSex());session.commit();session.close();is.close();}
五、模糊查询
(1)持久层接口方法
List<User> findByNameLike(String username);
(2)映射文件
<select id="findByNameLike" parameterType="string" resultType="com.gq.pojo.User">select *from user where username like #{username}</select>
(3)测试方法
@Testpublic void findNameLikeTest() throws Exception{InputStream is=Resources.getResourceAsStream("SqlMapConfig.xml");SqlSessionFactoryBuilder sqlSessionFactoryBuilder=new SqlSessionFactoryBuilder();SqlSessionFactory sqlSessionFactory=sqlSessionFactoryBuilder.build(is);SqlSession session=sqlSessionFactory.openSession();UserMapper userMapper=session.getMapper(UserMapper.class);List<User> userList=userMapper.findByNameLike("%北京%");for(User user:userList){System.out.println(user.toString());}session.commit();session.close();is.close();}
六、分页查询
(1)持久层接口方法
List<User> findPage(@Param("a1") int start, @Param("a2") int size);对于这里的@Param注解,解释如下:
它可以定义参数名称,让我们在映射文件直接使用名称即可,如果没有他的话,分页查询传递的则为arg0,arg1....或者是param1,param2......并且这两个是死的,不能改
(2)映射文件
<?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="com.gq.mapper.UserMapper"><!-- 分页查询--><select id="findPage" resultType="com.gq.pojo.User"> //因为这里我们前面已经使用@Param注解定义过名字了,不然不可以使用a1,a2select *from user limit #{a1},#{a2}</select> </mapper>
(3)测试方法
public void findPageTest() throws Exception{InputStream is=Resources.getResourceAsStream("SqlMapConfig.xml");SqlSessionFactoryBuilder sqlSessionFactoryBuilder=new SqlSessionFactoryBuilder();SqlSessionFactory sqlSessionFactory=sqlSessionFactoryBuilder.build(is);SqlSession session=sqlSessionFactory.openSession();UserMapper userMapper=session.getMapper(UserMapper.class);List<User> userList=userMapper.findPage(0,2);userList.forEach(System.out::println);session.commit();session.close();is.close();}
七、映射文件注意点
对于映射文件中的一些如parameterType等等,具体解释如下。
parameterType:表示参数类型
resultType:表示返回值的类型
对于parameterType,假如是字符串类型,我们将他的值写为string,而不是java.lang.String,为什么呢?
参数/返回值类型为基本数据类型/包装类/String等类型我们可以写全类名也可以写别名
数据类型 别名 byte _byte long _long short _short int _int int _integer double _double float _float boolean _boolean String string Byte byte Long long Short short Integer int/integer Double double Float float Boolean boolean Date date BigDecimal decimal/bigdecimal Object object Map map HashMap hashmap List list ArrayList arraylist Collection collection Iterator iterator
相关文章:
Mybatis---增删改查
目录 一、添加用户 (1)持久层接口方法 (2)映射文件 (3)测试方法 二、修改用户 (1)持久层接口方法 (2)映射文件 (3)测试方法 …...
开机性能-如何抓取开机systrace
一、理论 1.背景 抓取开机 trace 需要使用 userdebug 版本,而我们测试开机性能问题时都要求使用 user 版本,否则会有性能损耗问题。因此想要在抓取开机性能trace 时,需要在 user 版本上打开 atrace 功能之后才能抓取 trace,默认 …...
VBA技术资料MF54:VBA_EXCEL实时获取鼠标位置
【分享成果,随喜正能量】若人散乱心,乃至以一花,供养于画像,渐见无数佛。所以发一幅释迦牟尼佛像,与同修善友一起每日在微博上供养,只要有供养之心,便可积累功德。以此回向,愿求者如…...
模电课程设计
主要内容跟本科实验关系很大,可以用来借鉴。 包含文件有:实验报告、Multisim仿真文件,资料很全,有问题可以私信 目录 1、模电课设:用Multisim简单了解二极管 2、模电课设:用Multisim简析三极管与场效应…...
【2023研电赛】兆易创新命题三等奖: 低成本单母线电流永磁同步无感驱动器
本文为2023年第十八届中国研究生电子设计竞赛兆易创新企业命题三等奖以及决赛最佳论文奖分享,参加极术社区的【有奖活动】分享2023研电赛作品扩大影响力,更有丰富电子礼品等你来领!,分享2023研电赛作品扩大影响力,更有…...
原生Js 提取视频中的音频
Js提取视频中的音频 将视频中的音频轨道分离出来,生成 wav 文件播放或下载( Vue3 setup ) 代码实现 template <button><label for"file" id"filename">选择视频文件</label><input type"fi…...
设计模式-备忘录模式(Memento Pattern)
文章目录 前言一、备忘录模式的概念二、备忘录模式的实现三、备忘录优缺点优点:缺点:总结 前言 备忘录模式(Memento Pattern)是一种行为型设计模式,它用于捕获和存储对象的内部状态,以便在以后可以恢复到先…...
PHP对接阿里云虚拟号的实现(号码隐私保护)
fastadmin 封装框架 实现功能:AXN隐私号绑定、解绑; 场景:为店铺手机号开通虚拟号,用户联系店铺展示虚拟号码; 官方开放文档地址:https://help.aliyun.com/document_detail/59655.html?spma2c4g.111742…...
刷新单年发射纪录:SpaceX成功发射62次猎鹰9号火箭
SpaceX一直都致力于推进航天领域的发展。近日,该公司的猎鹰9号火箭再次刷新了单年发射纪录,目前已经成功发射了62次。除此之外,今年SpaceX还发射了一枚猎鹰火箭和一枚巨型火箭。马斯克表示,他的目标是实现每月10次猎鹰飞行&#x…...
项目打包docker镜像 | 上传nexus | jenkins一键构建
文章目录 前言准备实操1、打开docker的远程访问2、编写dockerfile文件3、指定nexus环境4、配置jenkins5、使用jenkins构建 总结 前言 Docker部署项目是指使用Docker容器化技术将应用程序及其依赖项打包成一个独立的、可移植的运行环境,并在各种操作系统和平台上进行…...
ios 运行ipa包 日志查看方式
方法一: 使用ideviceinstaller工具 # 安装ipa命令 brew install ideviceinstaller ideviceinstaller -i xxx.ipa# 查看运行日志 idevicesyslog# idevicesyslog 查找命令 idevicesyslog | grep test -A 3 -B 2 # 输出关键字所在行后3行,前2行) idevic…...
AUTOSARCAN-Tp协议
目录 一.单帧、首帧、连续帧、流控帧 单帧传输 SF单帧: 多帧传输 FF(首帧): CF(连续帧): FC(流控帧): 一.单帧、首帧、连续帧、流控帧 CAN诊断由发送端…...
【设计模式】组合模式实现部门树实践
1.前言 几乎在每一个系统的开发过程中,都会遇到一些树状结构的开发需求,例如:组织机构树,部门树,菜单树等。只要是需要开发这种树状结构的需求,我们都可以使用组合模式来完成。 本篇将结合组合模式与Mysq…...
恒林家居引入纷享销客CRM系统,领跑家居行业营销数字化进程
近日,恒林家居股份有限公司((股票代码:603661以下简称为“恒林家居”)携手纷享销客在湖州召开了CRM项目启动会。双方领导及核心项目人员齐聚一堂,展开了深度交流并达成了重要共识。 作为家居行业的领军企业…...
多线程-锁的种类
1 作用 Java中的锁主要用于保障多并发线程情况下数据的一致性。在多线程编程中为了保障数据的一致性,我们通常需要在使用对象或者方法之前加锁,这时如果有其他线程也需要使用该对象或者该方法,则首先要获得锁,如果某个线程发现锁正在被其他线程使用,就会…...
Hive 和 HDFS、MySQL 之间的关系
文章目录 HiveHDFSMySQL三者的关系 Hive、MySQL 和 HDFS 是三个不同的数据存储和处理系统,它们在大数据生态系统中扮演不同的角色,但可以协同工作以支持数据管理和分析任务。 Hive Hive 是一个基于 Hadoop 生态系统的数据仓库工具,用于管理和…...
【面试题】如何实现数组去重的?有几种方式?
前端面试题库 (面试必备) 推荐:★★★★★ 地址:前端面试题库 【国庆头像】- 国庆爱国 程序员头像!总有一款适合你! 1. 方法一:利用两层循环数组的splice方法 通过两层循环对数组…...
使用TCP方式拉取Canal数据
1 Canal对接Kafka联调 1.1 配置修改 canal.properties 修改 zk: canal.zkServers 10.51.50.219:2181instance.properties 开启配置项: canal.mq.dynamicTopic 是 Canal 的 MQ 动态 Topic 配置项: test_javaedge_01 是kafka 的 topicte…...
Docker安装mysql实战说明
安装前准备 在安装MySQL之前,你需要确保已经正确安装和配置了Docker,可以通过以下命令检查Docker是否已正确安装: docker --version如果Docker已经成功安装,你将看到Docker的版本信息。 下载mysql的镜像 Docker Hub是一个存储…...
前端DOM操作精解:基础概念、方法与最佳实践
引言 本文将深入探讨前端开发中的DOM操作,包括基础概念、常用方法和最佳实践。通过清晰易懂的解释和实际案例分析,我们将一起了解如何最有效地使用DOM操作来提升前端应用的用户体验。 一、DOM操作入门 在深入探讨DOM操作之前,我们先要理解…...
第25节 Node.js 断言测试
Node.js的assert模块主要用于编写程序的单元测试时使用,通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试,通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...
Ascend NPU上适配Step-Audio模型
1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统,支持多语言对话(如 中文,英文,日语),语音情感(如 开心,悲伤)&#x…...
12.找到字符串中所有字母异位词
🧠 题目解析 题目描述: 给定两个字符串 s 和 p,找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义: 若两个字符串包含的字符种类和出现次数完全相同,顺序无所谓,则互为…...
蓝桥杯 冶炼金属
原题目链接 🔧 冶炼金属转换率推测题解 📜 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V,是一个正整数,表示每 V V V 个普通金属 O O O 可以冶炼出 …...
C++使用 new 来创建动态数组
问题: 不能使用变量定义数组大小 原因: 这是因为数组在内存中是连续存储的,编译器需要在编译阶段就确定数组的大小,以便正确地分配内存空间。如果允许使用变量来定义数组的大小,那么编译器就无法在编译时确定数组的大…...
AI+无人机如何守护濒危物种?YOLOv8实现95%精准识别
【导读】 野生动物监测在理解和保护生态系统中发挥着至关重要的作用。然而,传统的野生动物观察方法往往耗时耗力、成本高昂且范围有限。无人机的出现为野生动物监测提供了有前景的替代方案,能够实现大范围覆盖并远程采集数据。尽管具备这些优势…...
SpringAI实战:ChatModel智能对话全解
一、引言:Spring AI 与 Chat Model 的核心价值 🚀 在 Java 生态中集成大模型能力,Spring AI 提供了高效的解决方案 🤖。其中 Chat Model 作为核心交互组件,通过标准化接口简化了与大语言模型(LLM࿰…...
Mac flutter环境搭建
一、下载flutter sdk 制作 Android 应用 | Flutter 中文文档 - Flutter 中文开发者网站 - Flutter 1、查看mac电脑处理器选择sdk 2、解压 unzip ~/Downloads/flutter_macos_arm64_3.32.2-stable.zip \ -d ~/development/ 3、添加环境变量 命令行打开配置环境变量文件 ope…...
「Java基本语法」变量的使用
变量定义 变量是程序中存储数据的容器,用于保存可变的数据值。在Java中,变量必须先声明后使用,声明时需指定变量的数据类型和变量名。 语法 数据类型 变量名 [ 初始值]; 示例:声明与初始化 public class VariableDemo {publi…...
免费批量Markdown转Word工具
免费批量Markdown转Word工具 一款简单易用的批量Markdown文档转换工具,支持将多个Markdown文件一键转换为Word文档。完全免费,无需安装,解压即用! 官方网站 访问官方展示页面了解更多信息:http://mutou888.com/pro…...
