Mybatis
记录 每一个小细节,大的方面估计有很多人写,小的,精细的方面,还是得看小众博客主
DNCS高级工程师
真正的神秘人
展开
-
mybatis源码分析详解
根据我们的工厂类来分析整个源码,mybatis的底层就是JDBC,但是我们丝毫看不见他的影子,这其实都是mybatis’帮助我们把他做了上面这句话就是让mybatis的核心配置文件转换成流的形式inputStream但其实他与下面这句话的意义差不多但是这样指定路径是不对的,因为后面的路径需要指定如果想要他找到,就必须按文件的读取格式写入但是我们使用上面的那个,相当于会自动帮我们匹配相对路径下的文件这个就是使用了工厂的设计模式,工厂的设计模式的好处就是,我们之前创原创 2022-01-17 22:30:25 · 2200 阅读 · 0 评论 -
mybatis注解的使用
我们知道。我们可以通过接口和xml的映射,完成与数据库进行交互,但其实mybatis是支持注解的原创 2022-01-10 17:25:56 · 374 阅读 · 0 评论 -
mybatis中的一级和二级缓存,执行顺序,cache属性的应用
缓存就是将将项目中的少量数据存储到内存和磁盘中,用的时候直接从这里取,就不用再去数据库中找了,算是提高了整体的项目运行效率mybatis的缓存分为一级和二级缓存,其缓存的配置我们可以自行设置一级缓存就是sqlsession上的缓存,二级是在sqlsessionFactory(namespace)上的缓存,默认情况下,mybatis开启一级缓存,没有开启二级缓存,当数据量大的时候,可以借助一些第三方的缓存框架或者使用redis缓存来保存mybatis的二级缓存数据当进行一级缓存的时候,需要注意,如果是原创 2022-01-10 16:54:06 · 875 阅读 · 0 评论 -
resultMap和resultType的整体的区别和联系
在mybatis中,我们编写的sql语句的xml,的返回值类型有resultMap和resultType,那么在实际开发中他们又有什么区别和联系呢首先从查询上说,resultType适用于单表的查询操作是可以使用的resultMap适用于多表查询N+1,或者多表查询的sql语句在mybstis中,因为他是半自动化的ORM,其中应用了自动映射的方式,完成了数据库表中的字段实体类的字段相匹配但如果名字不配对的话,我们可以使用以下方法进行解决第一个就是通过sql语句,as,将数据库的字段在引用是改动原创 2022-01-10 11:05:53 · 408 阅读 · 0 评论 -
mybatis中的三种多表查询的方式详解,业务装配,N+1,多表查询的sql
这里写目录标题1、业务装配2、N+1延迟加载、懒加载3、多表sql加载1、业务装配整个查询的实质操作都是单表的查询只是使用业务代码,把单表的查询组装在一起案例:返回对象,我们要返回哪一个对象?这样我们得到了两个对象,为了达到效果,根据一个学生对应着一个班级,我们把班级的对象放到学生中需求2:在一个对象中存放多个对象2、N+1除了这个,还支持懒加载的方式延迟加载、懒加载延迟加载、懒加载因为可以叫按需加载示例:比如我们之前由原创 2021-12-30 17:51:12 · 690 阅读 · 0 评论 -
mybatis动态sql,条件判断详解示例
动态sql主要是解决我们进行条件查询时得应用,在之前我们需要对某个字段进行判断,直接在bao层实现类编写即可,因为它本身就是java类,写的Java代码,我们直接判断即可但是使用XML得时候,我们得sql是写在xml中的,这样就无法编写代码,那么就可以使用动态sql这里写目录标题1、if2、where1、ifif其中test属性使用的得就是ognl表达式,他在获取字段得时候,可以直接获取,不用编写#{}2、wherewhere标签,之前在拼接条件查询的字符,会通过where原创 2021-12-29 01:10:28 · 5372 阅读 · 0 评论 -
mapper的更多细节,日志配置、核心文件的配置等
利用mapper进行 简化日志的配置在日志中,我们可以在原来指定xml的namespace的路径,但是我们的接口以及xml都在一个路径下, 如果我们开发过程中,直接写成mapper的路径即可,但是要注意一点,这个路径只跟namespace映射路径有关,与包名无关除了日志需要繁琐的配置外,我们还需要配置xml,每一个xml文件我们都需要扫描,这样很麻烦,我们可以直接扫描这个包,进行mapper的xml的扫描,这种包扫描原理是是先扫描接口,然后根据接口去找相同名称的xml文件,使用包扫描注意以下3点接原创 2021-12-28 00:36:51 · 551 阅读 · 0 评论 -
mybatis自增主键回填
1、通用方式获取再添加SQL之前添加代码,使用select @@identity2、mybatis自带的获取自增的值直接写到添加的语句上方3、还有就是我们一般人考虑的话,因为新添加一个数据的时候,那么可以不可以以上两种方法我都不用,我先添加数据,添加完毕之后,我们在查出最大的那个id,同样也可以获取那个id,这个是不行的,因为我们在我们自己电脑上添加的时候,是一条一条数据添加的,没有外部因素干预,但在实际开发中,我们一定要注意并发问题,只要是并发,这种情况就造成信息 不准确。......原创 2021-12-24 15:49:43 · 790 阅读 · 0 评论 -
mybatis中的mapper代理模式的数据传参的应用
1、编写接口:设置参数为id,根据id查询数据如果传入了两个对象,那么就要考虑先是基础数据类型,再调用对象同时也可以再Java代码中添加别名,xml再根据别名调用即可再mybatis中最好不要出现重载的现象...原创 2021-12-24 15:01:17 · 191 阅读 · 0 评论 -
mybatis中的mapper代理的应用
问题分析:在我们之前的学习的基础的框架搭建,以及实现简易的更删改查,可以发现有很多缺点1、没有接口:那么就代表着程序的一个扩展性不高,2、查询时返回的不是对象就是集合,无法返回其他类型,比如int3、进行参数传入的时候,只能先添加到某一个集合中创建接口指定日志全路径代理的实现...原创 2021-12-23 00:52:05 · 67 阅读 · 0 评论 -
mybatis框架的搭建简单步骤,还有其他的各项配置说明,简单易懂,仅作为个人参考,不作为网络学习借鉴
这里写目录标题1、首先,2、连接数据,3、解析xml文件4、关闭资源5、日志的配置6、别名的配置7、导入属性文件8、sqlsession的三种查询方式9、条件查询10、模糊查询11、事务的提交1、首先,一般情况下,仍然是 需要创建一个普通的Java框架,在创建框架的时候,在scr的直接的目录下编写xml文档,也就是mybatis的核心配置文件主要是起到数据可连接池和后面的隐射文件2、连接数据,也就是我们之前写的一大堆的东西,都不用写了,但是sql在哪里写,我们之前的sql在da原创 2021-12-21 00:49:33 · 263 阅读 · 0 评论 -
ORM的个人简单理解以及持久化和持久层的简单理解、Hibernate的简单理解,mybatis 的好处通俗易懂
在没有接触框架前,我们大都是使用原生的servlet也就是JDBC模式,但是在编写的时候极其麻烦JDBC的缺点:需要手动的完成面向对象的Java语言、面向关系的数据库之间数据的转换,代码繁琐无技术含量,影响了开发效率。如图所示,查询是需要手动的将结果集的列数据转换为Java对象的属性;而添加操作时需要手动将Java对象的属性转换为数据库表的列字段。那么mybatis就很大程度的解决了这个问题首先我们要清楚,mybatis是半自动的ORM框架关于面向对象的Java语言、原创 2021-12-20 21:03:04 · 1283 阅读 · 0 评论 -
mybaits.xml文件约束,头部
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">原创 2021-10-15 13:46:20 · 162 阅读 · 0 评论 -
mybatis中的动态Sql略解,基础理解,为什么要使用动态sql,动态sql相比于传统sql的区别;仅作笔记,如有错误请及时指出
动态sql其实只要是解决我们传统用代码拼接sql语句的弊端,我们之前在使用Java代码进行动态拼接sql的时候,我们经常会注意的东西很多很多,比如我们要确定我们sql语句在拼接的时候,中间必须要有空格,完事还有很多引号,双引号单引号的循环套用,稍不留神就会给我们带来错误;而动态sql则是很好的解决了这个问题,我们在学习mybatis的时候,可以通过xml的形式编写sql语句通过标签的循环套用套用以及if、Where标签等对sql语句判断等等...原创 2021-10-06 15:52:55 · 314 阅读 · 0 评论 -
Mapper代理详解,Mapper代理的作用以及用法,结合之前写的mybatis框架讲解、mapper代理的好处
根据我的上一篇文章:点击跳转在我们之前写的映射文件中,我们的基础的构造已经完成差不多了,但是我们会发现我们使用集合都是mybatis给我们提供的接口,并且只能传递一个参数,如果传多个,还需要通过实体类或者是map进行传参,这样对代码的扩展性非常不好于是衍生出mapper代理(接口绑定)mapper其实就是有些类似于我们之前的jdbc中的dao层的接口使用mapper代理的好处1有接口 模块之间有规范了2参数的处理多样了,接口中的方法参数列表由我们自己决定3通过代理模式由mybatis提供接口原创 2021-09-28 00:01:18 · 1097 阅读 · 1 评论 -
Mybatis的简单介绍,什么是Mybatis框架
MyBatis 本是Apache的一个开源项目,后来转到了迁移到了Google Code,MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集;通过xml配置和映射来响应信息...原创 2021-09-26 20:40:58 · 77 阅读 · 0 评论 -
为什么要使用Mybatis框架?JDBC的缺点有哪些?
传统的jdbc框架已经足够我们显示效果了,包括数据的传入和传出,前后端的交互,反正基本的效果都实现出来了,那为什么还要使用mybatis框架呢?其实主要有以下几点:目录标题1、使用JDBC连接数据库没有办法实现java代码和SQL语句之间的解耦!2、使用JDBC连接数据库在接受查询的数据的时候非常费劲,特别影响开发效率3、JDBC连接数据库的效率比较低,我们需要自己使用连接池连接1、使用JDBC连接数据库没有办法实现java代码和SQL语句之间的解耦!我们在jdb原创 2021-09-26 20:36:37 · 1255 阅读 · 4 评论 -
Mybatis的xml映射文件,sql的模糊查询的实现(两种方式)占位符拼接,concat关键字
在xml文件中编写以下代码这里使用占位#{param1}进行占位 ,在sqlsession内对占位符进行赋值:全部代码:<!--根据模糊查询1--> <select id="select04" resultType="ban"> select * from ban where cname like #{param1} </select>List list = sqlSession.selectList(“a.f.原创 2021-09-20 20:30:24 · 626 阅读 · 0 评论 -
刚接触mybatis,很容易分不清#{id}和#{param1}的使用情况,本篇文章详解了两者的作用以及使用情况
下面是一位答题者-----木木子君主页-----给出的答案,很详细:那我再对这个问题进行扩展,再看完他的答案思路后,我有了一些思路,后又查阅资料,除了上面的情况歪,还有种情况,这里使用了与数据库相同的字段名,而不是param1,主要是因为,我们这边要想传递两个参数 ,而传递两个参数的方式有一个就是给是实体类对象赋值:比如那这个时候,sql语句中的#{cid}就会主动去找实体类中的cid;如果使用param的话,直接使用变量赋值即可...原创 2021-09-20 19:13:28 · 677 阅读 · 0 评论 -
mybatis中xml文件的#{param1}和#{属性名},比如#{id}的使用环境以及使用的时机情况
在刚接触mybatis的时候 ,有很多人经常搞不懂#{param1}和#{属性名}这两个的使用,到底是什么情况下使用哪个,下面进行解答基础数据类型使用#{param1},比如我们在后台直接输入值就可以传输到xml中,这种需要用到#{param1},如下图:直接输入6不是基础类型的使用#{属性名},这个时候,后台传入的可能是实体对象或者map,,比如:...原创 2021-09-17 14:38:59 · 1051 阅读 · 0 评论 -
Mybatis如何给某个包中类起别名,以及起别名报错的解决方案
在Mybatis的核心文件中添加以下标签<!--定义别名--> <typeAliases> <!-- 通过包扫描给所有的实体类起别名 给指定报名下的所有类起别名 默认每个实体类的别名是首字母小写的类名 Dept dept Emp emp --> <!--指定包,包下所有类都会定义别名--> <原创 2021-09-17 09:24:03 · 966 阅读 · 0 评论