mybatis的增删改查运用
目录
一、总览图
二、运用
一、总览图
代码总览图
数据库总览图
二、运用
数据库的一张表对应一个封装类,一个mapper接口,一个mapper.xml文件, 一个实现类。表中的增删改查都在里面编写
但是配置xml文件整个数据库只要一个就好了
1.pom.xml文件根据创建的maven或者spring项目去配置
2.mybatis统一配置xml文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""https://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><environments default="development"><environment id="development"><transactionManager type="JDBC"/><dataSource type="POOLED"><!--数据库信息--><property name="driver" value="com.mysql.cj.jdbc.Driver"/><!--改:数据库的固定连接,老版本不用cj--><property name="url" value="jdbc:mysql://localhost:3306/mishop?useSSL=false&serverTimezone=UTC"/><!--mishop改:数据库的要连接的库--><property name="username" value="root"/><!--改:数据库的账号--><property name="password" value="root"/><!--改:数据库的密码--></dataSource></environment></environments><mappers><!--加载映射文件--><mapper resource="com/project/Mapper/AdminMapper.xml"/><!--改:把映射文件的源根路径复制到这里--></mappers>
</configuration>
3.pojo里面的封装类(属性对应数据库表中的属性)
ps:里面要含有set、get方法,有无参构造方法、toString
package com.project.pojo;public class Admin {private Integer adminId;private String adminName;private String adminPwd;private Integer adminDisable;public Integer getAdminId() {return adminId;}public void setAdminId(Integer adminId) {this.adminId = adminId;}public String getAdminName() {return adminName;}public void setAdminName(String adminName) {this.adminName = adminName;}public String getAdminPwd() {return adminPwd;}public void setAdminPwd(String adminPwd) {this.adminPwd = adminPwd;}public Integer getAdminDisable() {return adminDisable;}public void setAdminDisable(Integer adminDisable) {this.adminDisable = adminDisable;}public Admin(Integer adminId, String adminName, String adminPwd, Integer adminDisable) {this.adminId = adminId;this.adminName = adminName;this.adminPwd = adminPwd;this.adminDisable = adminDisable;}public Admin() {}@Overridepublic String toString() {return "Admin{" +"adminId=" + adminId +", adminName='" + adminName + '\'' +", adminPwd='" + adminPwd + '\'' +", adminDisable=" + adminDisable +'}';}
}
4.SQL语句接口映射文件(小蓝鸟)
ps:红蓝小鸟插件(作用:方便好看)
package com.project.Mapper;import com.project.pojo.Admin;import java.util.List;
public interface AdminMapper {//增// void (封装类 封装类小写)//括号要用封装类是因为表里面那行数据都要进行增加void add (Admin admin);//改// void 自定义名称 (封装类 封装类小写);//括号要用封装类是因为表里面那行数据都要进行增加void updateId(Admin admin);//查全部// list <pojo封装类> 自定义全部查询();//因为是查询全部,所以括号里面不用加任何参数List<Admin> selectAll();//查单个//list <pojo封装类> 自定义全部查询(自定义参数根据id查询);List<Admin> selectId(int id);//删// void 自定义名称 (自定义参数为要根据id进行删除);void deleteId(int id);
}
5.编写SQL语句映射的xml文件(小红鸟)
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""https://mybatis.org/dtd/mybatis-3-mapper.dtd"><!--sql映射查询方法--><!--namespace=对应接口的全部路径-->
<mapper namespace="com.project.Mapper.AdminMapper"><!--新增的SQL语句 --><!--第一行:insert新增标签 id="接口定义的名字" parameterType="封装类的全限名" --><!--第二行:SQL语句-自增id用null,其他的用#{封装类的属性名} ,.... --><insert id="add" parameterType="com.project.pojo.Admin">insert into admin values (null,#{adminName},#{adminPwd},#{adminDisable})</insert><!--删除的SQL语句 --><!-- 第一行:delete删除标签 id="接口定义的名字" parameterType="封装类的全限名" --><!--第二行:SQL语句-根据id(封装的属性)进行删除 --><delete id="deleteId" parameterType="com.project.pojo.Admin">delete from admin where adminId=#{adminId}</delete><!--修改的SQL语句 --><!--第一行:update修改标签 id="接口定义的名字" parameterType="封装类的全限名" --><!-- 第二行:SQL语句-因为要修改的是那行的全部数据,所以封装的属性都要一一对应写出来 --><update id="updateId" parameterType="com.project.pojo.Admin">update admin set adminName=#{adminName},adminPwd=#{adminPwd},adminDisable=#{adminDisable} where adminId=#{adminId}</update><!--查询全部的SQL语句 --><!-- 第一行:select查询标签 resultType="封装类的权限定名" --><select id="selectAll" resultType="com.project.pojo.Admin">select * from admin</select><!-- 查询单个的SQL语句 如上 --><select id="selectId" resultType="com.project.pojo.Admin">select * from admin where AdminId=#{adminId}</select></mapper>
6.实现类(要运行哪个就直接从注释里面提取出来就好)
package com.project.pojo;import com.project.Mapper.AdminMapper;
import lombok.extern.slf4j.Slf4j;
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 AdminImpl {public static void main(String[] args) throws IOException {//1.加载mybatis连接文件(核心配置文件)String resource = "mybatis-config.xml";//这是连接数据库的InputStream inputStream = Resources.getResourceAsStream(resource);//固定写法SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);//固定写法//2.获取sqlSessionFactory对象--固定的写法SqlSession sqlSession = sqlSessionFactory.openSession();//3.执行sql语句AdminMapper adminMapper = sqlSession.getMapper(AdminMapper.class);//以下这些用哪个执行哪个/* // 添加的方法Admin admin = new Admin();admin.setAdminName("wangwu");admin.setAdminPwd("8888");admin.setAdminDisable(54);//Mapper接口里面的添加方法adminMapper.add(admin);*//* Mapper接口里面的删除方法adminMapper.deleteId(14);*//* 修改的方法Admin admin = new Admin();admin.setAdminId(7);admin.setAdminName("王五");admin.setAdminPwd("123456");admin.setAdminDisable(5555);//Mapper接口里面的修改方法adminMapper.updateId(admin);*//* 查询单个的方法,Mapper接口里面的查询方法List<Admin> selectId = adminMapper.selectId(5);System.out.println(selectId);*//* //查询全部的方法List<Admin> selectAll = adminMapper.selectAll();System.out.println(selectAll);*///提交sqlSession.commit();//6.释放资源sqlSession.close();}}
总结:路是一步一步慢慢走的,饭是一口一口吃的,每天进步,打好基础就好
有什么问题都可以评论区留言,看见都会回复的
如果你觉得本篇文章对你有所帮助的,多多支持吧!!!
点赞收藏评论,抱拳了!
相关文章:
mybatis的增删改查运用
目录 一、总览图 二、运用 一、总览图 代码总览图 数据库总览图 二、运用 数据库的一张表对应一个封装类,一个mapper接口,一个mapper.xml文件, 一个实现类。表中的增删改查都在里面编写 但是配置xml文件整个数据库只要一个就好了 1.…...
centos8安装docker运行java文件
本文由个人总结,如需转载使用请标明原著及原文地址 这里是基于我前一篇搭的centos8服务器做的,如果yum baseos源或appstream源有问题可以去看看前一篇 https://blog.csdn.net/qq_36911145/article/details/129263830 1.安装docker 1.1配置docker yum…...
Docker容器化部署.net core API
1.为API集成Docker环境。(VS自带,傻瓜式操作) 1.1 点击项目,右键,添加,选择Docker支持 1.2 找到项目根目录中的Dockerfile文件,这是VS刚刚帮我们自动生成的。进入和做如图标红地方修改。 把文…...
springcloud 服务调用feign、熔断hystrix、网关gateway
回归cloud的学习,对于springcloud的架构与原理以及性能的分析我们都在之前的文章里写过:springcloud架构的认识我们之前测试过eureka服务注册功能,它能很好的保存服务之间的通讯关系,是维系微服务通讯网之间的电话本,同…...
《C++ Primer》 第十二章 动态内存
《C Primer》 第十二章 动态内存 动态内存与智能指针 shared_ptr允许多个指针指向同一个对象;unique_ptr则“独占”所指向的对象,weak_ptr指向shared_ptr所管理的对象。这三种类型都定义在memory头文件中。 shared_ptr类:默认初始化的智能…...
多个关键字用or、and、包含、不包含动态拼接为正则表达式和SQL查询条件
目录前言校验思路1、存储方式2、实现图一实现图二实现结果最后前言 不知道大家有没有做过这种需求:在某字符串中,根据多个关键字去判断这串字符串是否满足条件。如下图: 亦或是 如果说要根据图二的关键字去数据库中查询符合条件的数据&a…...
初始Linux操作系统
个人简介:云计算网络运维专业人员,了解运维知识,掌握TCP/IP协议,每天分享网络运维知识与技能。座右铭:海不辞水,故能成其大;山不辞石,故能成其高。个人主页:小李会科技的…...
【算法数据结构体系篇class12、13】:二叉树
一、判断二叉树是否是完全二叉树/*** 判断二叉树是否是完全二叉树** //判断层序遍历过程如果节点有右子树 没有左子树 那么就不是完全二叉树* //判断层序遍历过程如果遇到第一个节点是没有左或右子树的,也就是只有一个子节点或者没有,那么再往后层序遍历…...
数字IC手撕代码--联发科(总线访问仲裁)
题目描述当A、B两组的信号请求访问某个模块时,为了保证正确的访问,需要对这些信号进行仲裁。请用Verilog实现一个仲裁器,对两组请求信号进行仲后,要求:协议如图所示,请求方发送req(request&…...
白盒测试复习重点
白盒测试白盒测试之逻辑覆盖法逻辑覆盖用例设计方法1.语句覆盖2.判定覆盖(分支覆盖)3.条件覆盖4.判定条件覆盖5.条件组合覆盖6.路径覆盖白盒测试之基本路径测试法基本路径测试方法的步骤1.根据程序流程图画控制流图2.计算圈复杂度3.导出测试用例4.准备测试用例5.例题白盒测试总…...
学习C++这几个网站足矣
文章目录cppreferencecplusplusquick-bench[C 之父的网站](https://www.stroustrup.com/bs_faq.html)C提案[Cpp Core Guidelines](http://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines)[C Super-FAQ](https://isocpp.org/faq)[learn c](https://www.learncpp.com/)[A…...
第十四届蓝桥杯模拟赛(第三期)——C语言版
1.找最小数 问题描述: 请找到一个大于 2022 的最小数,这个数转换成十六进制之后,所有的数位(不含前导 0)都为字母(A 到 F)。 请将这个数的十进制形式作为答案提交。 #include <stdio.h> int main(…...
Flutter Button 实例
大家好,我是 17。 在上篇文章 使用 Flutter Button 介绍了如何修改 button 的样式,本文来具体实践一下。 本文列举一些常用的 button 效果,以便在用到的时候方便使用。因为 ElevatedButton 最常用,所以大多以 ElevatedButton 举…...
好玩的docker项目,盒子刷的海思nas,挂载外接硬盘。qb种子
玩法思路(5条消息) 群晖qb下载,tr辅种_屿兮的博客-CSDN博客_群晖辅种qbittorrent简介及设置_哔哩哔哩_bilibiliqb下载器下载Transmission最好用的BT(PT)下载神器/超简单上手教你在NAS轻松部署/告别简陋三步让你升级全中文最新Web界面(BT下载/PT下载/NAS/…...
RabbitMQ的使用
1.初识MQ1.1.同步和异步通讯微服务间通讯有同步和异步两种方式:同步通讯:就像打电话,需要实时响应。异步通讯:就像发邮件,不需要马上回复。两种方式各有优劣,打电话可以立即得到响应,但是你却不…...
Selenium如何隐藏浏览器页面?
Selenium隐藏浏览器页面 背景 在工作,学习中,我们常常会使用selenium来获取网页上的数据,编完完整程序之后,实现真正意义上的自动化获取,此时我们会发现在运行中往往会弹出浏览器页面,在调试过程中&…...
基于Ant DesignPro Vue实现通过SpringBoot后台加载自定义菜单- 前后端分离
基于Ant DesignPro Vue实现通过SpringBoot后台加载自定义菜单- 前后端分离 本文想基于Ant DesignPro Vue构建的前端SpringBoot实现的后端接口服务,实现前后端分离开发和独立运行,业务场景是登录认证,认证成功后返回该用户相应权限范围内可见的…...
Acwing---843. n-皇后问题
n-皇后问题1.题目2.基本思想3.代码实现1.题目 n−皇后问题是指将 n 个皇后放在 nn 的国际象棋棋盘上,使得皇后不能相互攻击到,即任意两个皇后都不能处于同一行、同一列或同一斜线上。 现在给定整数 n,请你输出所有的满足条件的棋子摆法。 …...
彻底搞清楚内存泄漏的原因,如何避免内存泄漏,如何定位内存泄漏
作为C/C开发人员,内存泄漏是最容易遇到的问题之一,这是由C/C语言的特性引起的。C/C语言与其他语言不同,需要开发者去申请和释放内存,即需要开发者去管理内存,如果内存使用不当,就容易造成段错误(segment fa…...
自动驾驶目标检测项目实战——基于深度学习框架yolov的交通标志检测
自动驾驶目标检测项目实战——基于深度学习框架yolov的交通标志检测 目前目标检测算法有很多,流行的就有faster-rnn和yolov,本文使用了几年前的yolov3框架进行训练,效果还是很好,当然也可以使用更高版本的Yolov进行实战。本代码使…...
flink兼容性验证
flink介绍:https://blog.csdn.net/weixin_43563705/article/details/107604693 一、安装启动 安装flink及其依赖 yum install java-1.8.0-openjdk curl tar mkdir -p /usr/local/flink wget https://mirrors.aliyun.com/apache/flink/flink-1.16.1/flink-1.16.1-bi…...
智慧工厂数字孪生可视化监测系统有效提升厂区安全管控效力
我国制造业正处于产业升级的关键时期,基于数据进行生产策略制定与管理是大势所趋,而数据可视化以更直观的方式成为数据分析传递信息的重要工具。 深圳华锐视点通过三维可视化手段对工厂各类设备进行三维建模,真实复现设备设施外观、结构、运转…...
c++中基本类型详细解释外加基本运算规则
👀👀#c中包括算数类型和空类型。 类型含义wchat_t宽字符bool布尔类型char字符chat16_tunicode字符chat_32unicode字符short短整型int整形long长整型longlong长整型float单精度浮点型double双精度浮点型longdouble扩展精度浮点型 👀…...
扬帆优配“机器人+”方案加码产业发展,这些股有望高增长
“机器人”发明新需求,2022年中国机器人市场规模约为174亿美元。 美国时刻3月1日,特斯拉在得克萨斯州超级工厂举办投资者日活动,展示了人形机器人Optimus的视频,更夸大的是,视频中的机器人好像在制作另一个机器人&…...
推送投票制作微信推送里投票制作教程在线投票活动制作
近些年来,第三方的微信投票制作平台如雨后春笋般络绎不绝。随着手机的互联网的发展及微信开放平台各项基于手机能力的开放,更多人选择微信投票小程序平台,因为它有非常大的优势。1.它比起微信公众号自带的投票系统、传统的H5投票系统有可以图…...
【架构师】跟我一起学架构——微服务分层监控
博客昵称:架构师Cool 最喜欢的座右铭:一以贯之的努力,不得懈怠的人生。 作者简介:一名Coder,软件设计师/鸿蒙高级工程师认证,在备战高级架构师/系统分析师,欢迎关注小弟! 博主小留言…...
Linux:https静态网站搭建案例
目录介绍httpshttps通信过程例介绍https 整个实验是在http实验基础上进行的 因为http协议在传输的时候采用的是明文传输,有安全隐患,所以出现了https(安全套接字层超文本传输协议) HTTPS并不是一个新协议, 而是HTTP…...
前端css整理
如何水平垂直居中一个盒子? 1.已知高度:子盒子设置 display: inline-block; 父盒子设置 line-height 等于高度实现垂直居中;使用 text-align:center实现水平居中 2.父盒子 display:flex; align-items:center;justify-content:center; 3.定位&…...
混凝土搅拌站远程监控解决方案
一、项目背景 随着大规模的基础设施建设,对混凝土搅拌设备的需求量日益增加,对其技术指标的要求也日益提高,其技术性能将直接关系到工程的质量和使用寿命。而混凝土生产的质量是在生产过程中形成的,而非最终强度的检测。混凝土生…...
Spark SQL 学习总结
文章目录(一)Spark SQL(二)SParkSession(三)DataFrame常见算子操作(四)DataFrame的sql操作(五)RDD转换为DataFrame(1)反射方式&#x…...
房产网站制作找哪家/全球最牛的搜索引擎
helloworld 步骤 编写前端代码编写后端端代码(略)添加菜单 配置权限官方文档跳转 笔记 添加菜单前端代码 <template><div>{{ msg }}</div> </template><script>import {getAction} from /api/manageexport default {d…...
建网站的流程/微信软文广告经典案例
function dbc2sbc(obj){ var str obj.value; var result""; for(var i0;i<str.length;i) { code str.charCodeAt(i);//获取当前字符的unicode编码 if (code > 65281 && code < 65373)//在这个unicode编码范围中的是所有的英文字母已经各种字符 { …...
javaweb做视频网站难吗/百度搜索下载app
终端命令 启动MongoDB服务: sudo mongod 报出如下错误,表示默认的存储数据目录 /data/db 不存在: [initandlisten] exception in initAndListen: 29 Data directory /data/db not found., terminating 解决方法: 创建 /data目…...
南昌网站建设公司有哪些/快速优化系统
linux环境 centOS6.8 本文采用tar包的方式部署es 准备jdk8的环境 5.4.0的es依赖jdk8及以上版本 下载linux版的jdk jdk-8u121-linux-x64.tar.gz tar -zvxf jdk-8u121-linux-x64.tar.gz//修改环境变量vim /etc/profile//添加如下JAVA_HOME/usr/java/jdk1.8.0_121export CLASSPATH…...
网站 技术/100个成功营销策划案例
Logstash配置文件 Logstash有两种配置文件:管道配置文件,它定义Logstash处理管道,以及设置文件,它指定控制Logstash启动和执行的选项。 管道配置文件 在定义Logstash处理管道的各个阶段时,你将创建管道配置文件&#x…...
湖南建设厅网站首页/沪深300指数基金排名
小程序中的跳转方式: 1.toSearch(e){// console.log(e)wx.navigateTo({url: ../../pages/search/index,})}2.用navigator标签中的url进行跳转 传参的时候写在后面 <navigator url"../../pages/fdetail/index?id{{item.id}}" class"ab" wx:…...