当前位置: 首页 > news >正文

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---增删改查

目录 一、添加用户 &#xff08;1&#xff09;持久层接口方法 &#xff08;2&#xff09;映射文件 &#xff08;3&#xff09;测试方法 二、修改用户 &#xff08;1&#xff09;持久层接口方法 &#xff08;2&#xff09;映射文件 &#xff08;3&#xff09;测试方法 …...

开机性能-如何抓取开机systrace

一、理论 1.背景 抓取开机 trace 需要使用 userdebug 版本&#xff0c;而我们测试开机性能问题时都要求使用 user 版本&#xff0c;否则会有性能损耗问题。因此想要在抓取开机性能trace 时&#xff0c;需要在 user 版本上打开 atrace 功能之后才能抓取 trace&#xff0c;默认 …...

VBA技术资料MF54:VBA_EXCEL实时获取鼠标位置

【分享成果&#xff0c;随喜正能量】若人散乱心&#xff0c;乃至以一花&#xff0c;供养于画像&#xff0c;渐见无数佛。所以发一幅释迦牟尼佛像&#xff0c;与同修善友一起每日在微博上供养&#xff0c;只要有供养之心&#xff0c;便可积累功德。以此回向&#xff0c;愿求者如…...

模电课程设计

主要内容跟本科实验关系很大&#xff0c;可以用来借鉴。 包含文件有&#xff1a;实验报告、Multisim仿真文件&#xff0c;资料很全&#xff0c;有问题可以私信 目录 1、模电课设&#xff1a;用Multisim简单了解二极管 2、模电课设&#xff1a;用Multisim简析三极管与场效应…...

【2023研电赛】兆易创新命题三等奖: 低成本单母线电流永磁同步无感驱动器

本文为2023年第十八届中国研究生电子设计竞赛兆易创新企业命题三等奖以及决赛最佳论文奖分享&#xff0c;参加极术社区的【有奖活动】分享2023研电赛作品扩大影响力&#xff0c;更有丰富电子礼品等你来领&#xff01;&#xff0c;分享2023研电赛作品扩大影响力&#xff0c;更有…...

原生Js 提取视频中的音频

Js提取视频中的音频 将视频中的音频轨道分离出来&#xff0c;生成 wav 文件播放或下载&#xff08; Vue3 setup &#xff09; 代码实现 template <button><label for"file" id"filename">选择视频文件</label><input type"fi…...

设计模式-备忘录模式(Memento Pattern)

文章目录 前言一、备忘录模式的概念二、备忘录模式的实现三、备忘录优缺点优点&#xff1a;缺点&#xff1a;总结 前言 备忘录模式&#xff08;Memento Pattern&#xff09;是一种行为型设计模式&#xff0c;它用于捕获和存储对象的内部状态&#xff0c;以便在以后可以恢复到先…...

PHP对接阿里云虚拟号的实现(号码隐私保护)

fastadmin 封装框架 实现功能&#xff1a;AXN隐私号绑定、解绑&#xff1b; 场景&#xff1a;为店铺手机号开通虚拟号&#xff0c;用户联系店铺展示虚拟号码&#xff1b; 官方开放文档地址&#xff1a;https://help.aliyun.com/document_detail/59655.html?spma2c4g.111742…...

刷新单年发射纪录:SpaceX成功发射62次猎鹰9号火箭

SpaceX一直都致力于推进航天领域的发展。近日&#xff0c;该公司的猎鹰9号火箭再次刷新了单年发射纪录&#xff0c;目前已经成功发射了62次。除此之外&#xff0c;今年SpaceX还发射了一枚猎鹰火箭和一枚巨型火箭。马斯克表示&#xff0c;他的目标是实现每月10次猎鹰飞行&#x…...

项目打包docker镜像 | 上传nexus | jenkins一键构建

文章目录 前言准备实操1、打开docker的远程访问2、编写dockerfile文件3、指定nexus环境4、配置jenkins5、使用jenkins构建 总结 前言 Docker部署项目是指使用Docker容器化技术将应用程序及其依赖项打包成一个独立的、可移植的运行环境&#xff0c;并在各种操作系统和平台上进行…...

ios 运行ipa包 日志查看方式

方法一&#xff1a; 使用ideviceinstaller工具 # 安装ipa命令 brew install ideviceinstaller ideviceinstaller -i xxx.ipa# 查看运行日志 idevicesyslog# idevicesyslog 查找命令 idevicesyslog | grep test -A 3 -B 2 # 输出关键字所在行后3行&#xff0c;前2行) idevic…...

AUTOSARCAN-Tp协议

目录 一.单帧、首帧、连续帧、流控帧 单帧传输 SF单帧&#xff1a; 多帧传输 FF&#xff08;首帧&#xff09;&#xff1a; CF&#xff08;连续帧&#xff09;&#xff1a; FC&#xff08;流控帧&#xff09;&#xff1a; 一.单帧、首帧、连续帧、流控帧 CAN诊断由发送端…...

【设计模式】组合模式实现部门树实践

1.前言 几乎在每一个系统的开发过程中&#xff0c;都会遇到一些树状结构的开发需求&#xff0c;例如&#xff1a;组织机构树&#xff0c;部门树&#xff0c;菜单树等。只要是需要开发这种树状结构的需求&#xff0c;我们都可以使用组合模式来完成。 本篇将结合组合模式与Mysq…...

恒林家居引入纷享销客CRM系统,领跑家居行业营销数字化进程

近日&#xff0c;恒林家居股份有限公司&#xff08;&#xff08;股票代码&#xff1a;603661以下简称为“恒林家居”&#xff09;携手纷享销客在湖州召开了CRM项目启动会。双方领导及核心项目人员齐聚一堂&#xff0c;展开了深度交流并达成了重要共识。 作为家居行业的领军企业…...

多线程-锁的种类

1 作用 Java中的锁主要用于保障多并发线程情况下数据的一致性。在多线程编程中为了保障数据的一致性&#xff0c;我们通常需要在使用对象或者方法之前加锁&#xff0c;这时如果有其他线程也需要使用该对象或者该方法,则首先要获得锁,如果某个线程发现锁正在被其他线程使用,就会…...

Hive 和 HDFS、MySQL 之间的关系

文章目录 HiveHDFSMySQL三者的关系 Hive、MySQL 和 HDFS 是三个不同的数据存储和处理系统&#xff0c;它们在大数据生态系统中扮演不同的角色&#xff0c;但可以协同工作以支持数据管理和分析任务。 Hive Hive 是一个基于 Hadoop 生态系统的数据仓库工具&#xff0c;用于管理和…...

【面试题】如何实现数组去重的?有几种方式?

前端面试题库 &#xff08;面试必备&#xff09; 推荐&#xff1a;★★★★★ 地址&#xff1a;前端面试题库 【国庆头像】- 国庆爱国 程序员头像&#xff01;总有一款适合你&#xff01; 1. 方法一&#xff1a;利用两层循环数组的splice方法 通过两层循环对数组…...

使用TCP方式拉取Canal数据

1 Canal对接Kafka联调 1.1 配置修改 canal.properties 修改 zk&#xff1a; canal.zkServers 10.51.50.219:2181instance.properties 开启配置项&#xff1a; canal.mq.dynamicTopic 是 Canal 的 MQ 动态 Topic 配置项&#xff1a; test_javaedge_01 是kafka 的 topicte…...

Docker安装mysql实战说明

安装前准备 在安装MySQL之前&#xff0c;你需要确保已经正确安装和配置了Docker&#xff0c;可以通过以下命令检查Docker是否已正确安装&#xff1a; docker --version如果Docker已经成功安装&#xff0c;你将看到Docker的版本信息。 下载mysql的镜像 Docker Hub是一个存储…...

前端DOM操作精解:基础概念、方法与最佳实践

引言 本文将深入探讨前端开发中的DOM操作&#xff0c;包括基础概念、常用方法和最佳实践。通过清晰易懂的解释和实际案例分析&#xff0c;我们将一起了解如何最有效地使用DOM操作来提升前端应用的用户体验。 一、DOM操作入门 在深入探讨DOM操作之前&#xff0c;我们先要理解…...

python sorted函数详解2023.9.11

sorted函数详解 1. 输入和输出2. key传入函数 1. 输入和输出 help(sorted) Help on built-in function sorted in module builtins: sorted(iterable, /, *, keyNone, reverseFalse)Return a new list containing all items from the iterable in ascending order.A custom k…...

Spring Reactive:响应式编程与WebFlux的深度探索

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…...

Qt应用开发(基础篇)——工具按钮类 QToolButton

一、前言 QToolButton类继承于QAbstractButton&#xff0c;该部件为命令或选项提供了一个快速访问按钮&#xff0c;通常用于QToolBar中。 按钮基类 QAbstractButton QToolButton是一个特殊的按钮&#xff0c;一般显示文本&#xff0c;只显示图标&#xff0c;结合toolBar使用。它…...

【数据结构面试题】栈与队列的相互实现

目录 1.队列实现栈 1.1创建栈 1.2判断是否为空 1.3入栈 1.4出栈 1.5获取栈顶元素 1.6完整代码 2. 用栈实现队列 2.1创建队列 2.2判断是否为空 2.3入队列 2.4出队列 2.5获取队头元素 2.6完整代码 1.队列实现栈 用队列实现栈https://leetcode.cn/problems/impleme…...

华为认证和红帽认证哪个比较好考呢

华为认证和红帽认证的考试难度、学习内容、适用范围等方面都有所不同&#xff0c;因此哪个比较好考要视具体情况而定&#xff1a; 考试难度&#xff1a;红帽认证的考试难度较高&#xff0c;需要考生具备较高的技术水平和实践经验&#xff1b;而华为认证则更注重基础知识的考察…...

[Java]_[中级]_[使用okhttp3和HttpClient代理访问外部网络]

场景 Java的http库常用的有HttpClient和Okhttp3, 如果公司有限制网络访问&#xff0c;需要代理才可以访问外网&#xff0c;那么如何使用代理Proxy&#xff1f; <dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient<…...

ubuntu 20.04 docker 安装 mysql

要在Ubuntu 20.04上安装Docker并运行MySQL容器&#xff0c;您可以按照以下步骤操作&#xff1a; 1.更新系统包列表&#xff1a; sudo apt update2.安装Docker&#xff1a; sudo apt install docker.io3.启动Docker服务并设置其开机自启动&#xff1a; sudo systemctl start…...

C++在C语言基础上的优化

目录 一、命名空间 1、命名空间的定义 2、命名空间的使用 二、输入&输出 三、缺省参数 1、缺省参数的概念 2、缺省参数的分类 四、函数重载 五、引用 1.引用的概念 2.引用的特性 3、引用和指针的区别 六、内联函数 七、基于范围的for循环 一、命名空间 命名空…...

分享一个python实验室设备预约管理系统 实验室设备维修系统源码 lw 调试

&#x1f495;&#x1f495;作者&#xff1a;计算机源码社 &#x1f495;&#x1f495;个人简介&#xff1a;本人七年开发经验&#xff0c;擅长Java、Python、PHP、.NET、微信小程序、爬虫、大数据等&#xff0c;大家有这一块的问题可以一起交流&#xff01; &#x1f495;&…...

兵者多诡(HCTF2016)

环境:https://github.com/MartinxMax/CTFer_Zero_one 题目简介 解题过程 登录首页 提交png图片上传抓包&#xff0c;可以看到是向upload文件提交数据 在fp参数中尝试伪协议读取home.php文件 http://127.0.0.1:88/HCTF2016-LFI/home.php?fpphp://filter/readconvert.base64…...

文化传播公司网站建设需求/属于seo网站优化

最近在学分治法&#xff0c;涉及到很多问题都能用分治法解决&#xff0c;汉诺塔&#xff0c;快排&#xff0c;归并排序等&#xff0c;下面是解决最大字串问题。 1&#xff0c;用分治法解决&#xff0c;下面还介绍不用分治解决的另一种方法。 #include<stdio.h> //分治法…...

河南旅游网站建设/百度竞价推广屏蔽软件

alert():提示对话框 confirm():确认对话框&#xff0c;返回一个boolean类型的值&#xff0c;点击确定返回true&#xff0c;点击取消返回false prompt():用于显示提示用户输入的对话框&#xff0c;点击确定返回输入值&#xff0c;点击取消返回null <!DOCTYPE html> <…...

wordpress5.0.2/友联互换

ONVIF开发经验总结 ONVIF开发经验总结....................................................................................................... 1 一、 利用gsoap2.8.14生成Onvif相关源代码................................................................ 2 1. 生…...

中企动力做网站的优势/网站快速排名公司

在Android编程的过程中&#xff0c;如果在Activity中某个操作会运行比较长的时间&#xff0c;比如&#xff1a;下载文件。这个时候如果在主线程中直接下载文件&#xff0c;会造成Activity卡死的现象&#xff1b;而且如果时间超过5秒&#xff0c;会有ANR报错。在这种情况下&…...

现在个人做网站还能盈利吗/怎么做推广

前言 太悲伤了啊实在是&#xff0c;T4打错一个地方少了70分&#xff0c;直接从比较稳一点的分数一下子掉到了及格线边缘/kk 比赛过程 先是很草率地看了一眼题 T1直接切&#xff0c;然后就感觉飘了&#xff1f;&#xff1f; T2看了题&#xff0c;然后也是蛮快地就打完了&…...

wordpress 多店铺/北京seo网站开发

步骤&#xff1a; 1&#xff0c;客户端向yarn的RM提交作业请求&#xff0c;RM进行权限等验证&#xff0c;生成jobid、资源上传路径&#xff0c;将jobId和资源上传路径返回给客户端&#xff1b; 2&#xff0c;客户端将jar包、配置文件、第三方包等文件上传到指定的hdfs路径后&…...