摘要: 比如一个用户和角色的关系,一个用户可以具备多个角色,准备表 SET FOREIGN_KEY_CHECKS=0; -- -- Table structure for role -- DROP TABLE IF EXISTS `role`; CREATE TABLE `role` ( `id` int( 阅读全文
posted @ 2020-08-01 10:35 柒丶月 阅读(109) 评论(0) 推荐(0) 编辑
摘要: 在实际开发中,经常会遇到一对一查询,一对多查询等。这里我们先来看一对一查询。 例如:每本书都有一个作者,作者都有自己的属性,根据这个,我来定义两个实体类: public class Book { private Integer id; private String name; private Aut 阅读全文
posted @ 2020-08-01 10:32 柒丶月 阅读(142) 评论(0) 推荐(0) 编辑
摘要: 1. 前言 在spring-boot 集成 MyBatis小节中,我们介绍了如何在 spring-boot 中集成 MyBatis,MyBatis 虽然灵活,但是对于业务开发还略显不够。MyBatis-Plus 是国内开发者为 MyBatis 定制的一款增强工具,在不侵入 MyBatis 的基础上能 阅读全文
posted @ 2020-08-01 10:31 柒丶月 阅读(426) 评论(0) 推荐(0) 编辑
摘要: 在 spring-boot 集成 MyBatis小节 中,我们介绍了如何在 spring-boot 中集成 MyBatis,MyBatis 虽然灵活,但是对于业务开发还略显不够。tk.mapper 和 pagehelper 是国内开发者为 MyBatis 定制的两款业务增强库,tk.mapper 可 阅读全文
posted @ 2020-08-01 10:02 柒丶月 阅读(1142) 评论(1) 推荐(0) 编辑
摘要: 1. 前言 spring-boot 可谓是 Java 领域中最火的框架之一, 也是目前 Java 应用开发的事实标准,如果不会使用未免有些 out。本小节,我们将一起学习如何使用 spring-boot 来集成 MyBatis。 项目初始化 对于拥有 IDEA 专业版的人来说,新建 spring-b 阅读全文
posted @ 2020-08-01 10:01 柒丶月 阅读(93) 评论(0) 推荐(0) 编辑
摘要: 1. 前言 在MyBatis 缓存一节中,我们介绍了 MyBatis 的多级缓存。MyBatis 的二级缓存可在多个会话中共享缓存,但是这也加大了内存的使用空间,如果二级缓存空间占有量过多势必会导致程序运行空间的不足,因此我们需要将二级缓存转移到专业的缓存服务器上。 Redis 是一个高性能的 kv 阅读全文
posted @ 2020-08-01 09:12 柒丶月 阅读(99) 评论(0) 推荐(0) 编辑
摘要: 1. 前言 MyBatis 允许我们以插件的形式对已映射语句执行过程中的某一点进行拦截调用,通俗一点来说,MyBatis 的插件其实更应该被称作为拦截器。 MyBatis 插件的使用十分广泛,分页、性能分析、乐观锁、逻辑删除等等常用的功能都可以通过插件来实现。既然插件如此好用,本小节我们就一起来探索 阅读全文
posted @ 2020-08-01 09:11 柒丶月 阅读(158) 评论(0) 推荐(0) 编辑
摘要: 1. 前言 MyBatis 提供了诸多类型处理器,但是相较于丰富的数据库类型仍然略显不足,比如 MyBatis 只能将 JSON 数据类型当成普通的字符串处理。因此 MyBatis 提供了类型处理器接口,让开发者可以根据具体的业务需求来自定义适合的类型处理器。 本小节,我们将以 JSON 类型处理器 阅读全文
posted @ 2020-08-01 09:10 柒丶月 阅读(123) 评论(0) 推荐(0) 编辑
摘要: 1. 前言 频繁地查询必然会给数据库带来巨大的压力,为此 MyBatis 提供了丰富的缓存功能。缓存可以有效的提升查询效率、缓解数据库压力,提高应用的稳健性。 MyBatis 的缓存有两层,默认情况下会开启一级缓存,并提供了开启二级缓存的配置。本小节我们将一起学习 MyBatis 的缓存,充分地了解 阅读全文
posted @ 2020-08-01 09:09 柒丶月 阅读(121) 评论(0) 推荐(0) 编辑
摘要: configuration结构 - properties(属性) - settings(设置) - typeAliases(类型别名) - typeHandlers(类型处理器) - objectFactory(对象工厂) - plugins(插件) - environments(环境配置) - e 阅读全文
posted @ 2020-08-01 09:08 柒丶月 阅读(144) 评论(0) 推荐(0) 编辑
摘要: 在注解中使用动态 SQL 其实十分简单,只需在动态 SQL 语句的外面包上一层script标签即可。如下: @Select({"<script>", "SELECT * FROM imooc_user", " WHERE", " <choose>", " <when test='id != null 阅读全文
posted @ 2020-08-01 09:06 柒丶月 阅读(556) 评论(0) 推荐(0) 编辑
摘要: foreach 标签用来遍历数组、列表和 Map 等集合参数,常与 in 关键字搭配使用。 遍历列表 <select id="selectUserInIds" resultType="com.imooc.mybatis.model.User"> SELECT * FROM imooc_user WH 阅读全文
posted @ 2020-08-01 09:04 柒丶月 阅读(193) 评论(0) 推荐(0) 编辑
摘要: where、set、trim 三个标签都是为了解决 MyBatis 在动态生成 SQL 时,产生了多余的前缀和后缀的问题。 where实例 <select id="selectUserByIdAndName" resultType="com.imooc.mybatis.model.User"> SE 阅读全文
posted @ 2020-08-01 09:00 柒丶月 阅读(229) 评论(0) 推荐(0) 编辑
摘要: choose 标签相当于编程语言 if…else 语句,用于动态 SQL 中的多条件判断,是 if 标签的增强版。 bind 标签可以在动态 SQL 中通过 OGNL 表达式来创建一个新的变量绑定到上下文中,供后续的 SQL 使用。 <select id="selectUserByLikeName" 阅读全文
posted @ 2020-08-01 08:58 柒丶月 阅读(121) 评论(0) 推荐(1) 编辑
摘要: if <select id="selectUserByAgeAndScore" parameterType="com.imooc.mybatis.model.User" resultMap="userMap"> SELECT * FROM imooc_user WHERE age = #{age} 阅读全文
posted @ 2020-08-01 07:44 柒丶月 阅读(81) 评论(0) 推荐(0) 编辑
摘要: 实例 xml <delete id="deleteUserById"> DELETE FROM imooc_user WHERE id = #{id} </delete> 注解 @Delete("DELETE FROM imooc_user WHERE id = #{id}") int delete 阅读全文
posted @ 2020-08-01 07:39 柒丶月 阅读(302) 评论(0) 推荐(0) 编辑
摘要: 实例 xml <update id="updateUserAgeById"> UPDATE imooc_user SET age = #{age} WHERE id = #{id} </update> 注解 @Update("UPDATE imooc_user SET age = #{age} WH 阅读全文
posted @ 2020-08-01 07:36 柒丶月 阅读(570) 评论(0) 推荐(0) 编辑
摘要: <insert id="insertUser" parameterType="com.imooc.mybatis.model.User"> INSERT INTO imooc_user(id,username,age,score) VALUES (#{id},#{username},#{age},# 阅读全文
posted @ 2020-08-01 07:23 柒丶月 阅读(328) 评论(0) 推荐(0) 编辑
摘要: 定义 resultMap 标签用于将数据库数据映射为 Java 对象;sql 标签则用来定义可重用的 SQL 代码段。 resultMap 实例 在下面这段 select 标签中,SQL 语句返回的是一个复杂对象,即 resultType 上指定的 User。 <select id="selectU 阅读全文
posted @ 2020-08-01 00:10 柒丶月 阅读(444) 评论(0) 推荐(0) 编辑
摘要: 定义 select标签用于映射SQL中查询语句 参数符号 若以 #{}作为参数符号,MyBatis 则会创建一个预处理语句(PreparedStatement),它会被处理成?。如果你不希望使用预处理,那么可以使用${}参数符号,MyBatis 会将其以字符串的形式进行拼接,不过我们推荐你使用 #{ 阅读全文
posted @ 2020-08-01 00:05 柒丶月 阅读(181) 评论(0) 推荐(0) 编辑