springboot整合mybatis plus

一、导入依赖:
在pom.xml中导入连接数据库和mybatis plus相关依赖:

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-data-jdbc</artifactId>
</dependency>
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
	<groupId>mysql</groupId>
	<artifactId>mysql-connector-java</artifactId>
	<scope>runtime</scope>
</dependency>
<!--druid数据源(连接池)-->
<dependency>
	<groupId>com.alibaba</groupId>
	<artifactId>druid-spring-boot-starter</artifactId>
	<version>1.1.17</version>
</dependency>
<!--mybatis plus ,导入的mybatis plus依赖,里面包含了mybatis依赖-->
<dependency>
	<groupId>com.baomidou</groupId>
	<artifactId>mybatis-plus-boot-starter</artifactId>
	<version>3.4.1</version>
</dependency>

二、配置mybatis plus:
在application.yaml文件中配置:

spring:
# 数据库连接的基本信息
  datasource:
    url: jdbc:mysql://localhost:3306/test
    username: root
    password: 123456
    driver-class-name: com.mysql.cj.jdbc.Driver
# druid数据源配置
    druid:
      aop-patterns: com.springboot.mybatis.*  #监控SpringBean
      filters: stat,wall     # 底层开启功能,stat(sql监控),wall(防火墙)

      stat-view-servlet:   # 配置监控页功能
        enabled: true
        login-username: admin  # 监控页的登录用户
        login-password: admin  # 监控页的登录密码
        resetEnable: false

      web-stat-filter:  # 监控web
        enabled: true
        urlPattern: /*
        exclusions: '*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*'


      filter:
        stat:    # 对上面filters里面的stat的详细配置
          slow-sql-millis: 1000
          logSlowSql: true
          enabled: true
        wall:
          enabled: true
          config:
            drop-table-allow: false
  
# 配置mybatis规则
mybatis:
  #  config-location: classpath:mybatis/mybatis-config.xml   # 配置mybatis全局配置文件的路径
  mapper-locations: classpath:mybatis/mapper/*.xml  # 配置mapper.xml文件的位置
  configuration:
    map-underscore-to-camel-case: true  # 开启驼峰命名法

三、使用mybatis plus的功能:

类似于springMVC,springboot中web开发也分为4层,如下:

层(包) 备注
bean 数据库表对应的bean类型
mapper 操作数据库
service 接口:定义方法;实现类:实现方法
controller 定义请求函数

数据库中有这样的一个表:

user:

列名 类型
id int
name varchar
sex varcahr

1. 创建一个bean类

import lombok.Data;
@Data  // 自动生成get和set方法,注意不会在代码中显示出get和set方法,而是在代码打包时,自动为我们生成
public class User {
    private Integer id;
    private String name;
    private String sex;
}

2. 创建一个mapper:用来操作数据库

// mapper接口,使用@Mapper标注,这样我们就可以在容器中拿到这个mapper
// mapper主要是用来操作数据库的
// 继承BaseMapper,就可以使用BaseMapper里面定义的方法
// 如果要是用mybatis plus时,需要继承BaseMapper<操作的数据库表对应bean类>
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface UserMapper extends BaseMapper<User> {
}

mybatis plus(BaseMapper)为我们提供的方法:
在这里插入图片描述
3. 创建一个service:interface,实现类

定义一个interface:
继承 IService<数据库表的类型bean>

public interface UserService extends IService<User> {
    public User getDataById(Integer id); //定义一个方法
}

定义实现类:
实现UserService,继承ServiceImpl<对应的mapper, 数据库表的类型bean>
注意:使用@Service标注

@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
	//从容器中拿到userMapper
    @Autowired
    UserMapper userMapper;

    @Override
    public User getDataById(Integer id) {
    	//注意:在Mapper中并没有定义selectById方法
    	//selectById方法时mybatis plus给我们提供的方法
        return userMapper.selectById(id);
    }
}

4. 创建一个controller:使用操作数据库的方法

@RestController  //标注是一个Controller类
public class MyController {
	 // 从容器中自动获取UserService(定义的interface)
    @Autowired
    UserService userService;

    @GetMapping("/get_data")
    public User getData(@RequestParam("id") Integer id){
        return userService.getDataById(id);
    }
}

5. 重启服务,在浏览器中访问:
在这里插入图片描述

6. 如果mybatis plus提供的方法无法满足需求,我们还可以在mapper中自定义方法:

@Mapper
public interface UserMapper extends BaseMapper<User> {
    @Select("select * from user where name = #{name}")
    public User getDataByName(String name);
}

写好方法后,在service层中使用方法和mybatis plus提供的方法一致
理解:mapper继承了BaseMapper,那么mapper就可以使用BaseMapper的方法和属性,同时我们还可以自定义方法

7. 由于导入了druid数据源的依赖,在application中也配置了,所以可以访问监控页:

访问:http://localhost:8080/druid
初次访问需要登录:账号密码在application中定义了
url监控:
在这里插入图片描述

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐