springboot集成mybatis-plus

本文介绍了如何在SpringBoot项目中配置并使用MyBatis-Plus,包括添加依赖、数据库配置、驼峰命名转换、分页拦截器的设置以及Mapper接口的使用。同时,展示了如何通过配置实现数据库字段与Java属性的映射,以及分页查询的实现。通过这些步骤,可以快速搭建起基于MyBatis-Plus的数据库操作框架。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

遇到的问题:

如果Java类中的主键对应的id 不是 id而是其他的比如 userId等等,一定要在userId上面加一个@TableId(“user_id”)----->这个user_id 是数据库中的字段

其次,数据库命名规范,最好是user_name,pass_word,则对应的Java对象中的属性 是 userName,passWord,这是驼峰命名法,将user_name,pass_word与Java对象中的userName,passWord一一映射,不然很难办,遵守约定把,不然很难受的,我就搞了半天搞不出来,就因为这格式不规范

1.添加pom引用

maven的引用很简单,官方已经给出starter,不需要我们考虑它的依赖关系了,此处使用的是2.3版本。

<dependency>
   <groupId>com.baomidou</groupId>
   <artifactId>mybatis-plus-boot-starter</artifactId>
   <version>2.3</version>
</dependency>

2.配置

[复制代码](javascript:void(0)😉

server.port=8080
 
#mysql
spring.datasource.url=jdbc:mysql://localhost:3306/ease-run?useUnicode=true&characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
#mybatis-plus
mybatis-plus.mapper-locations=classpath:com/mht/springbootmybatisplus/mapper/xml/*.xml
mybatis-plus.type-aliases-package=com.mht.springbootmybatisplus.entity
mybatis-plus.configuration.map-underscore-to-camel-case: true
 

[复制代码](javascript:void(0)😉

官方已经提供了基于springboot的配置,将其拷贝过来放在application.yml中即可使用,此处只是将官方部分的配置删减过一些。其中column-underline: true特别好用,会自动将下划线格式的表字段,转换为以驼峰格式命名的属性。

官方提供的yml配置:

[复制代码](javascript:void(0)😉

mybatis-plus:
  global-config:
    db-config:
      id-type: auto
      field-strategy: not_empty
      #驼峰下划线转换
      column-underline: true
      #逻辑删除配置
      logic-delete-value: 0
      logic-not-delete-value: 1
      db-type: mysql
    refresh: false
  configuration:
    map-underscore-to-camel-case: true
    cache-enabled: false

[复制代码](javascript:void(0)😉

注意事项:
需要更改的地方有:文件输出路径(根据项目需要定制),数据源(此类是单独的数据库反向生成代码执行文件,因此springboot的数据源不起作用),包配置,以及一些基本的生成策略…总之还是参考一下我的另一篇文章吧,谢谢!

执行,刷新,获得自动生成的业务代码,不再赘述。

注意!!!生成后一定记得在spring boot项目中添加mybatis的包扫描路径,或@Mapper注解:

[复制代码](javascript:void(0)😉

@SpringBootApplication
@MapperScan("com.mht.springbootmybatisplus.mapper")
public class SpringBootMybatisPlusApplication {
    private static final Logger logger = LoggerFactory.getLogger(SpringBootMybatisPlusApplication.class);
 
    public static void main(String[] args) {
        SpringApplication.run(SpringBootMybatisPlusApplication.class, args);
        logger.info("========================启动完毕========================");
    }
}

[复制代码](javascript:void(0)😉

或:

@Mapper
public interface UserMapper extends BaseMapper<User> {
}

否则会报:Error creating bean with name ‘xxxServiceImpl’: Unsatisfied dependency expressed through field ‘baseMapper’;

至此,我们的底层增删改查操作全部完毕!下面来编写简单的controller来测试效果。

controller:

5.分页

1.添加配置文件,此处配置文件表示开启mybatis-plus分页功能

[复制代码](javascript:void(0)😉

@EnableTransactionManagement
@Configuration
public class MybatisPlusConfig {
 
    @Bean
    public PaginationInterceptor paginationInterceptor() {
        return new PaginationInterceptor();
    }
}

[复制代码](javascript:void(0)😉

或者:

[复制代码](javascript:void(0)😉

package com.paic.ocss.gateway.dao.config;

import com.baomidou.mybatisplus.entity.GlobalConfiguration;
import com.github.pagehelper.PageHelper;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;

import java.util.Properties;

@Configuration
@MapperScan("com.paic.ocss.gateway.dao.mapper*")
@Import(value = { com.paic.ocss.monitor.cat.mybatis.SpringCloudCatMybatisConfig.class })
public class MybatisConfig {

    @Bean
    public GlobalConfiguration globalConfiguration() {
        GlobalConfiguration global = new GlobalConfiguration();
        global.setDbType("mysql");
        return global;
    }

    /**
     * 配置mybatis的分页插件pageHelper
     * @return
     */
    @Bean
    public PageHelper pageHelper(){
        PageHelper pageHelper = new PageHelper();
        Properties properties = new Properties();
        properties.setProperty("offsetAsPageNum","true");
        properties.setProperty("rowBoundsWithCount","true");
        properties.setProperty("reasonable","true");
        //配置mysql数据库的方言
        properties.setProperty("dialect","mysql");
        pageHelper.setProperties(properties);
        return pageHelper;
    }

}

[复制代码](javascript:void(0)😉

Mapper:

[复制代码](javascript:void(0)😉

/**
 * User 表数据库控制层接口
 */
public interface UserMapper extends BaseMapper<User> {
    @Select("selectUserList")
    List<User> selectUserList(Pagination page,String state);
}

[复制代码](javascript:void(0)😉

新建UserMapper配置文件:

[复制代码](javascript:void(0)😉

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.baomidou.springmvc.mapper.system.UserMapper">

    <!-- 通用查询结果列-->
    <sql id="Base_Column_List">
        id, name, age
    </sql>

    <select id="selectUserList" resultType="User">
        SELECT * FROM sys_user WHERE state=#{state}
    </select>
</mapper>

[复制代码](javascript:void(0)😉

4.新建service层类UserService:

[复制代码](javascript:void(0)😉

/**
 *
 * User 表数据服务层接口实现类
 *
 */
@Service
public class UserService extends ServiceImpl<UserMapper, User>{
    public Page<User> selectUserPage(Page<User> page, String state) {
        page.setRecords(baseMapper.selectUserList(page,state));
        return page;
    }
}

[复制代码](javascript:void(0)😉

UserService继承了ServiceImpl类,mybatis-plus通过这种方式为我们注入了UserMapper,这样可以使用service层默认为我们提供的很多方法,也可以调用我们自己在dao层编写的操作数据库的方法.Page类是mybatis-plus提供分页功能的一个model,继承了Pagination,这样我们也不需要自己再编写一个Page类,直接使用即可.

5,新建controller层UserController:

[复制代码](javascript:void(0)😉

@Controller
public class UserController extends BaseController {

    @Autowired
    private IUserService userService;

    @ResponseBody
    @RequestMapping("/page")
    public Object selectPage(Model model){

        Page page=new Page(1,10);          //1表示当前页,而10表示每页的显示显示的条目数
        page = userService.selectUserPage(page, "NORMAL");
        return page;
    }

rService;

@ResponseBody
@RequestMapping("/page")
public Object selectPage(Model model){

    Page page=new Page(1,10);          //1表示当前页,而10表示每页的显示显示的条目数
    page = userService.selectUserPage(page, "NORMAL");
    return page;
}

[![复制代码](https://i-blog.csdnimg.cn/blog_migrate/9fafc5631ba1215db74dcb775c5144aa.png)](javascript:void(0);)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BLUE_SEVEN

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值