1.引入依赖
<!--mysql依赖-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<!--MyBatis-Plus (简称 MP)是一个 MyBatis 的增强工具,
在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.2.0</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus</artifactId>
<version>3.2.0</version>
</dependency>
<!--数据库连接池-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.10</version>
</dependency>
2.dev中 编写配置信息
#数据库链接信息
datasource:
druid:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/clothing?useSSL=false&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8
username: root
password: ZhangFan!!1
initial-size: 1
min-idle: 1
max-active: 20
test-on-borrow: true
#扫描mapper包下以Dao.xml结尾的文件
mybatis-plus:
mapper-locations: classpath*:mapper/*Dao.xml
3.编写配置类
1. 在 config 包下创建 MyMybatisPlusConfiguration 类
2. 为类增加 @Configuration 和 @MapperScan
3. 配置分页插件
package com.zhiyou100.config;
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* @author zhangfan
* @date 2019/10/9
*/
@Configuration //可替换xml中的配置文件,被注解的类中的方法包含一个或者多个@Bean,相当于把类作为xml文件中的<beans>标签
public class MyMybatisPlusConfiguration {
@Bean
public PaginationInterceptor paginationInterceptor() {
PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
// 设置请求的页面大于最大页后操作, true调回到首页,false 继续请求 默认false
// paginationInterceptor.setOverflow(false);
// 设置最大单页限制数量,默认 500 条,-1 不受限制
// paginationInterceptor.setLimit(500);
return paginationInterceptor;
}
}
4.编写实体类(我这个类里已经用了lombok插件)
0.前提数据库表明和实体类名对应,字段和属性符合驼峰命名
1.为类添加注解@TableName
2. 为主键属性增加 @TableId(type = IdType.AUTO) 注解
package com.zhiyou100.demo.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**管理员信息
* @author zhangfan
* @date 2019/10/9
*/
@Data //生成tostring和get&&set方法
@NoArgsConstructor //生成无参构造方法
@AllArgsConstructor //生成全部有参构造方法
@TableName("admin") //写上表名方便映射数据库
public class Admin {
@TableId(type = IdType.AUTO) //说明是主键
private Integer id;
private String account;
private String password;
}
5.编写 dao 接口
1. 继承自 BaseMapper<T> 后就拥有一些简单的增删改查方法
https://mp.baomidou.com/guide/crud-interface.html#mapper-crud-%E6%8E%A5%E5%8F%A3
package com.zhiyou100.demo.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zhiyou100.demo.entity.Admin;
/**管理员登录
* @author zhangfan
* @date 2019/10/9
*/
public interface AdminDao extends BaseMapper<Admin> {
/**
* 判断账号是否存在
* @param account 账号
* @return 账号信息
*/
Admin findAccount(String account);
/**
* 判断账号和密码是否正确
* @param account 账号
* @param password 密码
* @return 账号信息
*/
Admin findAccountAndPassword(String account,String password);
}
-
自定义方法
1. 使用 @Param() 指定 mapper 中可以使用的参数名 2. 支持分页需要把 IPage<T> page 最为方法的第一个参数
比如内置的分页:
@Test
public void testFindAll(){
//查询全部
List<User> users = userRepository.findAll();
users.forEach(System.out::println);
System.out.println("-------------------------------------");
//分页功能
//页码(当前是第几页)从0开始
Page<User> page = userRepository.findAll(PageRequest.of(0,2));
System.out.println("总页数:" + page.getTotalPages());
System.out.println("总条数:" + page.getTotalElements());
System.out.println("当前页:" + page.getNumber());
System.out.println("当前页数据总条数:" + page.getNumberOfElements());
System.out.println("数据:" + page.getContent());
}
@Test
public void testFindByEmailKeyword(){
Page page = new Page(4,2);
IPage<User> userPage = userDao.findByEmailKeyword(page,"%com%");
System.out.println("当前页:" + userPage.getCurrent());
System.out.println("总页数:" + userPage.getPages());
System.out.println("页容量:" + userPage.getSize());
System.out.println("总条数:" + userPage.getTotal());
System.out.println("页内容:" + userPage.getRecords());
}
6.编写 mapper 配置 SQL
1. 使用 mybatisx 插件可以快速创建和编写 mapper(在dao接口名字上:快捷键Alt+Enter)
2. 按照规则定义好的分页方法,不需要我们进行额外的 SQL 操作