mybatis
文章平均质量分 96
原来是小别扇
这个作者很懒,什么都没留下…
展开
-
Spring5(24) —— Spring声明式事务
1.Spring中的事务 spring中的事务分为两类声明式事务:就是使用AOP实现事务【推荐使用,因为不会修改源代码】编程式事务:需要在原代码中实现事务的管理,需要修改原来的代码2.使用开启事务<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <constru原创 2020-09-18 16:04:24 · 233 阅读 · 0 评论 -
Spring5(23) —— 回顾事务
目录1.回顾事务2.代码实现1.项目搭建2.代码实现1.回顾事务事务特性:要么都成功,要么都失败事务在项目开发中十分重要,涉及到数据一致性问题,不能马虎它用于确保数据一致性事务的ACID原则原子性:事务不可分割一致性:事务执行不管成不成功,所有人的数据要一致;比如转账,那么参与转账双方的钱的总和应该保持不变隔离性:操作同一数据的不同事务之间相互独立,互不干扰持久性:事务成功之后,其结果必须影响数据库中的数据;即使事务失败,也要求使用某种机制恢复数据2.代码实现1.项目搭建原创 2020-09-18 15:13:24 · 120 阅读 · 0 评论 -
Spring5(22) —— 整合MyBatis方式2
目录1.使用步骤2.对比两种方式1.使用步骤创建一个mapper接口的实现类,继承SqlSessionDaoSupport且同时实现mapper接口package com.thhh.mapper;import com.thhh.pojo.User;import org.mybatis.spring.support.SqlSessionDaoSupport;import java.util.List;public class UserMapperImpl2 extends SqlSe原创 2020-09-18 12:52:29 · 177 阅读 · 0 评论 -
Spring5(21) —— 整合MyBatis方式1
1.什么是MyBatis-Spring MyBatis-Spring 会帮助你将 MyBatis 代码无缝地整合到 Spring 中。它将允许 MyBatis 参与到 Spring 的事务管理之中,创建映射器 mapper 和 SqlSession 并注入到 bean 中,以及将 Mybatis 的异常转换为 Spring 的 DataAccessException。最终,可以做到应用代码不依赖于 MyBatis,Spring 或 MyBatis-Spring原创 2020-09-18 11:34:36 · 189 阅读 · 0 评论 -
Spring5(20) —— 回顾MyBatis
1.整合MyBatis导入jar包junitmybatismysql数据库spring相关AOP织入mybatis-spring【新知识点】<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:原创 2020-09-17 22:58:28 · 161 阅读 · 0 评论 -
MyBatis(24) —— 自定义缓存Ehcache
1.什么是Ehcache Ehcache是一种广泛使用的开源Java分布式缓存,主要面向通用缓存2.在程序中使用Ehcache导包,链接: link.设置mapper.xml文件中的cache节点的type属性为我们导进来的包的一个实现类创建一个XML资源文件<?xml version="1.0" encoding="UTF-8"?><ehcache xmlns:xsi="http://www.w3.org/200原创 2020-09-14 19:09:09 · 129 阅读 · 0 评论 -
MyBatis(23) —— MyBatis缓存原理
用户的查询数据的请求会先去二级缓找有没有要查询的数据存,有就直接返回数据,没有就去到一级缓存中如果一级缓存中有就直接返回数据,没有就向数据库进行数据查询原创 2020-09-14 18:41:52 · 259 阅读 · 0 评论 -
Mybatis(22) —— 二级缓存
目录1.定义2.mybatis官方文档描述3.使用二级缓存的步骤4.小结1.定义二级缓存也叫全局缓存,一级缓存作用域太低了,所以诞生了二级缓存基于namespace级别的缓存,一个名称空间,对应一个二级缓存工作机制一个会话查询一条数据,这个数据就会被放在当前会话的一级缓存中;如果当前会话关闭了,这个会话对应的一级缓存就没了;但是由于我们开启了二级缓存,会话关闭时,一级缓存中的数据会被保存到二级缓存中新的会话查询信息,就可以从二级缓存中获取内容;不同的mapper查出的数据会放在自己对应的原创 2020-09-14 18:29:51 · 131 阅读 · 0 评论 -
Mybatis(21) —— 一级缓存
一级缓存也叫本地缓存: SqlSession与数据库同一次会话期间查询到的数据会放在本地缓存中以后如果需要获取相同的数据,直接从缓存中拿,没必须再去查询数据库1.案例:测试一级缓存 由于一级缓存默认开启(我们不能关闭,但是可以清除),所以我们只需要去获取它就行了,这里我们通过查询只当ID的用户来进行测试 创建新model:MyBatis-09要查看一级缓存,我们需要去开启日志 &原创 2020-09-14 16:57:09 · 127 阅读 · 0 评论 -
Mybatis(20) ——缓存简介
目录1.什么是缓存2. 定义3.MyBatis缓存介绍1.什么是缓存查询数据操作:需要连接数据库 ,连接一次数据库并将数据查询出来是很耗资源的!解决资源问题:将一次查询的结果,给它暂存在一个可以直接取到的地方!(不耗资源的地方)以此减少对数据库的直接查询 ,比如内存而我们暂存在内存中的这些数据,就叫"缓存"我们再次查询相同数据的时候,直接走缓存,就不用走数据库了2. 定义什么是缓存 [ Cache ]?存在内存中的临时数据将用户经常查询的数据放在缓存(内存)中,用户去查询数据原创 2020-09-14 15:11:17 · 129 阅读 · 0 评论 -
Mybatis(19) ——动态SQL之SQL片段&Foreach
目录1.SQL片段2.Foreach3.小结1.SQL片段 有的时候我们会将一些公共的部分抽取出来,方便复用 如图,上面就已经出现了重复的代码,而SQL片段就是用来实现这些SQL代码的复用的 使用SQL片段使用方法使用sql标签抽取公共部分使用include标签引入复用的sql代码 就使用SQL片段来改造原创 2020-09-14 14:46:09 · 353 阅读 · 0 评论 -
Mybatis(18) ——动态SQL之choose&trim
可见choose、when 、otherwise这3个标签分别对应switch语句中的switch、case、default这3个关键字,它们的用法都是一样的1.需求 还是使用17里面的需求:传递title就按照title查询,传递author就按照author查询,什么都不传递就都查询出来2.需求分析 我们在数据库中使用SQL语句实现上面的需求就是在传..原创 2020-09-14 11:28:04 · 399 阅读 · 0 评论 -
Mybatis(17) ——动态SQL之IF语句
目录需求需求分析代码实现小结需求 要求:传递title就按照title查询,传递author就按照author查询,什么都不传递就都查询出来需求分析 我们在数据库中使用SQL语句实现上面的需求就是在传入title就加上title的where子句,传入author就加上author的子句,什么都不传就整表查询代码实现接口package com.thhh.dao;import com.thh..原创 2020-09-13 23:31:36 · 287 阅读 · 0 评论 -
Mybatis(16) ——动态SQL环境搭建
1.什么是动态SQL 动态SQL就是根据不同的条件生成不同的SQL语句 在SMBMS项目中,我们使用了if语句来手动拼接SQL 动态SQL就是用来替代上面的这种场景的繁琐的Java代码的学习动态SQL其实就是在学习4个标签ifchoose (when, otherwise)trim (where, set)foreach2.搭建环境.原创 2020-09-13 22:20:59 · 155 阅读 · 0 评论 -
Mybatis(15) ——一对多处理
目录分析模型环境搭建代码编写1.简化模型2.解决问题3.JavaType和ofType的区别4.小结5.面试高频(自己找文章看会)分析模型 还是沿用前面学生和老师的例子 前面我们讨论的是多对一的关系,即在获取学生全部信息的同时获取他的老师的信息【学生】多个学生 关联 一个老师【多对一】【老师】一个老师 集合/管理/掌管 多个学生【一对多】环境搭建 和原创 2020-09-13 19:59:09 · 200 阅读 · 0 评论 -
Mybatis(14) ——多对一处理
目录需求:查询所有的学生信息,以及学生对应的老师的信息需求分析代码实现1.按照查询嵌套处理,即使用子查询2.按照结果嵌套处理,即使用联表查询小结需求:查询所有的学生信息,以及学生对应的老师的信息需求分析 所以我们需要查询的字段就是学生ID,学生name和老师name,要查询两张表上的数据,且这两张表有主外键关系,所以我们应该使用联表查询SQL:SELECT s.id,s.name,t.name FROM student s,teacher t wh原创 2020-09-13 15:26:39 · 157 阅读 · 1 评论 -
Mybatis(13) ——多对一处理环境搭建
多个学生 对应 一个老师【学生】多个学生 关联 一个老师【多对一】【老师】一个老师 集合 多个学生【一对多】案例创建新表:teacher和student-- 创建teacher表CREATE TABLE `teacher` (`id` INT(10) NOT NULL,`name` VARCHAR(30) DEFAULT NULL,PRIMARY KEY (`id`)) ENGINE=INNODB DEFAULT CHARSET=utf8;-- 插入一个老师的信息..原创 2020-09-13 10:03:57 · 112 阅读 · 0 评论 -
Mybatis(12) —— Lombok的使用
1、什么是Lombok官网简介Project Lombok is a java library that automatically plugs into your editor and build tools, spicing up your java.Never write another getter or equals method again, with one annotation your class has a fully featured builder, Automate you原创 2020-09-13 08:13:51 · 207 阅读 · 0 评论 -
Mybatis(11) —— 使用注解开发
1.面向接口编程 根本原因:解耦,可扩展、提高复用、在分层开发中上层设计和底层实现分离(即上层不用管底层的实现),大家都遵守共同的标准,使得开发变得容易,规范性好在一个面向对象的系统中,系统的各种功能是由许许多多的不同对象协作完成的。在这种情况下,各个对象内部是如何实现自己的,对系统设计人员来讲就不那么重要了;而各个对象之间的协作关系则成为系统设计的关键。小到不同类之间的通信,大到各模块之间的交互,在系统设计之初都是要着重考虑的,这也是系统设计的主要工作原创 2020-09-12 22:53:35 · 154 阅读 · 0 评论 -
Mybatis(10) —— MyBatis实现分页
目录一、使用limit实现分页(重点)二、使用RowBounds实现分页(了解)三、分页插件(了解)思考 为什么要分页? 如果一条查询语句查询的记录太多,那么结果返回也就越慢,那么执行的效率也就越低,而且我们一次性也看不完这么多的数据,所以我们采用了分页处理,减少数据的处理量一、使用limit实现分页(重点)MYSQL中通过Limit关键字实现分页(Limit是MYSQL的方言)语法:SELECT *原创 2020-09-12 14:32:56 · 283 阅读 · 0 评论 -
Mybatis(9) ——日志工厂
1.回顾1-81.1 什么是mybatis 是一个持久层框架 怎么将mybatis引入自己的项目——引入jar包即可 学习主要查看官方文档1.2 什么是持久化2.1 第一个mybatis程序2.2 CRUD2.3 mybatis配置文件解析 step1(可以直接复制现成的,然后修改对应位置即可使用) &nbs原创 2020-09-12 12:32:04 · 178 阅读 · 0 评论 -
Mybatis(8) ——ResultMap结果集映射
MENUResultMap用于解决属性名和字段名不一致的问题1、解决属性名和字段名不一致导致的空值问题2、什么是ResultMapResultMap用于解决属性名和字段名不一致的问题新创建一个model,取名MyBatis-03,复制粘贴MyBatis-03中的所有东西直接粘贴是有问题的,粘贴之后注意修改两个地方 ①mybatis-config.xml中mapper节点引入的地址,它多了一个com ②Use原创 2020-09-12 09:50:08 · 240 阅读 · 0 评论 -
Mybatis(7) ——生命周期和作用域
作用域和生命周期类别是至关重要的,因为错误的使用会导致非常严重的并发问题 即作用域和生命周期只会在并发的情况下才会出现问题SqlSessionFactoryBuilder一旦创建了 SqlSessionFactory,就不再需要它了所以我们应该将SqlSessionFactory对象设为局部变量SqlSessionFactorySqlSessionFactory 一旦被创建就应该在应用的运行期间原创 2020-09-11 22:29:22 · 134 阅读 · 0 评论 -
Mybatis(6) —— 核心配置文件中的属性优化
目录4.11、Mybatis核心配置文件2、环境配置(environments)1.事务管理器(transactionManager)2.数据源(dataSource)3、属性(properties)4、类型别名(typeAliases)5、设置(settings)6、映射器(mappers)4.11、Mybatis核心配置文件 官方文档推荐我们将Mybatis核心配置文件命名为mybatis-config.xmlMyBatis 的配置文件包含了会深原创 2020-09-11 20:19:01 · 232 阅读 · 0 评论 -
Mybatis(5) ——万能Map和模糊查询实现
1、Map集合 我们知道,Map集合就是为了便于我们查阅数据的集合,里面的数据都是按照<K,V>键值对的形式进行的存储,而我们在MyBatis中也有可以使用到它的地方 使用场景:当我们的实体类拥有的属性很多,比如有200个,而我们一次向里面插入或修改的字段并不多只有几个的时候,按照上一节笔记的思路,我们新建或修改的时候需要传入一个user对象,而new一个user对象的时候我们就需要按照构造参数来ne原创 2020-09-11 15:39:41 · 336 阅读 · 0 评论 -
Mybatis(4) ——使用MyBatis实现CRUD
首先回顾一下第一个mybatis程序,这里我们通过分析可以发现,对于第一个mybatis程序中编写的文件,我们可以复用,在后面的编写中,我们只需要修改dao包下的文件,及其对应的测试文件的代码,其他的代码都不用动这篇博客用于记录怎么使用mybatis对数据库进行CRUD固定使用步骤编写DAO接口:和原来写JDBC代码的时候一样,使用面向接口编程的思想编写对应mapper.xml文件中的操作节点+节点参数+sql语句测试:测试中我们需要注意,CRUD原创 2020-09-11 11:52:09 · 185 阅读 · 0 评论 -
Mybatis(3) ——第一个Mybatis程序
思路:搭建环境–导入MyBatis–>编写代码–>测试!1.搭建环境1.1 搭建数据库-- 创建数据库CREATE DATABASE `mybatis`;USE 'mybatis';-- 创建表CREATE TABLE user( id INT(20) PRIMARY KEY, name VARCHAR(30) DEFAULT NULL, pwd VARCHAR(30) DEFAULT NULL)ENGINE=INNODB DEFAULT CHARSET=utf8;-原创 2020-09-11 10:09:20 · 143 阅读 · 0 评论 -
Mybatis(2) ——什么是Mybatis?
目录二、mybatis简介1.什么是 MyBatis?2.如何获取mybatis3.什么是持久化(动作)4.什么是持久层(名词)5.为什么要使用MyBatis?6.MyBatis的特点(来自百科)二、mybatis简介1.什么是 MyBatis?MyBatis 是一款优秀的持久层框架它支持自定义 SQL、存储过程以及高级映射MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJ原创 2020-09-10 14:07:54 · 193 阅读 · 0 评论 -
Mybatis(1) ——环境准备
一、准备工作环境JDK1.8MySQL 5.7maven 3.6.1IDEA 2020以上都是实际开发中用的最多的,也是公司中用的最多的版本我以前安装的JDK14,但是不想删除,怕以后要用,所以就多装了一个JDK8,现在再来配置Java环境变量发现很简单,JDK安装成功之后,在环境变量中新建JAVA_HOME,值就是我们安装的JDK8的安装目录;然后在path变量中新增两个变量"%JAVA_HOME%\bin"和"%JAVA_HOME%\jre\bin"即可测试环境是否搭建成功环境更原创 2020-09-10 14:05:24 · 141 阅读 · 0 评论