maven使用mybatis-plus

2020-04-07

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.laozhang.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.laozhang.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.启动类添加注解

@MapperScan("com.laozhang.dao")   //为dao接口生成代理类,扫描dao接口的文件位置

6.编写 dao 接口

1. dao接口继承自 BaseMapper<实体类名> 后就拥有一些简单的增删改查方法
https://mp.baomidou.com/guide/crud-interface.html#mapper-crud-%E6%8E%A5%E5%8F%A3

package com.laozhang.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);
}

7.自定义方法

1. 使用 @Param() 指定 mapper 中需要使用的参数名
2. 支持分页需要把 IPage page 作为方法的第一个参数

    /**
     * 后台查询所有的商品信息
     * @return
     */
    IPage<TenCustomProduct> findTenCustomProductByAdmin(@Param("page") IPage<TenCustomProduct> page, @Param("customId") Integer customId);

比如内置的分页:

	@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());
}

8.编写 mapper 配置 SQL

1. 使用 mybatis-plus 插件可以快速创建和编写 mapper(在dao接口名字上:快捷键Alt+Enter)
2. 按照规则定义好的分页方法,不需要我们进行额外的 SQL 操作


标题:maven使用mybatis-plus
作者:张范
地址:http://misterzhang.top/articles/2020/04/07/1586242087906.html