<small id='gmG7JlI'></small> <noframes id='eA98O4iUs'>

  • <tfoot id='YXimohjRxM'></tfoot>

      <legend id='VfwP'><style id='sTSQ'><dir id='wMn1F'><q id='WUpkrKjX'></q></dir></style></legend>
      <i id='qzGfeFl7c'><tr id='jkDi'><dt id='FzpvgjS0c'><q id='rxDMK9X3u'><span id='kpdPEwRnTz'><b id='jBb9ORF2ht'><form id='bolOpFnJ60'><ins id='AbYEWZ'></ins><ul id='45BZq'></ul><sub id='zHWqEf8B'></sub></form><legend id='O9P0Sqlb'></legend><bdo id='KO4mMjupy'><pre id='SLOPnNu5d'><center id='bSPVE'></center></pre></bdo></b><th id='JPhtjp8F'></th></span></q></dt></tr></i><div id='h2ZQtIEu'><tfoot id='qHZC2VD'></tfoot><dl id='hFAyvO'><fieldset id='vfCeShO2'></fieldset></dl></div>

          <bdo id='4aYeg'></bdo><ul id='nBQPe'></ul>

          1. <li id='tcyXkLJgdp'></li>
            登陆

            Spring Boot 系列(二):怎么高雅的运用 MyBatis-Plus

            admin 2019-11-18 229人围观 ,发现0个评论

            这篇文章就给咱们介绍一下,如安在 Spring Boot 中整合 MyBatis-Plus 运用 MyBatis。

            MyBatis-Plus 介绍

            MyBatis-Plus(简称 MP)是一个 MyBatis 的增强东西,在 MyBatis 的基础上只做增强不做改动,为简化开发、进步功率而生。

            官方愿景:成为 MyBatis 最好的伙伴,就像 魂斗罗 中的 1P、2P,基友调配,功率翻倍。

            依据愿景乃至还设置了一个很帅的 Logo。

            官网地址:https://mybatis.plus/,本文大部分内容参阅自官网。

            特性

            官网说的特性太多了,挑了几个有特色的共享给咱们。

            • 无侵入:只做增强不做改动,引进它不会对现有工程产生影响,如丝般顺滑
            • 损耗小:发动即会主动注入根本 CURD,功用根本无损耗,直接面向目标操作
            • 强壮的 CRUD 操作:内置通用 Mapper、通用 Service,只是经过少数装备即可完成单表大部分 CRUD 操作,更有强壮的条件结构器,满意各类运用需求
            • 支撑 Lambda 方式调用:经过 Lambda 表达式,便利的编写各类查询条件,无需再忧虑字段写错
            • 支撑多种数据库:支撑 MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、Postgre、SQLServer2005、SQLServer 等多种数据库
            • 内置分页插件:依据 MyBatis 物理分页,开发者无需关怀详细操作,装备好插件之后,写分页等同于一般 List 查询

            快速上手

            预备数据

            咱们首要规划一个这样的用户表,如下:

            咱们要创立两个 Sql 文件,以便项目发动的时分,将表结构和数据初始化到数据库。

            表结构文件(schema-h2.sql)内容:

            DROP TABLE IF EXISTS user;

            CREATE TABLE user

            (

            id BIGINT(20) NOT NULL COMMENT '主键ID',

            name VARCHAR(30) NULL DEFAULT NULL COMMENT '名字',

            age INT(11) NULL DEFAULT NULL CO广播体操MMENT '年纪',

            email VARCHAR(50) NULL DEFAULT NULL COMMENT '邮箱',

            PRIMARY KEY (id)

            );

            表数据文件(data-h2.sql)内容:

            INSERT INTO user (id, name, age, email) VALUES

            (1, 'neo', 18, 'smile1@ityouknow.com'),

            (2, 'keep', 36, 'smile2@ityouknow.com'),

            (3, 'pure', 28, 'smile3@ityouknow.com'),

            (4, 'smile', 21, 'smile4@ityouknow.com'),

            (5, 'it', 24, 'smile5@ityouknow.com');

            在示例项目的 resources 目录下创立 db 文件夹,将两个文件放入其间。

            增加依靠

            增加相关依靠包,pom.xml 中的相关依靠内容如下:

            org.projectlombok

            lombok

            true

            com.baomidou

            mybatis-plus-boot-starter

            3.1.1

            com.h2database

            h2

            runtime

            org.springframework.boot

            spring-boot-starter-test

            test

            • lombok,帮助省掉掉 Get/Set 办法,详细能够参阅这篇文章
            • mybatis-plus-boot-starter,MyBatis Plus 的依靠包
            • h2,本次测验咱们运用内存数据库 h2 来演示。
            • spring-boot-starter-test,Spring Boot 的测验包

            装备文件

            # DataSource Config

            spring:

            datasource:

            driver-class-name: org.h2.Driver

            schema: classpath:db/schema-h2.sql

            data: classpath:db/data-h2.sql

            url: jdbc:h2:mem:test

            username: root

            password: test

            # Logger Config

            logging:

            level:

            com.neo: debug

            装备了 h2 数据库,现已项目的日志等级。装备 schema 和 data 后,项目Spring Boot 系列(二):怎么高雅的运用 MyBatis-Plus发动时会依据装备的文件地址来履行数据。

            事务代码

            创立 MybatisPlusConfig 类,指定 Mapper 地址,启用分页功用。

            @Configuration

            @MapperScan("com.neo.mapper")

            public class MybatisPlusConfig {

            /**

            * 分页插件

            */

            @Bean

            public PaginationInterceptor paginationInterceptor() {

            return new PaginationInterceptor();

            }

            }

            创立实体类 User

            @Data

            public class User {

            private Long id;

            private String name;

            private Integer age;

            private String email;

            }

            @Data 为 lombok 语法,主动注入 getter/setter 办法。

            接下来创立目Spring Boot 系列(二):怎么高雅的运用 MyBatis-Plus标关于的 Mapper。

            public interface UserMapper extends BaseMapper {

            }

            以上事务代码就开发完成了,是不是很简略。

            测验

            创立 MySpring Boot 系列(二):怎么高雅的运用 MyBatis-PlusBatisPlusTest 类,注入上面创立的 UserMapper 类。

            @RunWith(SpringRunner.class)

            @SpringBootTest

            public class MyBatisPlusTest {

            @Autowired

            private UserMapper userMapper;

            }

            测验查询单挑数据,并输出

            @Test

            public void testSelectOne() {

            User user = userMapper.selectById(1L);

            System.out.println(user);

            }

            测验增加数据

            @Test

            public void testInsert() {

            User user = new User();

            user.setName("浅笑");

            user.setAgSpring Boot 系列(二):怎么高雅的运用 MyBatis-Pluse(3);

            user.setEmail("neo@tooool.org");

            assertThat(userMapper.insert(user)).isGreaterThan(0);

            // 成功直接拿会写的 ID

            assertThat(user.getId()).isNotNull();

            }

            assertThat() 是 Assert 的一个通晓办法,用来比对回来成果,包来自import static org.assertj.core.api.Assertions.assertThat;。

            测验删去数据

            @Test

            public void testDelete() {

            assertThat(userMapper.deleteById(3L)).isGreaterThan(0);

            assertThat(userMapper.delete(new QueryWrapper()

            .lambda().eq(User::getName, "smile"))).isGreaterThan(0);

            }

            QueryWrapper 是 MyBatis-Plus 内部辅佐查询类,能够运用 lambda 语法,也能够不运用。运用 QueryWrapper 类能够构建各种查询条件。

            测验更新数据

            @Test

            public void testUpdate() {

            User user = userMapper.selectById(2);

            assertThat(user.getAge()).isEqualTo(36);

            assertThat(user.getName()).isEqualTo("keep");

            userMapper.update(

            null,

            Wrappers.lambdaUpdate().set(User::getEmail, "123@123").eq(User::getId, 2)

            );

            assertThat(userMapper.selectById(2).getEmail()).isEqualTo("123@123");

            }

            测验查询一切数据

            @Test

            public void testSelect() {

            List userList = userMapper.selectList(null);

            Assert.assertEquals(5, userList.size());

            userList.forEach(System.out::println);

            }

            测验非分页查询

            @Test

            public void testPage() {

            System.out.println("----- baseMapper 自带分页 ------");

            Page page = new Page<>(1, 2);

            IPage userIPage = userMapper.selectPage(page, new QueryWrapper()

            .gt("age", 6));

            assertThat(page).isSameAs(userIPage);

            System.out.println("总条数 ------> " + userIPage.getTotal());

            System.out.println("当时页数 ------> " + userIPage.getCurrent());

            System.out.println("当时每页显现数 ------> " + userIPage.getSize());

            print(userIPage.getRecords());

            System.out.println("----- baseMapper 自带分页 ------");

            }

            查询大于 6 岁的用户,而且分页展现,每页两条数据,展现第一页。

            总结

            简略运用了一下 MyBatis-Plus 感觉是一款挺不错的 MyBatis 插件,运用 MyBatis-Plus 操作数据库的确能够少写一些代码,别的 MyBatis-Plus 的功用比较丰富,文中仅展现了常用的增修改查和分页查询,假如想进一步学习能够重视官网示例。

            请关注微信公众号
            微信二维码
            不容错过
            Powered By Z-BlogPHP