Mybatis精华详解
文章平均质量分 62
深入分析Mybatis原理,以及快速上手Mybatis的基本使用
冷丁_
转iOS中,热爱编程的小白~
展开
-
Mybatis缓存之二级缓存详解
Mybatis二级缓存二级缓存也叫全局缓存,一级缓存作用域太低了,所以诞生了二级缓存基于namespace级别的缓存,一个名称空间,对应一个二级缓存;工作机制一个会话查询一条数据,这个数据就会被放在当前会话的一级缓存中;如果当前会话关闭了,这个会话对应的一级缓存就没了;但是我们想要的是,会话关闭了,一级缓存中的数据被保存到二级缓存中新的会话查询信息,就可以从二级缓存中获取内容;不同的mapper查出的数据会放在自己对应的缓存(map)中;二级缓存的使用步骤开启全局缓存原创 2022-02-04 18:20:38 · 3481 阅读 · 2 评论 -
Mybatis缓存之一级缓存详解
一级缓存一级缓存也叫本地缓存与数据库同一次会话期间查询到的数据会放在本地缓存中。以后如果需要获取相同的数据,直接从缓存中拿,没必须再去查询数据库;编写接口方法 User queryUserById(@Param("id") int id);接口对应的Mapper文件<select id="queryUserById" parameterType="int" resultType="user"> select * from mybatis.user原创 2022-01-29 09:35:07 · 574 阅读 · 4 评论 -
Mybatis缓存详解
Mybatis缓存所有的查询都要连接数据库连接数据库耗费资源如何能一次查询的结果给他暂存到一个可以直接取到的地方!!–>内存:缓存我们再次查询相同数据的时候直接走缓存就不用走数据库了一、缓存简介什么是缓存 [ Cache ]?存在内存中的临时数据。将用户经常查询的数据放在缓存(内存)中,用户去查询数据就不用从磁盘上(关系型数据库数据文件)查询,从缓存中查询,从而提高查询效率,解决了高并发系统的性能问题。为什么使用缓存?减少和数据库的交互次数,减少系统开销,提高系统效率原创 2022-01-28 09:30:28 · 745 阅读 · 4 评论 -
Mybatis 动态SQL(二)if语句与where标签sql标签
Mybatis之if以一个Demo 来方便大家理解需求:根据作者名字和博客名字来查询博客!如果作者名字为空,那么只根据博客名字查询,反之,则根据作者名来查询1.编写接口类//需求1List<Blog> queryBlogIf(Map map);2.编写SQL语句 <sql id="if-title-author"> <if test="title!=null"> and title=#{title}原创 2022-01-27 09:11:07 · 775 阅读 · 5 评论 -
Mybatis 动态SQL(四)choose语句和Foreach语句
动态SQL—choose有时候,我们不想用到所有的查询条件,只想选择其中的一个,查询条件有一个满足即可,使用 choose标签可以解决此类问题,类似于 Java 的 switch 语句。编写接口方法List<Blog> queryBlogChoose(Map map);sql配置文件 <select id="queryBlogChoose" resultType="blog" parameterType="map"> select * fro原创 2022-01-26 09:19:50 · 1915 阅读 · 6 评论 -
Mybatis 动态SQL(三)set标签和update语句
对于查询 SQL 语句包含 where 关键字,如果在进行更新操作的时候,含有 set 关键词,我们怎么处理呢?编写接口方法int updateBlog(Map map);sql配置文件 <update id="updateBlog" parameterType="map"> update mybatis.blog <set> <if test="title!=null">原创 2022-01-25 09:11:33 · 8062 阅读 · 4 评论 -
Mybatis中的动态SQL(一)环境搭建
动态SQL官方文档写的很详细官网描述:MyBatis 的强大特性之一便是它的动态 SQL。如果你有使用 JDBC 或其它类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句的痛苦。例如拼接时要确保不能忘记添加必要的空格,还要注意去掉列表最后一个列名的逗号。利用动态 SQL 这一特性可以彻底摆脱这种痛苦。虽然在以前使用动态 SQL 并非一件易事,但正是 MyBatis 提供了可以被用在任意 SQL 映射语句中的强大的动态 SQL 语言得以改进这种情形。一、什么是动态SQL动态SQL就原创 2022-01-24 09:33:13 · 367 阅读 · 6 评论 -
Mybatis 一对多处理详解
一对多的理解一个老师拥有多个学生如果对于老师这边,就是一个一对多的现象,即从一个老师下面拥有一群学生(集合)!完成一个一对多的Demo实体类的编写注意:集合中的泛型,用ofType去获取按照结果嵌套处理<!--按结果嵌套查询--> <select id="getTeacher1" resultMap="TeacherStudent"> select t.id tid,t.name tname,s.id sid,s.name sname原创 2022-01-23 09:28:03 · 995 阅读 · 7 评论 -
Mybatis 多对一处理
多对一处理多对一的理解多个学生,对应一个老师对于学生这边而言,关联…,多个学生,关联一个老师对于老师而言,集合,一个老师有很多学生利用association关联和collection集合来代替结果映射resultmap,解决一对多,多对一的问题编写一个多对一的Demo首先建立数据库 SQLCREATE TABLE `teacher` (`id` INT(10) NOT NULL,`name` VARCHAR(30) DEFAULT NULL,PRIMARY KEY (`id`)原创 2022-01-22 09:08:05 · 1836 阅读 · 6 评论 -
Lombok 偷懒神器
### Lombok使用步骤在IDEA中安装Lombok插件 (新版的IDEA已经默认安装)在项目中导入Lombok的jar包 <dependencies> <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok --> <dependency> <groupId>org.projectlombok<原创 2022-01-21 08:55:37 · 125 阅读 · 7 评论 -
Mybatis使用注解增删改查
查询:1.编写接口方法注解//根据id查询用户@Select("select * from user where id = #{id}"User selectUserById(@Param("id") int id);2.测试@Testpublic void testSelectUserById() {SqlSession session = MybatisUtils.getSession();UserMapper mapper = session.getMapper(UserMappe原创 2022-01-20 14:48:03 · 1028 阅读 · 4 评论 -
Mybatis注解开发详解
使用注解开发1、面向接口编程大家之前都学过面向对象编程,也学习过接口,但在真正的开发中,很多时候我们会选择面向接口 编程根本原因 : 解耦 , 可拓展 , 提高复用 , 分层开发中 , 上层不用管具体的实现 , 大家都遵守共同的标准 , 使得开发变得容易 , 规范性更好在一个面向对象的系统中,系统的各种功能是由许许多多的不同对象协作完成的。在这种情况下, 各个对象内部是如何实现自己的,对系统设计人员来讲就不那么重要了;而各个对象之间的协作关系则成为系统设计的关键。小到不同类之间的原创 2022-01-18 08:39:33 · 354 阅读 · 12 评论 -
Mybatis实现分页
Mybatis实现分页思考:为什么要分页在学习mybatis等持久层框架的时候,会经常对数据进行增删改查操作,使用最多的是对数据库进行查询操作,如果查询大量数据的时候,我们往往使用分页进行查询,也就是每次处理小部分数据,这样对数据库压力就在可控范围内。使用limit实现分页#语法SELECT * FROM table LIMIT stratIndex,pageSizeSELECT * FROM table LIMIT 5,10; // 检索记录行 6-15#如果只给定一个参数,它表示返回最大原创 2022-01-16 09:18:32 · 2613 阅读 · 14 评论 -
Mybatis中的日志-log4j
Mybatis中的日志日志工厂我们在测试SQL的时候,要是能够在控制台输出 SQL 的话,是不是就能够有更快的排错效率?如果一个数据库操作,出现了异常,我们需要排错。日志是最好的助手!曾经:sout、debug现在:日志工厂!SLF4JLOG4J (重要)LOG4J2JDK_LOGGINGCOMMONS_LOGGINGSTDOUT_LOGGING(重要)NO_LOGGING在Mybatis中具体使用哪一个日志实现,在设置中设定!STDOUT_LOGGIN标准日志输出日原创 2022-01-14 10:22:26 · 461 阅读 · 2 评论 -
Mybatis解决项目中属性名和数据库字段名不一致问题(ResultMap)
解决属性名和字段名不一致问题如果将pojo中的属性改成password 和数据库中pwd不一致public class User {private int id; //idprivate String name; //姓名private String password; //密码和数据库不一样!//构造 //set/get //toString()}接口//根据id查询用户 UserselectUserById(intid);mapper映射文件<select id="原创 2022-01-11 13:06:31 · 1032 阅读 · 3 评论 -
Mybatis自动提交事务autoCommit
我们可以在工具类创建的时候自动提交事物autoCommit是否自动提交事物public static SqlSession getSqlSession(){ return sqlSessionFactory.openSession(true);}这里设置为true为自动提交事物如果对您有帮助,免费的赞点一个 感谢????~~~...原创 2022-01-11 08:54:29 · 1169 阅读 · 0 评论 -
Mybatis中的生命周期和作用域
生命周期和作用域生命周期和作用域是至关重要的,因为错误的使用会导致程序出现严重的问题(并发执行出问题)程序开始执行,首先要有一个 mybatis-config.xml配置文件,配置文件是为了创建一个对象SqlSessionFactoryBuilder。SqlSessionFactoryBuilder是为了创建工厂,SqlSessionFactory。SqlSessionFactory生产SqlSession,SqlSession拿到SQL Mapper,然后程序结束SqlSessionFa原创 2021-12-14 22:04:00 · 457 阅读 · 7 评论 -
Mybatis中的配置解析
4、配置解析1、核心配置文件Mybatis-config.xml重点是红色框内的几个配置环境配置(environments)MyBatis 可以配置成适应多种环境不过要记住:尽管可以配置多个环境,但每个 SqlSessionFactory 实例只能选择一种环境。...原创 2021-12-13 09:28:37 · 194 阅读 · 6 评论 -
Mybatis中的模糊查询
模糊查询怎么写1、Java代码执行的时候,传递通配符% %@Test public void getUserLike(){ SqlSession sqlSession=MybatisUtils.getSqlSession(); UserMapper mapper=sqlSession.getMapper(UserMapper.class); List<User> userLike = mapper.getUserLike("%李%"); for (User原创 2021-12-12 13:01:25 · 382 阅读 · 3 评论 -
Mybatis中万能的Map
万能的Map假设,我们的实体类,或者数据库中的表,字段或者参数过多,我们需要考虑使用Map简单来说,map你用什么参数就写什么参数,而实体类需要写所有参数。map不需要名称完全对应,通过键的映射取值,实体类必须要求和实体类中属性名字一样map传递参数,直接在sql中取出key即可 【parameterType=“map”】对象传递参数,直接在sql中取对象的属性即可 【parameterType=“Object”】只有一个基本类型 (如int),可以直接在sql中找到原创 2021-12-11 13:25:05 · 1103 阅读 · 11 评论 -
Mybatis增删改
Mybatis增删改Insert 增加我们一般使用insert标签进行插入操作,它的配置和select标签差不多!给数据库增加一个用户1.在UserMapper接口中添加对应的方法//添加一个用户int addUser(Useruser);2.在UserMapper.xml中添加insert语句<insert id="addUser" parameterType="com.lding.pojo.User">insert into user (id,name,pwd) valu原创 2021-12-10 21:28:33 · 160 阅读 · 5 评论 -
Mybatis查询
Mybatis查询1、namespacenamespace 中的包名要和Dao/mapper接口的包名一致2、select选择,查询语句id:就是对应的namespace中的方法名resultType:Sql语句执行的返回值parameterType:参数类型根据id查询用户在UserMapper中添加对应方法public interface UserMapper {//查询全部用户List<User> selectUser();//根据id查询用户User s原创 2021-12-09 18:23:03 · 392 阅读 · 6 评论 -
Mabatis增删改查
CRUD1、namespacenamespace 中的包名要和Dao/mapper接口的包名一致2、select选择,查询语句id:就是对应的namespace中的方法名resultType:Sql语句执行的返回值parameterType:参数类型1、编写接口public interface UserMapper { //查询全部用户 List<User> getUserList(); //根据ID查询用户 User getUserByI原创 2021-12-08 11:32:44 · 331 阅读 · 7 评论 -
第一个Mybatis程序
2、第一个Mybatis程序思路:搭建环境–>导入Mybatis–>编写代码–>测试!2.1、搭建环境1.搭建数据库CREATE DATABASE `mybatis`;USE `mybatis`;CREATE TABLE `user`( `id` INT(20) NOT NULL PRIMARY KEY, `name` VARCHAR(30) DEFAULT(NULL), `pwd` VARCHAR(30) DEFAULT(NULL))ENGINE=INNODB DE原创 2021-12-06 09:40:13 · 1299 阅读 · 9 评论 -
Mybatis简介
Mybatis1、简介1.1、什么是MybatisMyBatis是一款优秀的持久层框架MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集的过程MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 实体类 【Plain Old Java Objects,普通的 Java对象】映射成数据库中的记录。MyBatis 本是apache的一个开源项目ibatis, 2010年这个项目由apache 迁移到了google code,并 且原创 2021-12-05 08:46:06 · 246 阅读 · 3 评论