![](https://img-blog.csdnimg.cn/20200618172051802.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Mybatis 学习笔记
文章平均质量分 84
Mybatis 学习记录
南淮北安
好好学习
展开
-
【Mybatis学习】学习 Mybatis 一篇文章就够了(珍藏版)
文章目录一、学习目录二、扩展目录一、学习目录二、扩展目录原创 2020-10-27 16:22:32 · 887 阅读 · 0 评论 -
【Mybatis学习】MyBatis的逆向工程
清新简洁版 MyBatis3Simple:生成基本的CRUD奢华尊享版 MyBatis3: 生成带条件的CRUD正向工程:先创建Java实体类,由框架负责根据实体类生成数据库表。Hibernate是支持正向工程的。逆向工程:先创建数据库表,由框架负责根据数据库表,反向生成如下资源:Java实体类Mapper接口Mapper映射文件文章目录一、添加依赖和插件二、创建MyBatis的核心配置文件三、创建逆向工程的配置文件四、执行MBG插件的generate目标五、测试一、添加依赖和插件&原创 2022-05-16 15:41:37 · 666 阅读 · 0 评论 -
【Mybatis学习】整合第三方缓存EHCache
第三方缓存只能代替Mybatis的二级缓存文章目录一、添加依赖二、各jar包功能三、创建EHCache的配置文件 ehcache.xml四、设置二级缓存的类型五、加入logback日志六、EHCache配置文件说明七、示例一、添加依赖<!-- Mybatis EHCache整合包 --><dependency> <groupId>org.mybatis.caches</groupId> <artifactId>mybatis-ehcac原创 2022-05-16 11:05:01 · 326 阅读 · 0 评论 -
【Mybatis学习】特殊SQL的执行
特殊情况下SQL执行,需要注意 # 和 $ 符号的使用,某些场景下只能用 $,因为 # 有默认逗号隔开的作用文章目录一、模糊查询二、批量删除三、动态设置表名四、添加功能获取自增的主键一、模糊查询 /** * 根据用户名模糊查询用户信息 */ List<User> getUserByLike(@Param("username") String username); <!--List<User> getUserByLike(@Param("us原创 2022-05-14 11:33:38 · 445 阅读 · 0 评论 -
(Myatis 学习) MyBatis的各种查询功能
MyBatis的各种查询功能:(1)若查询出的数据只有一条可以通过实体类对象接收可以通过list集合接收可以通过map集合接收(2)若查询出的数据有多条可以通过实体类类型的list集合接收可以通过map类型的list集合接收可以在mapper接口的方法上添加@MapKey注解,此时就可以将每条数据转换的map集合作为值,以某个字段的值作为键,放在同一个map集合中注意:一定不能通过实体类对象接收,此时会抛异常TooManyResultsException文章目录一、查询一个实体类原创 2022-05-13 15:47:08 · 587 阅读 · 0 评论 -
如何使用 PageHelper 一篇博客就够了
PageHelper 的概念性知识,及参数说明:学习 PageHelper 一篇博客就够了文章目录一、前期准备二、具体使用三、扩展使用一、前期准备(1)pom 添加依赖<dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version&原创 2020-06-09 21:24:25 · 43975 阅读 · 7 评论 -
学习 PageHelper 一篇博客就够了
文章目录一、PageHelper 介绍二、PageHelper 集成1. 引入 jar 包方式2. Maven 方式三、PageHelper 配置1. 单独使用 Mybatis 时XML的配置拦截器插件2. 在 Spring 配置文件中配置拦截器插件四、PageHelper 分页插件参数介绍五、PageHelper 的具体使用一、PageHelper 介绍PageHelper是国内非常优秀的一款开源的mybatis分页插件,它支持基本主流与常用的数据库,例如mysql、oracle、mariaDB、DB转载 2020-06-09 21:23:29 · 1034 阅读 · 0 评论 -
一篇文章带你搞懂 Mybatis 映射配置文件中 mappers 标签的作用
疑问:最近学习springMVC、spring和mybatis 的整合,很好奇为什么明明已经在 dao 下的 ItemDao 中使用注解 @Repository,声明了该类,也就是将其加入了容器,为什么在 applicationContext.xml 还要将其加入容器:解释:学着学着把概念弄混了,注解 @Repository是spring 中 IOC 的内容,将 itemDao 加入容器不假,这里主要是解决的程序的 耦合问题,是为了在 service 中对其直接进行调用:而在 appli原创 2020-06-02 09:53:13 · 1683 阅读 · 0 评论 -
mybatis 基于注解的二级缓存
(1)在 SqlMapConfig 中开启二级缓存支持默认是开启的:也就是不写也行(2)在持久层UserDao.java 中使用注解配置二级缓存(3)在持久层UserDao.java 中不使用注解配置二级缓存原创 2020-05-09 21:45:50 · 1044 阅读 · 1 评论 -
Mybatis 使用注解实现复杂关系映射开发
实现复杂关系映射之前我们可以在映射文件中通过配置<resultMap>来实现, 在使用注解开发时我们需要借助@Results 注解, @Result 注解, @One 注解, @Many 注解文章目录一、复杂关系映射的注解说明二、使用注解实现一对一复杂关系映射及延迟加载三、使用注解实现一对多复杂关系映射四、注意套娃现象的产生一、复杂关系映射的注解说明@Results 注解:代替的是原先 UserDao.xml 中的标签<resultMap>该注解中可以使用单个@Result原创 2020-05-09 20:55:46 · 937 阅读 · 0 评论 -
一篇文章带你搞定 Mybatis 用注解实现基本的 CRUD
文章目录一、注意事项二、注解实现 CRUD(属性类名和数据库保持一致)三、注解实现 CRUD(属性类名和数据库不一致)一、注意事项当使用注解方式时,就不需要其前面的 UserDao.xml 配置文件了,也就是注解和配置文件方式只能选择一个,否则就会出错二、注解实现 CRUD(属性类名和数据库保持一致)userDao.javaimport org.apache.ibatis.annotations.Delete;import org.apache.ibatis.annotations.Inser原创 2020-05-09 16:48:09 · 630 阅读 · 0 评论 -
【Mybatis学习】Mybatis 缓存
像大多数的持久化框架一样, Mybatis 也提供了缓存策略,通过缓存策略来减少数据库的查询次数, 从而提高性能。Mybatis 中缓存分为一级缓存,二级缓存。文章目录一、Mybatis 一级缓存二、Mybatis 二级缓存一、Mybatis 一级缓存一级缓存是 SqlSession 级别的缓存,只要 SqlSession 没有 flush 或 close,它就存在我们可以发现,虽然在上面的代码中我们查询了两次,但最后只执行了一次数据库操作,这就是 Mybatis 提供给我们的一级缓存在起作用原创 2020-05-09 13:06:09 · 722 阅读 · 1 评论 -
【Mybatis 学习】Mybatis 延迟加载策略
文章目录一、何为延迟加载?二、实现需求三、使用 assocation 实现延迟加载四、使用 Collection 实现延迟加载一、何为延迟加载?就是在需要用到数据时才进行加载,不需要用到数据时就不加载数据,延迟加载也称懒加载.好处: 先从单表查询,需要时再从关联表去关联查询,大大提高数据库性能,因为查询单表要比关联查询多张表速度要快。坏处:因为只有当需要用到数据时,才会进行数据库查询,这样在大批量数据查询时,因为查询工作也要消耗时间,所以可能造成用户等待时间变长,造成用户体验下降。二、实现需求查原创 2020-05-08 23:53:49 · 750 阅读 · 0 评论 -
Mybatis 之 JNDI知识学习
JNDI:Java Naming and Directory Interface,是SUN公司推出的一套规范,属于JavaEE技术之一。目的是模仿windows系统中的注册表。是一个map 结构,需要在 Tomcat 服务器启动下,使用,所以需要建立web 工程文章目录一、创建 Maven 的 war 工程并导入坐标二、添加相应的目录文件三、在相应目录创建一个名为 context.xml ...原创 2020-05-07 23:00:29 · 413 阅读 · 0 评论 -
Name [jdbc/mybatis] is not bound in this Context. Unable to find [jdbc].
选用 JNDI 作为连接池,又遇到个弱智问题:这固定写法,文件名称什么的都没错,就是提示找不到jdbc/mybatis,可是context.xml也完全对应最后发现这个问题出现在 SqlMapConfig.xml 中,因为我这个配置文件是改下的,原先用的是 pooled 所以有加载properties的语句,当时只改了下面DataSource 配置数据源部分,这个忘删了,删了就好使了。...原创 2020-05-07 22:54:52 · 5312 阅读 · 2 评论 -
Mybatis 多表查询之多对多
文章目录一、需求分析一、需求分析用户和角色多对多关系模型:用户可以有多个角色,每个角色也可以对应多个用户需求:实现查询所有对象,并且加载它所分配的用户信息分析:查询角色需要用到 role 表,但角色分配的用户信息并不能直接找到用户信息,而是要通过中间表(user_role 表)才能关联到用户信息。...原创 2020-05-07 12:44:53 · 428 阅读 · 0 评论 -
【Mybatis 学习】一篇文章带你学会 Mybatis 多表查询之一对多查询
需求:查询所有用户信息及用户关联的账户信息。分析:用户信息和他的账户信息为一对多关系,并且查询过程中如果用户没有账户信息,此时也要将用户信息查询出来,我们想到了左外连接查询比较合适。(1)修改User 类,为其加入 账户信息@Datapublic class User implements Serializable{ private Integer id; private...原创 2020-05-06 17:12:55 · 407 阅读 · 0 评论 -
【Mybatis 学习】Mybatis 多表查询之一对一查询
文章目录一、借助一个中间表实现一对一查询二、使用 ResultMap 实现一对一查询一、借助一个中间表实现一对一查询需求:查询所有账户信息,关联查询下单用户信息。注意:因为一个账户信息只能供某个用户使用,所以从查询账户信息出发关联查询用户信息为一对一查询。如果从用户信息出发查询用户下的账户信息则为一对多查询,因为一个用户可以有多个账户(1)定义账户信息的实体类@Datapublic c...原创 2020-05-06 16:10:11 · 2717 阅读 · 0 评论 -
【Mybatis 学习】Mybatis 的动态 SQL 语句
Mybatis 的映射文件中,前面我们的 SQL 都是比较简单的,有些时候业务逻辑复杂时,我们的 SQL 是动态变化的,此时在前面的学习中我们的 SQL 就不能满足要求了。文章目录一、动态 SQL 之`if`标签二、动态 SQL 之`where`标签三、动态标签之`foreach`标签四、Mybatis 中简化编写的 SQL 片段一、动态 SQL 之if标签我们根据实体类的不同取值,使用不同...原创 2020-05-06 00:23:42 · 643 阅读 · 0 评论 -
Mybatis 的事务控制
事务:访问并可能更新数据库中各种数据项的一个程序执行单元(unit)事务的四个特性:原子性、一致性、隔离性、持久性不考虑隔离性的三个问题:丢失修改、不可重复读,读脏数据解决办法:四种隔离级别文章目录一、Mybatis 的事务控制二、Mybatis 自动提交事务的设置一、Mybatis 的事务控制在 JDBC 中我们可以通过手动方式将事务的提交改为手动方式,通过 setAutoComm...原创 2020-05-05 20:04:46 · 5670 阅读 · 0 评论 -
一篇文章带你搞懂 Mybatis 的连接池技术
连接池:我们在实际开发中都会使用连接池,因为它可以减少我们获取连接所消耗的时间。文章目录一、mybatis 的连接池二、UNPOOLED 的原理三、POOLED 的原理一、mybatis 的连接池配置的位置:主配置文件SqlMapConfig.xml中的dataSource标签,type属性就是表示采用何种连接池方式。在 Mybatis 中我们将它的数据源 dataSource 分为以...原创 2020-05-05 17:52:09 · 802 阅读 · 0 评论 -
Mybatis 的 SqlMapConfig.xml 配置文件 和 MybatisTest.java
文章目录一、properties 标签二、typeALiases 类型别名三、mappers 映射器四、SqlMapConfig.xml一、properties 标签原先SqlMapConfig.xml 配置的properties 的方式在使用 properties 标签配置时,我们可以采用两种方式指定属性配置(1)直接在 配置文件中添加 配置信息(2)添加外部的properties...原创 2020-05-05 12:28:30 · 552 阅读 · 0 评论 -
Mybatis 基于代理实现的过程分析
(1)可以看出所有的操作都是基于SqlSession 对象(2)顺势找到接口SqlSession 的实现类 DefaultSqlSession,找到其中的 getMapper 方法(3)继续进入configuration的getMapper 方法(4)进入MapperRegistry 的 getMapper 方法(5)继续跳转进入,到这一步就可以看出来动态代理的影子了,接下来重点看...原创 2020-05-04 12:42:42 · 408 阅读 · 0 评论 -
Mybatis传统实现Dao查询所有的执行过程分析
文章目录一、查询所有过程分析一、查询所有过程分析(1)点击测试案例进入到UserDaoImpl 的 findAll 方法内(2)进入findAll方法,发现这里的sqlSession 实际上是一个 DefaultSQLSession对象,而DefaultSqlSession 实际是SqlSession 接口的一个实现类(就如同自定义Mybatis的过程调用顺序一样)(3)选中SqlS...原创 2020-05-03 23:36:59 · 507 阅读 · 0 评论 -
Mybatis 实现 Dao 的传统方式
文章目录一、持久层 Dao 实现类二、测试一、持久层 Dao 实现类session 写在 UserDaoImpl 而不是放在 MybatisCRUDTest 中是因为 session 在这里需要调用,为了调用完封装,所以就都放在这里了,没写在外面,写在了方法里,也是为了调用完然后关闭。public class UserDaoImpl implements UserDao { priv...原创 2020-05-02 21:19:58 · 435 阅读 · 0 评论 -
Mybatis 的传递参数深入
文章目录一、基本概念二、传递 pojo 包装对象三、resultMap一、基本概念已经知道SQL语句传参,是使用标签的 parameterType 来设定参数的具体类型,这个取值可以是基本类型(int),引用类型(string)还可以是实体类型(pojo或称为JavaBean),同时也可以使用实体类的包装类需要注意的是:基 本 类 型 和 String 我 们 可 以 直 接 写 类 型 ...原创 2020-04-30 16:53:57 · 3018 阅读 · 0 评论 -
Mybatis基于代理 Dao 实现 CRUD 操作
文章目录一、UserDao.xml二、MybatisTest.java三、`#{}`与`${}`的区别一、UserDao.xml<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://m...原创 2020-04-29 23:40:44 · 415 阅读 · 0 评论 -
Mybatis 的优势
文章目录一、引入 Mybatis 的原因二、Mybatis 与 JDBC 编程的比较一、引入 Mybatis 的原因传统的 jdbc 存在问题:(1)数据库链接创建、释放频繁造成系统资源浪费从而影响系统性能,如果使用数据库链接池可解决此问题。(2)Sql 语句在代码中硬编码,造成代码不易维护,实际应用 sql 变化的可能较大, sql 变动需要改变 java代码。(3)使用 prepar...原创 2020-04-29 23:38:59 · 940 阅读 · 0 评论 -
自定义 Mybatis
文章目录一、分析一、分析初始时我们有了 SqlMapConfig.xml 和 UserDao.xml 文件使用 dom4j 解析xml 技术selectList 方法:(1)根据配置文件的信息创建 Connection 对象 注册驱动,获取连接(2)获取预处理对象PrepareStatement 此时需要SQL语句:conn.prepareStatement(sql);(...原创 2020-04-27 18:09:44 · 759 阅读 · 0 评论 -
Mybatis 的入门案例
文章目录一、基于配置文件实现的入门案例二、Mybatis 基于注解的入门案例一、基于配置文件实现的入门案例第一步:读取配置文件第二步:创建SqlSessionFactory工厂第三步:创建SqlSession第四步:创建Dao接口的代理对象第五步:执行dao中的方法第六步:释放资源/** * 测试 mybatis 的环境 */public class MybatisTest...原创 2020-04-24 11:54:34 · 410 阅读 · 0 评论 -
一篇文章带你搭建 Mybatis 环境
文章目录一、引入 Mybatis 的原因二、创建 Maven 工程并添加 Mybatis3.4.5 的坐标三、创建实体类和dao 的接口四、创建Mybatis的主配置文件 SqlMapConfig.xml五、创建映射配置文件 UserDao.xml六、注意事项一、引入 Mybatis 的原因传统的 jdbc 存在问题:(1)数据库链接创建、释放频繁造成系统资源浪费从而影响系统性能,如果使用数...原创 2020-04-23 20:23:27 · 676 阅读 · 0 评论 -
(Java)框架概述
文章目录一、什么是框架?二、框架要解决的问题三、软件开发的分层重要性四、分层开发下的常见框架1. 解决数据的持久化问题的框架2. 解决 WEB 层问题的MVC框架3. 解决技术整合问题的框架一、什么是框架?框架(Framework)是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法;另一种定义认为,框架是可被应用开发者定制的应用骨架。前者是从应用方面而后者是从目的方面给出的...原创 2020-04-23 16:18:41 · 776 阅读 · 0 评论