java SpringBoot(十三)MyBatis Plus 自动配置介绍以及使用MyBatis Plus

22 篇文章 1 订阅
11 篇文章 0 订阅

MyBatis Plus 官方

https://baomidou.com/

1、引入MyBatis Starter  引入Druid当做数据源 引入mysql驱动

		<dependency>
			<groupId>com.baomidou</groupId>
			<artifactId>mybatis-plus-boot-starter</artifactId>
			<version>3.4.1</version>
		</dependency>
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>druid-spring-boot-starter</artifactId>
			<version>1.1.17</version>
		</dependency>
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
		</dependency>

查看引入的依赖

发现该依赖帮我们引入了 jdbc 跟  mybatis,所以我们在pom删除或者注释掉mybatis跟jdbc的相关包

2、查看MyBatis Plus的自动配置类 发现MyBatis Plus自动配置:

  • MybatisPlusAutoConfiguration 配置类,MybatisPlusProperties 配置项绑定。mybatis-plus:xxx 就是对mybatis-plus的定制
  • SqlSessionFactory 自动配置好。底层是容器中默认的数据源
  • mapperLocations 自动配置好的。有默认值。classpath*:/mapper/**/*.xml;任意包的类路径下的所有mapper文件夹下任意路径下的所有xml都是sql映射文件。  建议以后sql映射文件,放在 mapper下
  • 容器中也自动配置好了 SqlSessionTemplate
  • @Mapper 标注的接口也会被自动扫描;建议直接 @MapperScan("com.atguigu.admin.mapper") 批量扫描就行

3、数据库创建以及数据插入

4、修改配置文件

server:
  port: 8081 #spring 启动端口
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/test #mysql 地址
    username: root
    password: 123456
    driver-class-name: com.mysql.jdbc.Driver #指定驱动

    druid:
      filters: stat,wall,slf4j #指定开启的功能

      stat-view-servlet: #监控页面配置
        enabled: true #开启
        login-username: admin #账号 密码
        login-password: admin
        reset-enable: false
      web-stat-filter: #web 过滤器
        enabled: true #开启
        url-pattern: /* #监控的页面
        exclusions: '*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*' #解除监控的页面
      filter:
        stat:
          slow-sql-millis: 1000 #慢sql阈值 ms
          log-slow-sql: true #日志记录慢sql
          enabled: true #开启
        wall:
          enabled: true #开启防火墙
          config:
            drop-table-allow: false #禁止删除表的操作

mybatis-plus:
  configuration:
    map-underscore-to-camel-case:  #开启驼峰字段转换

5、创建bean包装类

 

因为表中没有userName字段 所以这里加上注解

package com.example.demo.bean;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;

@Data
@TableName("user") //指定表名
public class User {

    @TableField(exist = false) //表示不是表中的属性
    private String userName;

    private Long id;
    private String name;
    private Integer age;
    private String email;
}

6、创建Dao层mapper

mapper继承了BaseMapper 

package com.example.demo.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.demo.bean.User;

public interface UserMapper extends BaseMapper<User> {

}

BaseMapper中有很多基本的crud功能

7、service层实现

service层接口:

package com.example.demo.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.example.demo.bean.User;

public interface UserService extends IService<User> {
}

继承了IService接口

我们看看IService接口包含了什么功能

也是一些方便的增删改查以及分页等功能,可以说很强大了!

接口实现类:

package com.example.demo.service.impl;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.example.demo.bean.User;
import com.example.demo.mapper.UserMapper;
import com.example.demo.service.UserService;
import org.springframework.stereotype.Service;

@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {

}
ServiceImpl帮我们实现了UserService里边的接口,所以我们继承他就不需要实现接口里的所有方法了。

8、使用

package com.example.demo.controller;

import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.demo.bean.User;
import com.example.demo.service.StudentService;
import com.example.demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Controller
public class SqlConTestController {

    @Autowired
    JdbcTemplate jdbcTemplate;

    @Autowired
    StudentService studentService;

    @ResponseBody
    @GetMapping("/query")
    public String query(){
        Long count = jdbcTemplate.queryForObject("select count(*) from student", Long.class);
        return count.toString();
    }

    @ResponseBody
    @GetMapping("/query2")
    public String query2(@RequestParam("id") Long id){
        return studentService.getStudentById(id).toString();
    }

    @Autowired
    UserService userService;

    @ResponseBody
    @GetMapping("/query_user")
    public String queryUser(@RequestParam("id") Long id){
//        List<User> userList = userService.list(); //返回查询全部的列表
//        return JSONArray.toJSONString(userList);

//        return userService.getById(id).toString(); //返回单个查询结果
//        userService.removeById(id);//删除某条
        //---  分页需要在容器中注入分页插件
        Page<User> userPage = new Page<>(0, 2); //分页 第一页 大小为两条
        Page<User> page = userService.page(userPage); //分页查询的结果
        long pages = page.getPages();//总页码
        long current = page.getCurrent();//当前页码
        long total = page.getTotal();//总数
        List<User> records = page.getRecords();//查询结果
        Map<String, String> map = new HashMap<>();
        map.put("all pages", String.valueOf( pages));
        map.put("current page", String.valueOf(current));
        map.put("all total", String.valueOf(total));
        map.put("query result", JSONArray.toJSONString(records));
        return map.toString();
    }

}

注意 这里要开启分页功能,还需要注入相关组件:

package com.example.demo.config;


import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class MyBatisConfig {


    /**
     * MybatisPlusInterceptor
     * @return
     */
    @Bean
    public MybatisPlusInterceptor paginationInterceptor() {
        MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
        // 设置请求的页面大于最大页后操作, true调回到首页,false 继续请求  默认false
        // paginationInterceptor.setOverflow(false);
        // 设置最大单页限制数量,默认 500 条,-1 不受限制
        // paginationInterceptor.setLimit(500);
        // 开启 count 的 join 优化,只针对部分 left join

        //这是分页拦截器
        PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor();
        paginationInnerInterceptor.setOverflow(true);// 设置请求的页面大于最大页后操作, true调回到首页,false 继续请求  默认false
        paginationInnerInterceptor.setMaxLimit(500L);// 设置最大单页限制数量,默认 500 条,-1 不受限制
        mybatisPlusInterceptor.addInnerInterceptor(paginationInnerInterceptor);

        return mybatisPlusInterceptor;
    }
}

查看结果:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用MyBatis Plus可以简化MyBatis的开发,以下是在Spring Boot项目中使用MyBatis Plus的配置步骤: 1. 添加依赖 在 `pom.xml` 文件中添加 MyBatis-Plus 的依赖: ```xml <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.x.x</version> </dependency> ``` 2. 配置数据源 在 `application.properties` 文件中配置数据源: ```properties spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/test?useSSL=false&useUnicode=true&characterEncoding=utf8 spring.datasource.username=root spring.datasource.password=123456 ``` 3. 配置 MyBatis Plus 在 Spring Boot 中配置 MyBatis Plus 有两种方式: 方式一:使用自动配置 在 Spring Boot 中,MyBatis Plus 已经提供了自动配置的功能,你只需要在你的配置类上添加 `@MapperScan` 注解即可。 ```java @Configuration @MapperScan("com.example.mapper") // 要扫描的Mapper接口所在的包 public class MybatisPlusConfig { } ``` 这样,MyBatis Plus 就会自动扫描指定包下的 Mapper 接口,并将其注册到 MyBatis 中。 方式二:手动配置 自动配置不适用于所有情况。如果你需要手动配置 MyBatis Plus,可以创建一个 `MybatisPlusConfig` 配置类,添加以下内容: ```java @Configuration public class MybatisPlusConfig { /** * 配置分页插件 */ @Bean public PaginationInterceptor paginationInterceptor() { PaginationInterceptor paginationInterceptor = new PaginationInterceptor(); // 设置请求的页面大于最大页后操作,true调回到首页,false继续请求,默认false paginationInterceptor.setOverflow(false); // 设置最大单页限制数量,默认 500 条,-1 不受限制 paginationInterceptor.setLimit(500); return paginationInterceptor; } } ``` 在以上配置中,我们配置MyBatis Plus 的分页插件,使得在查询时可以进行分页。 4. 编写 Mapper 接口 使用 MyBatis Plus,你只需要编写 Mapper 接口,不需要编写对应的Mapper.xml文件,MyBatis Plus 会根据接口的方法名自动生成 SQL 语句。 ```java public interface UserMapper extends BaseMapper<User> { } ``` 在以上代码中,我们定义了一个 UserMapper 接口,并继承了 MyBatis Plus 自带的 BaseMapper 接口,这样我们就可以直接使用 MyBatis Plus 提供的增删改查方法。 5. 使用 Mapper 接口 在 Service 层中使用 `@Autowired` 注解注入 Mapper 接口。 ```java @Service public class UserServiceImpl implements UserService { @Autowired private UserMapper userMapper; @Override public User getUserById(Long id) { return userMapper.selectById(id); } } ``` 在以上代码中,我们在 Service 层中注入了 UserMapper 接口,并使用`selectById`方法查询用户信息。 至此,你已经完成了在 Spring Boot 中使用 MyBatis Plus 的配置

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值