1、Mybatis-plus的优点?
学过mybatis的小伙伴肯定知道早期的mybatis需要写很多Mapper.xml文件,这种方式导致的缺陷也很明显。
由于需求导致 Entity需要增减一个字段,那么与此同时需要修改Mapper.xml文件。导致 牵一发而动全身(总之麻烦!!)
在新版本mybatis3中虽然脱离了使用Mapper.xml文件,代替的方式是通过注解开发,把Sql语句写在了注解上。但是这种方式依然需要修改Sql语句(需要寻找注解),依然没有解决之前遗留的问题。
因此Mybatis-plus诞生了,它的出现就是为了解决这个问题,全过程中不需要写Sql代码,这样减少了开发工作量。
使用idea的spring initializer 初始化一个springboot项目。
mybatis-plus官网:https://mybatis.plus/
在mysql数据库中新建一个mp数据库,执行下面代码,添加测试数据
#创建用户表 CREATE TABLE user ( id BIGINT(20) PRIMARY KEY NOT NULL COMMENT '主键', name VARCHAR(30) DEFAULT NULL COMMENT '姓名', age INT(11) DEFAULT NULL COMMENT '年龄', email VARCHAR(50) DEFAULT NULL COMMENT '邮箱', manager_id BIGINT(20) DEFAULT NULL COMMENT '直属上级id', create_time DATETIME DEFAULT NULL COMMENT '创建时间', CONSTRAINT manager_fk FOREIGN KEY (manager_id) REFERENCES user (id) ) ENGINE=INNODB CHARSET=UTF8; #初始化数据: INSERT INTO user (id, name, age, email, manager_id , create_time) VALUES (1087982257332887553, '大boss', 40, '[email protected]', NULL , '2019-01-11 14:20:20'), (1088248166370832385, '王天风', 25, '[email protected]', 1087982257332887553 , '2019-02-05 11:12:22'), (1088250446457389058, '李艺伟', 28, '[email protected]', 1088248166370832385 , '2019-02-14 08:31:16'), (1094590409767661570, '张雨琪', 31, '[email protected]', 1088248166370832385 , '2019-01-14 09:15:15'), (1094592041087729666, '刘红雨', 32, '[email protected]', 1088248166370832385 , '2019-01-14 09:48:16');
在 resources下新建一个文件application.yml 添加数据源连接配置。
注意修改 用户名和密码
spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/mp?useSSL=false&serverTimezone=GMT%2B8 username: root password: 123456 mybatis-plus: configuration: map-underscore-to-camel-case: true # 开启驼峰命名
实例代码
entity层:使用了lombok注解,动态生成get、set、toString方法。需要添加lombok依赖
org.projectlombok lombok true User实例类:
package com.example.demo.entity; import lombok.Data; import java.io.Serializable; import java.time.LocalDateTime; @Data public class User implements Serializable { private Long id;//主键 private String name;// 姓名 private int age;// 年龄 private String email;// 邮箱 private Long managerId;// 上级领导 private LocalDateTime createTime;// 创建时间 }
dao层:使用到了mybatis-plus
首先添加maven依赖:springboot项目用下面这个依赖!
com.baomidou mybatis-plus-boot-starter 3.2.0 注意这里的依赖!我之前犯过错误!因为使用的是springboot项目所以用上面这个依赖。如果是spring项目则用下面的依赖
com.baomidou mybatis-plus 3.2.0 然后就可以使用BaseMapper
UserMapper接口类:
package com.example.demo.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; import org.springframework.stereotype.Component; import com.example.demo.entity.User; @Mapper @Component public interface UserMapper extends BaseMapper
{ }
例如:@MapperScan(“top.yumbo.dao”) 这样启动的时候就不会因为注入的时候导致报错
测试:在单元测试中添加对应代码
如下,如果出现下面一样的报红没有关系,不影响代码执行。想要消去则可以将上面的UserMapper上加一个@Component注解即可(来自import org.springframework.stereotype.Component;)
在执行测试方法前你还需要添加一个依赖就是jdbc依赖
mysql mysql-connector-java runtime 总结上面的依赖:有lombok、mybatis-plus-boot-starter、mysql-connector-java三个依赖,其它依赖通过spring initializer直接生成的springboot依赖和单元测试依赖
执行Test方法
如下得到结果
是否发现我没有使用sql代码就查询到了结果呢(当然在过程中还是通过生成sql进行查询的)