【java|SpringBoot+MyBatisPlus】MyBatis-Plus官网
MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。
- 创建springboot项目
mysql
mysql-connector-java
runtime
com.baomidou
mybatis-plus-boot-starter
3.3.1.tmp
org.projectlombok
lombok
1.18.10
provided
1.2、application.properties 配置
# mysql 5 驱动不同 com.mysql.jsbc.Driver
# mysql 8 驱动不同 com.mysql.cj.jsbc.Driver、需要增加时区的配置
spring.datasource.username=root (数据库用户名)
spring.datasource.password=Aa123123.(数据库密码)spring.datasource.url=jdbc:mysql://localhost:3306/mybatis_plus?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8(数据库连接地址)
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver(数据源)
#配置日志
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
1.3、BootApplication添加@MapperScan注解
package com.example.plus;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@MapperScan("com.example.plus.dao") //扫描mapper文件夹
public class MybatisPlusApplication {
public static void main(String[] args) {
SpringApplication.run(MybatisPlusApplication.class, args);
}
}
1.4、实体 常用注解:
@TableName("表名")
当表名与实体类名不一致时,可以在实体类上加入@TableName()声明@TableId
声明属性为表中的主键(若属性名称不为默认id)@TableFieId("字段")
当实体类属性与表字段不一致时,可以用来声明
package com.example.plus.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
@Data//pom文件添加了lombok依赖,使用@Data 注解实现: 无参、 有参构造、 get、 set、 方法
@TableName("user") //当表名与实体类名不一致时,可以在实体类上加入@TableName()声明
public class User {
@TableId //声明属性为表中的主键(若属性名称不为默认id)
@TableId(type = IdType.AUTO) //主键自增,数据库字段也务必设置为自增长
private Long id;
//@TableField("name") //当实体类属性与表字段不一致时,可以用来声明
//private String UserName;
private String name;
private Integer age;
private String email;
}
1.5、UserMapper.java
package com.example.plus.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.plus.entity.User;
/**
* 在对应的Mapper上继承基本的类baseMapper
*/
public interface UserMapper extends BaseMapper {
//所有的CRUD已经编写完成 (增删改查)
//不需要像以前的配置一些xml
}
1.6、Controller中使用Wrapper进行条件查询
package com.example.plus.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.example.plus.dao.UserMapper;
import com.example.plus.entity.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.Map;
@RestController
@RequestMapping("/test")
@Slf4j//控制台打印日志(lombok)
public class TestController {
@Autowired(required = false)
private UserMapper userMapper;
@GetMapping("/list")
public List listUser(){
//参数是一个Wrapper,条件结构器,这里先不用 填null
List userList = userMapper.selectList(null);
return userList;
}
/**
* 查询name不为null的用户,并且邮箱不为null的永不,年龄大于等于20的用户
*
* @return
*/
@GetMapping("/t1")
public List t1(){
QueryWrapper wrapper =new QueryWrapper<>();
wrapper.isNotNull("name");
wrapper.isNotNull("email");
wrapper.ge("age",20);
//ge 是大于le是小于
return userMapper.selectList(wrapper);
}
/**
* 查询name为shuishui的用户
*
* @return
*/
@GetMapping("/t2")
public List t2(){
QueryWrapper wrapper =new QueryWrapper<>();
wrapper.eq("name","shuishui");
return userMapper.selectList(wrapper);
}
/**
* 查询年龄在20~30岁之间的用户
*
* @return
*/
@GetMapping("/t3")
public Integer t3(){
QueryWrapper wrapper =new QueryWrapper<>();
wrapper.between("age",20,30);
return userMapper.selectCount(wrapper);
//查询结果数
}
/**
* 模糊查询
*
* @return
*/
@GetMapping("/t4")
public List
QueryWrapper的方法:
文章图片
注意:本博客测试时未写service业务层
service 接口:
文章图片
service 实现类:
文章图片
- IService 实现类( 泛型:M 是 mapper 对象,T 是实体 )
- M代表的是:继承了BaseMapper的对象
- T代表的是:实体类对象
推荐阅读
- 微服务|Springboot集成Mybatisplus,轻松CRUD
- springboot系列|【springboot系列】springboot整合mybatisplus实现CRUD
- jvm|关于JVM和JDK
- java|Spring Boot干货系列((一)优雅的入门篇 | 掘金技术征文)
- java|Java 中台技术盘点,这些技术你了解还远远不够
- java|朱晔的互联网架构实践心得S2E2(写业务代码最容易掉的10种坑 | 掘金年度征文...)
- Spring|猿创征文|Spring Boot运行原理及功能实现方式
- 笔记|15天完成民猫电商毕设——消息模块收尾(12th day)
- 前端|微信公众号支付(JSAPI)