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操作之前,我们先要理解…...

【kafka】Golang实现分布式Masscan任务调度系统
要求: 输出两个程序,一个命令行程序(命令行参数用flag)和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽,然后将消息推送到kafka里面。 服务端程序: 从kafka消费者接收…...
Golang dig框架与GraphQL的完美结合
将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用,可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器,能够帮助开发者更好地管理复杂的依赖关系,而 GraphQL 则是一种用于 API 的查询语言,能够提…...
镜像里切换为普通用户
如果你登录远程虚拟机默认就是 root 用户,但你不希望用 root 权限运行 ns-3(这是对的,ns3 工具会拒绝 root),你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案:创建非 roo…...
LLM基础1_语言模型如何处理文本
基于GitHub项目:https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken:OpenAI开发的专业"分词器" torch:Facebook开发的强力计算引擎,相当于超级计算器 理解词嵌入:给词语画"…...

c#开发AI模型对话
AI模型 前面已经介绍了一般AI模型本地部署,直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型,但是目前国内可能使用不多,至少实践例子很少看见。开发训练模型就不介绍了&am…...

【JavaWeb】Docker项目部署
引言 之前学习了Linux操作系统的常见命令,在Linux上安装软件,以及如何在Linux上部署一个单体项目,大多数同学都会有相同的感受,那就是麻烦。 核心体现在三点: 命令太多了,记不住 软件安装包名字复杂&…...

Mysql中select查询语句的执行过程
目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析(Parser) 2.4、执行sql 1. 预处理(Preprocessor) 2. 查询优化器(Optimizer) 3. 执行器…...

AirSim/Cosys-AirSim 游戏开发(四)外部固定位置监控相机
这个博客介绍了如何通过 settings.json 文件添加一个无人机外的 固定位置监控相机,因为在使用过程中发现 Airsim 对外部监控相机的描述模糊,而 Cosys-Airsim 在官方文档中没有提供外部监控相机设置,最后在源码示例中找到了,所以感…...
现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?
现有的 Redis 分布式锁库(如 Redisson)相比于开发者自己基于 Redis 命令(如 SETNX, EXPIRE, DEL)手动实现分布式锁,提供了巨大的便利性和健壮性。主要体现在以下几个方面: 原子性保证 (Atomicity)ÿ…...
Linux系统部署KES
1、安装准备 1.版本说明V008R006C009B0014 V008:是version产品的大版本。 R006:是release产品特性版本。 C009:是通用版 B0014:是build开发过程中的构建版本2.硬件要求 #安全版和企业版 内存:1GB 以上 硬盘…...