mapper

MybatisPlus学习笔记

喜夏-厌秋 提交于 2019-12-24 13:48:53
毕业后开始实习的第一天,是熟悉项目中用到的mybatis plus,发现与过去用到的mybatis简便了不少东西(至少xml的mapper文件不用写了),在此特地记录下mybatis的单表crud和分页查询,以及多表复杂查询. 创建用户表 CREATE TABLE `user` ( `id` INT ( 20 ) NOT NULL COMMENT '主键ID' , `name` VARCHAR ( 30 ) DEFAULT NULL COMMENT '姓名' , `age` INT ( 11 ) DEFAULT NULL COMMENT '年龄' , `email` VARCHAR ( 50 ) DEFAULT NULL COMMENT '邮箱' , PRIMARY KEY ( `id` ) ) ENGINE = INNODB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ; pom依赖 < dependency > < groupId > org . springframework . boot < / groupId > < artifactId > spring - boot - starter < / artifactId > < / dependency > < dependency > < groupId

@Mapper和@Repository的区别

半世苍凉 提交于 2019-12-24 10:48:59
参考博客地址 https://www.cnblogs.com/wangshen31/p/8735037.html 相同点 两个都是注解在Dao上 不同 @Repository需要在Spring中配置扫描地址,然后生成Dao层的Bean才能被注入到Service层中。 @Mapper不需要配置扫描地址,通过xml里面的namespace里面的接口地址,生成了Bean后注入到Service层中。 来源: https://www.cnblogs.com/jtfr/p/10962205.html

Mybatis-Plus学习总节

倾然丶 夕夏残阳落幕 提交于 2019-12-24 05:08:43
官网: https://mp.baomidou.com/guide/ 简介 MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。 特性 无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑 损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作 强大的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求 支持 Lambda 形式调用:通过 Lambda 表达式,方便的编写各类查询条件,无需再担心字段写错 支持主键自动生成:支持多达 4 种主键策略(内含分布式唯一 ID 生成器 - Sequence),可自由配置,完美解决主键问题 支持 ActiveRecord 模式:支持 ActiveRecord 形式调用,实体类只需继承 Model 类即可进行强大的 CRUD 操作 支持自定义全局通用操作:支持全局通用方法注入( Write once, use anywhere ) 内置代码生成器:采用代码或者 Maven 插件可快速生成 Mapper 、 Model 、 Service 、 Controller 层代码,支持模板引擎,更有超多自定义配置等您来使用

MyBatis学习(一)

陌路散爱 提交于 2019-12-24 03:45:51
MyBatis入门 一、什么是MyBatis MyBatis 是一款优秀的 持久层框架 。 MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集的过程。 MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 实体类 【Plain Old Java Objects,普通的 Java对象】映射成数据库中的记录。 MyBatis 本是apache的一个开源项目ibatis, 2010年这个项目由apache 迁移到了google code,并且改名为MyBatis 。 2013年11月迁移到 Github 。 MyBatis官方文档 : http://www.mybatis.org/mybatis-3/zh/index.html GitHub : https://github.com/mybatis/mybatis-3 Maven仓库 < dependency > < groupId > org.mybatis </ groupId > < artifactId > mybatis </ artifactId > < version > 3.5.2 </ version > </ dependency > < dependency > < groupId > mysql </ groupId > < artifactId >

java8 Stream接口简介

微笑、不失礼 提交于 2019-12-24 03:10:18
首先我们先来认识下一个的接口的意思,流是什么? 流是java API中的新的成员,它可以让你用声明式的方式处理集合,简单点说,可以看成遍历数据的一个高级点的迭代器,也可以看做一个工厂,数据处理的工厂,当然,流还天然的支持并行操作;也就不用去写复杂的多线程的代码,下面我先来看下stream的接口定义 public interface Stream<T> extends BaseStream<T, Stream<T>> { Stream<T> filter(Predicate<? super T> predicate); <R> Stream<R> map(Function<? super T, ? extends R> mapper); IntStream mapToInt(ToIntFunction<? super T> mapper); LongStream mapToLong(ToLongFunction<? super T> mapper); DoubleStream mapToDouble(ToDoubleFunction<? super T> mapper); <R> Stream<R> flatMap(Function<? super T, ? extends Stream<? extends R>> mapper); IntStream flatMapToInt

Invalid bound statement (not found)

喜欢而已 提交于 2019-12-24 03:01:06
Invalid bound statement (not found)是一个比较常见的mybatis错误了,除去我们熟知的,这里记录一个新发现的原因。 即 包名创建错误 (同样名为"mapper.system",却表示两个不同的包,如下图) 这是因为包"mapper.system"创建方式的问题。 一种是直接再"resource"下创建"mapper.system",另一种是在"resource"下创建"mapper"后,再在"mapper"下创建"system"。   此   处   留   白 来源: https://www.cnblogs.com/xfc-exclave/p/11987776.html

mybatis报错:Invalid bound statement (not found)

冷暖自知 提交于 2019-12-23 16:13:43
mybatis报错:Invalid bound statement (not found)的原因很多,但是正如报错提示一样,找不到xml中的sql语句,报错的情况分为三种: 第一种:语法错误 Java DAO层接口 public void delete(@Param("id")String id); Java 对应的mapper.xml文件 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="xxx.xxx.xxx.Mapper"> <!-- 删除数据 --> <delete id="delete" parameterType="java.lang.String"> DELETE FROM xxx WHERE id=#{id} </delete> </mapper> 检查:1. 接口中方法名(delete)与xml文件中 id="delete"是否一致    2. xml文件中的 namespace="xxx.xxx.xxx.Mapper" 中的路径是否与接口文件路径一致    3

深入浅出Mybatis系列(六)---objectFactory、plugins、mappers简介与配置

给你一囗甜甜゛ 提交于 2019-12-23 16:01:07
上篇文章《 深入浅出Mybatis系列(五)---TypeHandler简介及配置(mybatis源码篇) 》简单看了一下TypeHandler, 本次将结束对于mybatis的配置文件的学习, 本次涉及到剩下没提及到的几个节点的配置:objectFactory、databaseIdProvider、plugins、mappers。 那么,接下来,就简单介绍一下这几个配置的作用吧: 1、objectFactory是干什么的? 需要配置吗?   MyBatis 每次创建结果对象的新实例时,它都会使用一个对象工厂(ObjectFactory)实例来完成。默认的对象工厂需要做的仅仅是实例化目标类,要么通过默认构造方法,要么在参数映射存在的时候通过参数构造方法来实例化。默认情况下,我们不需要配置,mybatis会调用默认实现的objectFactory。 除非我们要自定义ObjectFactory的实现, 那么我们才需要去手动配置。   那么怎么自定义实现ObjectFactory? 怎么配置呢?   自定义ObjectFactory只需要去继承DefaultObjectFactory(是ObjectFactory接口的实现类),并重写其方法即可。具体的,本处不多说,后面再具体讲解。   写好了ObjectFactory, 仅需做如下配置: <configuration> ......

Spring+SpringMVC+MyBatis深入学习及搭建(八)——MyBatis查询缓存

假如想象 提交于 2019-12-23 12:51:50
1.什么是查询缓存 mybatis提供查询缓存,用于减轻数据库压力,提高数据库性能。 mybatis提供一级缓存和二级缓存。 一级缓存是SqlSession级别的缓存。在操作数据库时需要构造sqlSession对象,在对象中有一个数据结构(HashMap)用于存储缓存数据。不同的sqlSession之间的缓存数据区域(HashMap)是互相不影响的。 二级缓存是mapper级别的缓存,多个sqlSession去操作同一个Mapper的sql语句,多个sqlSession可以共用二级缓存,二级缓存是跨sqlSession的。 为什么要用缓存? 如果缓存中有数据就不用从数据库中获取,大大提高系统性能。 2.一级缓存 2.1一级缓存工作原理 第一次发起查询用户id为1的用户信息,先去找缓存中是否有id为1的用户信息,如果没有,从数据库查询用户信息。 得到用户信息,将用户信息存储到一级缓存中。 如果sqlSession去执行commit操作(执行插入、更新、删除),清空sqlSession中的一级缓存,这样做的目的为了让缓存中存储的是最新的信息,避免脏读。 第二次发去查询用户id为1的用户信息,先去找缓存中是否有id为1的用户信息,缓存中有,直接从缓存中获取用户信息。 2.2一级缓存测试 mybatis默认支持一级缓存,不需要在配置文件去配置。 按照上边一级缓存原理步骤去测试。 @Test

Mybatis常见面试题总结

泄露秘密 提交于 2019-12-23 08:31:48
1、什么是Mybatis? (1)Mybatis是一个半ORM(对象关系映射)框架,它内部封装了JDBC,开发时只需要关注SQL语句本身,不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。程序员直接编写原生态sql,可以严格控制sql执行性能,灵活度高。 (2)MyBatis 可以使用 XML 或注解来配置和映射原生信息,将 POJO映射成数据库中的记录,避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。 (3)通过xml 文件或注解的方式将要执行的各种 statement 配置起来,并通过java对象和 statement中sql的动态参数进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将结果映射为java对象并返回。(从执行sql到返回result的过程)。 2、Mybaits的优点: (1)基于SQL语句编程,相当灵活,不会对应用程序或者数据库的现有设计造成任何影响,SQL写在XML里,解除sql与程序代码的耦合,便于统一管理;提供XML标签,支持编写动态SQL语句,并可重用。 (2)与JDBC相比,减少了50%以上的代码量,消除了JDBC大量冗余的代码,不需要手动开关连接; (3)很好的与各种数据库兼容(因为MyBatis使用JDBC来连接数据库,所以只要JDBC支持的数据库MyBatis都支持)。 (4