【SSM面向CRUD编程专栏 8】一篇博客快速上手使用MyBatis进行CRUD

 

🛫更多ssm知识见SSM_面向CRUD编程专栏

🚕本博客总结自黑马程序员的ssm框架视频

🚒博主对于该知识尚在学习阶段

🚄如果发现存在问题请毫不吝啬的指出

🚀🚀扎哇太枣糕的博客主页🚀🚀

目录

1 MyBatis初识

1.1 MyBatis的开发步骤

1.2 mapper映射文件:

1.3 核心配置文件

2 MyBatis的dao层(mapper层)实现

2.1 代理开发方式

2.2 映射文件进阶之动态sql

2.3 核心配置文件进阶

3 MyBatis多表操作

4 MyBatis实现注解开发


1 MyBatis初识

        下面都是官方的解答有些过于的生硬,按我个人理解就是MyBatis框架就是用来代替jabcTmplate的一个巨巨巨好用的持久层框架,其底层封装的东西比较多,所以开发起来就比较快速。MyBatis是一个基于Java的持久层框架,它的内部封装了jdbc使得开发者只需要关注于SQL语句本身,而不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。MyBatis通过xml或者注解的方式将要执行的各种statement配置起来,并通过Java对象和statement中的SQL的动态参数进行映射生成需要执行的SQL语句。最后MyBatis框架执行SQL语句并将结果映射成Java对象并返回,采用ORM(将实体类与数据库表进行映射)思想解决了实体与数据库映射的问题,对jdbc进行封装屏蔽了jdbc底层访问的细节直接完成数据库持久化操作。

1.1 MyBatis的开发步骤

        MyBatis后期结合spring框架进行开发还是有一些小不同的,以下的开发步骤知识为了快速入门而学习,由简入难的学习步骤更加有利于知识点进行掌握。

第一步:导入相关依赖

第二步:创建实体类

第三步:创建mapper映射文件

 第四步:创建核心配置文件

测试类及结果:

1.2 mapper映射文件:

映射文件包含的内容                    

增删改查操作

        原始的jdbc默认事务完成之后进行提交,MyBatis的事务默认完成之后不提交。所以当数据进行增删改操作时,必须使用sqlsession.commit()进行手动提交。或者调用openSession方法创建sqlSession对象的时候传参为true,意味着每次更改自动提交。

    

     

     

1.3 核心配置文件

🤔environments标签

  • transactionManager标签的Type值     
    • JDBC:直接使用JDBC的提交和回滚设置,依赖于从数据源得到的连接来进行事务的管理
    • MANAGED:几乎不用,了解即可
  • dataSource标签的Type值
    • UNPOOLED:不使用连接池,数据库的连接随着使用创建和释放
    • POOLED:使用连接池,创建一次,随用随取
    • JNDI:几乎不用,了解即可

 😏Properties标签 

        用于加载外部的properties文件,获得数据源参数信息${}进行引用,配合上面的DataSource标签进行使用

😑typeAliases标签

        为java类定义一个别名,这样的话就可以在mapper映射文件中使用别名指定参数类型和结果类型了,方便操作。

⚠   核心配置文件中那么多标签是有顺序的,如果不按照规定的顺序配置标签的话,就会导致文件报错!!!

⚠    除了自定义别名以外,MyBatis框架已经为一些常用类型设置好了别名,比如int、string、long、double………

 😲mappers标签

        用于加载mapper映射文件,暂时只用学习相对路径加载的这一种

2 MyBatis的dao层(mapper层)实现

2.1 代理开发方式

        Mapper代理开发方式只需要编写Mapper接口,由MyBatis框架根据接口中定义的方法通过反射创建出相应的代理对象和接口的实现类方法。要想完成以上开发,需要遵循以下规范:

  • 接口的全限名和mapper映射文件中的namespace相同
  • 接口中方法名和mapper映射文件中的每个mapper标签的子标签的id相同
  • 接口中方法的参数类型和mapper映射文件中的每个mapper标签的子标签的parameterType相同
  • 接口中方法的返回值和mapper映射文件中的每个mapper标签的子标签的resultType相同

开发步骤:

        🥓代理开发最主要的就是上面的四个规范,只要将理解并完成规范之后,开发就会异常的快且方便

第一步:导依赖坐标 

第二步:编写实体类 

第三步:编写核心配置文件和数据源配置的properties文件

第四步:对比着接口配置mapper映射文件

测试类及其测试结果:

2.2 映射文件进阶之动态sql

         上面的这种SQL语句写法相当一一个精确匹配,但凡三个参数少任意一个都会造成这么一个问题,就是没有匹配的结果输出。但是一般的业务情况下如果参数少了一个的话就认为这个参数可以是任意值,也就相当于模糊匹配的概念。要想完成这个功能就需要使用动态SQL语句,也就是使用标签进行。

🍕<where>和<if>标签

         <if>标签实际上就是对test属性值的条件判断,只有当条件满足了才会将标签内部的语句拼接到上面的select语句中,如果都不满足就会查询所有,有几个条件满足都会拼接到where条件限制,where条件限制不固定就是动态SQL语句的由来。

🍔<foreach>标签

        <foreach>标签实际上就是可以拼接SQL语句,有前后的SQL语句成分,有中间的字段值(集合或数组)和分隔符

🌭<sql>片段抽取标签

2.3 核心配置文件进阶

🌮typeHandlers标签

        一些情况下我们会有这样的一个业务需求:java中的数据类型与要存放到数据库中的类型不一致,或者数据库中的数据类型和我们需要获取的类型不一致,这时候就需要我们使用自定义的类型处理器了。typeHandlers标签就是用于在核心配置文件中对自定义的类型处理器进行注册使用,于是自定义类型处理器的使用就有两个比较重要的步骤定义处理器类和核心配置文件注册。

        下面的案例就是java中是一个Date类型的数据,需要将date转成时间毫秒值存储到数据库中,从数据库中取出时还必须是Date类型。

定义处理器类

 核心配置文件注册

🍜plugins标签

        MyBatis可以使用第三方的插件进行功能的拓展,plugins标签就是对拓展功能的注册

比如说使用分页插件查询数据库信息

第一步:导入分页插件的相关依赖

第二步:核心配置文件配置分页插件第三步:测试类中设置分页参数,并获取相关参数

        核心配置文件中的标签配置是遵循以下顺序的,如果顺序改变的话会导致报错,且红框框住的是相比较而言重要的,且前面都讲过

3 MyBatis多表操作

        表与表之间有三种对应关系:一对一、一对多、多对多,加下来让我们依次学习一下这三种关系该的表查询如何操作

🥩一对一

一张订单唯一对应着一个用户

第一步:首先要有两个表和对应的实体类,两个表之间还要有一个外键进行表之间的连接

第二步:对应着mapper接口写mapper映射文件 第三步:配置核心配置文件 第四步:测试及结果

⚠   还有一种映射关系的配置方式,使用<association>标签可读性更加好

🍗多对一

一个用户对应着多张订单

第一步:首先要有两个表和对应的实体类,两个表之间还要有一个外键进行表之间的连接。仔细看,这个案例使用的表还是那两张表,但是实体类就不是上一个案例的实体类了。

 第二步:对应着mapper接口写mapper映射文件

 第三步:配置核心配置文件,这里的加载mapper映射文件和上一个案例不一样,其他配置都一样 

第四步:测试及结果,这里只查询用户id为1的订单,查询出来的所有订单在后面进行拼接,无法全部展示

🍖多对多

一个用户扮演多个角色,一个角色被多个用户扮演

 第一步:首先要有三个表和除了连接表之外的实体类,两个表之间还要有一个连接表进行角色表和用户表之间的连接。

 第二步:对应着mapper接口写mapper映射文件

 第三步:配置核心配置文件,这里的别名role1不一样,其他配置都一样 

 第四步:测试及结果

        学到这MyBatis基本上已经够用了,下面的注解开发只做了解,可以不学,注解开发与xml配置开发的不一样的地方就是,注解开发使用注解将mapper映射文件取而代之,在核心配置文件里mapper映射文件的加载换成包下注解扫描。

4 MyBatis实现注解开发

简单的CRUD注解开发

第一步:创建表和实体类、导入依赖 都不再演示

第二步:配置核心配置文件,加载配置文件、配置数据库、扫描包下注解

第四步:接口方法上加注解,省去mapper映射文件

第五步:和xml开发一样直接调用方法 

多表查询的注解开发

一对一

一张订单唯一对应着一个用户

第一步:创建user、order表和实体类、导入依赖 都不再演示

第二步:配置核心配置文件,加载配置文件、配置数据库、扫描包下注解,和上面的一样不再演示

第三步:接口方法上加注解,省去mapper映射文件

 第四步:和xml开发一样直接调用方法 

⚠   还有一种注解开发方法,和下面要学习的一对多的开发一样,提前了解一下

一对多

一个用户对应着多张订单

 第一步:创建user、order表和实体类、导入依赖 都不再演示

第二步:配置核心配置文件,加载配置文件、配置数据库、扫描包下注解,和上面的一样不再演示

第三步:一对多和一对一的拓展方法一样,需要借助其它方法进行查询,在rolemapper创建一个通过id查询的方法

 第四步:usermapper接口方法上加注解,省去mapper映射文件

第五步:和xml开发一样直接调用方法 

多对多

一个用户扮演多个角色,一个角色被多个用户扮演

 第一步:创建user、sys_user_role、sys_role表和User、Role实体类、导入依赖 都不再演示

 第二步:配置核心配置文件,加载配置文件、配置数据库、扫描包下注解

第三步:一对多和一对一的拓展方法一样,需要借助其它方法进行查询,在ordermapper创建一个通过id查询的方法

第四步:usermapper接口方法上加注解,省去mapper映射文件

第五步:和xml开发一样直接调用方法 

        至此,SSM框架的所有知识点都已经到达入门级别了,接下来就是将前面学的所有的知识点或者说框架进行一个整合,形成一个完整的ssm知识体系了。整合完成之后就是进行一个ssm框架项目的实操,让我们一起加油吧🤑🤑

                                                                                                                                                           

上一篇:【SSM面向CRUD编程专栏 7】springAop 事务控制_

下一篇:【SSM面向CRUD编程专栏 9】SSM框架整合

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

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

相关文章

【SSM面向CRUD编程专栏 9】SSM框架整合

&#x1f6eb;更多ssm知识见SSM_面向CRUD编程专栏 &#x1f695;本博客总结自黑马程序员的ssm框架视频 &#x1f692;博主对于该知识尚在学习阶段 &#x1f684;如果发现存在问题请毫不吝啬的指出 &#x1f680;&#x1f680;扎哇太枣糕的博客主页&#x1f680;&#x1f680; 目…

三万字速通SSM框架入门知识点,快速上手CRUD

&#x1f6eb;更多ssm知识见SSM_面向CRUD编程专栏 &#x1f695;本博客总结自黑马程序员的ssm框架视频 &#x1f692;博主对于该知识尚在学习阶段 &#x1f684;如果发现存在问题请毫不吝啬的指出 &#x1f680;&#x1f680;扎哇太枣糕的博客主页&#x1f680;&#x1f680; 目…

无法在web.xml或使用此应用程序部署的jar文件中解析绝对uri:[http://java.sun.com/jsp/jstl/core]

问题简介 本人是在进行一个ssm框架项目的编写的时候&#xff0c;在数据库中查询到所有的商品信息并返回到页面使用EL表达式进行展现&#xff0c;但是使用tomcat 9.0.58运行的时候报错会出现以下报错情况。 页面报错&#xff1a; 控制台报错&#xff1a; 解决方法 首先看看是不…

check the manual that corresponds to your MySQL server version for the right syntax to use near

首先判断自己是在什么情况下报的错&#xff0c;如果是MyBatis的SQL报错的话&#xff0c;建议直接点击目录跳转到MyBatis时SQL报错&#xff0c;避免浪费时间。如果本文能够对你有所帮助的话&#xff0c;还请在评论区多多支持 目录 &#x1f37b;运行SQL语句、SQL文件等报错 &…

MyBatis的逆向工程工具,自动生成数据库对应的POJO实体类、mapper接口、增删改查mapper.xml文件

下载MyBatis的逆向工程工具&#xff0c;并解压缩到一个不包含中文字符的文件夹下&#xff0c;我直接放到了D盘下&#xff0c;下载地址&#xff1a;MyBatis逆向工程工具下载 如何使用MyBatis的逆向工程工具 下载之后使用idea在一个新窗口中打开&#xff0c;选中工具文件之后&am…

『收藏向 期末SSM课设救急』 教你从搭建到测试运行手撸一个SSM项目实战,附带源码,前端页面、解析和一般遇到的问题(排雷)

&#x1f6eb;ssm知识学习见SSM_面向CRUD编程专栏 &#x1f695;本项目来自动力节点的【米米商城】 &#x1f692;博主对于该知识尚在学习阶段 &#x1f684;如果发现存在问题请毫不吝啬的指出 &#x1f680;&#x1f680;扎哇太枣糕的博客主页&#x1f680;&#x1f680; 项目…

【SpringBoot 2】(一)基础知识了解学习

&#x1f6eb;更多知识总结见SpringBoot 2专栏 &#x1f695;本篇知识点总结自尚硅谷雷神的视频 &#x1f692;博主对于该知识尚在学习阶段 &#x1f684;如果发现存在问题请毫不吝啬的指出 &#x1f680;&#x1f680;扎哇太枣糕的博客主页&#x1f680;&#x1f680; ​ 目录…

【SpringBoot 2】(二)快速入门案例HelloWorld

&#x1f6eb;更多知识总结见SpringBoot 2专栏 ( &#x1f695;本篇知识点总结自尚硅谷雷神的视频 &#x1f692;博主对于该知识尚在学习阶段 &#x1f684;如果发现存在问题请毫不吝啬的指出 &#x1f680;&#x1f680;扎哇太枣糕的博客主页&#x1f680;&#x1f680; ​ 目…

【SpringBoot 2】(三)SpringBoot相较于Spring的特点

&#x1f6eb;更多知识总结见SpringBoot 2专栏 &#x1f695;本篇知识点总结自尚硅谷雷神的视频 &#x1f692;博主对于该知识尚在学习阶段 &#x1f684;如果发现存在问题请毫不吝啬的指出 &#x1f680;&#x1f680;扎哇太枣糕的博客主页&#x1f680;&#x1f680; ​ 目录…

井通swtc能不能涨到2元_买一支2块到3块之间的股票,买几十万股吗?这样操作效果怎么样?...

有很多新股民有一种看法&#xff0c;认为高价股风险很大&#xff0c;那么可不可以买2到3元的低价股&#xff0c;是不是风险就很小&#xff0c;以后上涨的力度就会很大&#xff1f;这是很多股民都存在的一个误区&#xff0c;也是很多股市的所谓高手的误导&#xff0c;他们说&…

cad应用程序的组件中发生了未经处理的异常_什么是CAD/CAM?

与许多其他行业一样&#xff0c;牙科技术的生产阶段也越来越自动化。由于牙科实验室工作的价格已成为治疗计划和治疗的主要因素&#xff0c;因此自动化可以在西欧和美国等高薪地区实现更具竞争力的生产。现在&#xff0c;计算机技术的进步使高性价比的单件生产成为可能。近年来…

【SpringBoot 2】(四)详析SpringBoot的常用注解

&#x1f6eb;更多知识总结见SpringBoot 2专栏 &#x1f695;本篇知识点总结自尚硅谷雷神的视频 &#x1f692;博主对于该知识尚在学习阶段 &#x1f684;如果发现存在问题请毫不吝啬的指出 &#x1f680;&#x1f680;扎哇太枣糕的博客首页&#x1f680;&#x1f680; 目录 向…

苹果7手机严重卡顿_苹果手机仅配备4GB运存都不会卡顿,安卓系统为何要更多内存?...

原标题&#xff1a;苹果手机仅配备4GB运存都不会卡顿&#xff0c;安卓系统为何要更多内存&#xff1f;众所周知&#xff0c;安卓系统历经十余年的发展&#xff0c;目前最低的运行需求是8GB内存&#xff0c;如果是旗舰机的话还要标配12GB或更高。但是前几天刚发布的iPhone12&…

IntelliJ IDEA自动生成自定义的类注释和方法注释

目录 自定义的类注释 自定义方法注释 实现效果&#xff1a;不用手写即可自动生成如下图的类上注释和方法上的注释&#xff0c;我们只需要填写方法注释的参数和返回值文字描述即可&#xff0c;大大节省了代码开发的时间提高代码开发效率。 &#x1f315; 自定义的类注释 Fil…

violinplot如何看懂_一张图告诉你如何看懂个股大趋势

昨日在T0交易利好消息的影响下&#xff0c;券商股全线大幅高开&#xff0c;带动三大指数高开走高&#xff0c;科技题材股全线活跃&#xff0c;两市量能明显放大&#xff0c;形成量价齐升的良性态势&#xff0c;上证冲上2917&#xff0c;收在2915&#xff0c;创业板大涨3%以上&a…

jz指令是什么意思_S7-200 SMART 运动控制指令详解-电气阿伟带小白启程

大家好&#xff0c;我是工控阿伟&#xff0c;今天又跟大家见面了。学习需要坚持&#xff0c;需要钻研&#xff0c;做技术亦是如此&#xff0c;厚积才能博发。阿伟写程序都是自己测试使用过的&#xff0c;需要的可以借鉴&#xff0c;避免走弯路。S7-200 smart 运动控制指令由编程…

【SpringBoot 2】(五)自动配置简析源码 开发中小技巧

写在前面&#x1f6eb;更多知识总结见SpringBoot 2专栏 &#x1f695;本篇知识点总结自尚硅谷雷神的视频 &#x1f692;博主对于该知识尚在学习阶段 &#x1f684;如果发现存在问题请毫不吝啬的指出 &#x1f680;&#x1f680;扎哇太枣糕的博客首页&#x1f680;&#x1f680;…

jar包导出无法显示图片或者音乐_如何制作图片视频短片,配上音乐闪耀朋友圈!...

把图片制作成视频短片&#xff0c;再配上一首好听的音乐&#xff0c;发到朋友圈&#xff0c;不仅可以更具创意的分享自己的生活点滴&#xff0c;更能因您的创意获得一大票的赞哦&#xff01;看到别人分享自己制作的图片视频短片&#xff0c;是不是心痒痒也想做一个呢&#xff1…

【SpringBoot 2】(六)配置文件 web开发相关

写在前面&#x1f6eb;更多知识总结见SpringBoot 2专栏 &#x1f695;本篇知识点总结自尚硅谷雷神的视频 &#x1f692;博主对于该知识尚在学习阶段 &#x1f684;如果发现存在问题请毫不吝啬的指出 &#x1f680;&#x1f680;扎哇太枣糕的博客首页&#x1f680;&#x1f680;…

deepl windows_推荐一个为程序员深度开发的翻译插件DeepL

DeepL深度翻译器DeepL一个程序员的翻译神器&#xff0c;可能有人要问&#xff0c;市面上这么多的翻译插件这么多&#xff0c;我为毛要用你的。首先这个翻译神器可以实现多个翻译引擎的翻译&#xff0c;目前支持有道和google&#xff0c;下一步我会把最近特别流行的翻译软件Deep…