若依前端分离版整合mybatis-plus

基本上参考官帮助文档就可以http://doc.ruoyi.vip/ruoyi-vue/document/cjjc.html#%E9%9B%86%E6%88%90mybatisplus%E5%AE%9E%E7%8E%B0mybatis%E5%A2%9E%E5%BC%BA

1.ruoyi-common\pom.xml模块添加整合依赖添加依赖。打开mybatisplus官网,用最新的MyBatis-Plus

        <!-- mybatisPlus -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.1</version>
        </dependency>

2.ruoyi-admin文件application.yml,修改mybatis配置为mybatis-plus。将mybatis 改成mybatis-plus就行了

# MyBatis Plus配置
mybatis-plus:
  # 搜索指定包别名
  typeAliasesPackage: com.ruoyi.**.domain
  # 配置mapper的扫描,找到所有的mapper.xml映射文件
  mapperLocations: classpath*:mapper/**/*Mapper.xml
  # 加载全局的配置文件
  configLocation: classpath:mybatis/mybatis-config.xml

3.ruoyi-framework/config/添加Mybatis Plus配置MybatisPlusConfig.java。 原来的MyBatisConfig.java需要删除掉。

package com.ruoyi.framework.config;

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.BlockAttackInnerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.transaction.annotation.EnableTransactionManagement;

/**
 * Mybatis Plus 配置
 * 
 * @author ruoyi
 */
@EnableTransactionManagement(proxyTargetClass = true)
@Configuration
public class MybatisPlusConfig
{
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor()
    {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        // 分页插件
        interceptor.addInnerInterceptor(paginationInnerInterceptor());
        // 乐观锁插件
        interceptor.addInnerInterceptor(optimisticLockerInnerInterceptor());
        // 阻断插件
        interceptor.addInnerInterceptor(blockAttackInnerInterceptor());
        return interceptor;
    }

    /**
     * 分页插件,自动识别数据库类型 https://baomidou.com/guide/interceptor-pagination.html
     */
    public PaginationInnerInterceptor paginationInnerInterceptor()
    {
        PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor();
        // 设置数据库类型为mysql
        paginationInnerInterceptor.setDbType(DbType.MYSQL);
        // 设置最大单页限制数量,默认 500 条,-1 不受限制
        paginationInnerInterceptor.setMaxLimit(-1L);
        return paginationInnerInterceptor;
    }

    /**
     * 乐观锁插件 https://baomidou.com/guide/interceptor-optimistic-locker.html
     */
    public OptimisticLockerInnerInterceptor optimisticLockerInnerInterceptor()
    {
        return new OptimisticLockerInnerInterceptor();
    }

    /**
     * 如果是对全表的删除或更新操作,就会终止该操作 https://baomidou.com/guide/interceptor-block-attack.html
     */
    public BlockAttackInnerInterceptor blockAttackInnerInterceptor()
    {
        return new BlockAttackInnerInterceptor();
    }
}

4.以上就集成完了,下面改domain.加上
@TableName(value="sysUser")
在ID字段上加 @TableId(type=IdType.AUTO)

//这里
@TableName(value = "sys_student")
public class SysStudent implements Serializable
{
//这里
    @TableField(exist = false)
    private static final long serialVersionUID = 1L;

    /** 编号 */
//这里
    @TableId(type = IdType.AUTO)

5.修改服务层I...Service.java,加上extends IService<>

public interface ISysStudentService extends IService<SysStudent>

6.修改mapper,加上extends BaseMapper<实体类名称>

public interface SysStudentMapper extends BaseMapper<SysStudent>

7.修改服务实现层:....ServiceImpl.java , 加上extends ServiceImpl< , >

public class SysStudentServiceImpl extends ServiceImpl<SysStudentMapper, SysStudent> implements ISysStudentService
{

8.domina 中还 继承有一个BaseEntity,打开它修改,给每一个不存在的字段都加上@TableField(exist = false)

**
 * Entity基类
 * 
 * @author ruoyi
 */
public class BaseEntity implements Serializable
{
    private static final long serialVersionUID = 1L;

    /** 搜索值 */
    @TableField(exist = false)
    private String searchValue;

    /** 创建者 */
    @TableField(exist = false)
    private String createBy;

    /**创建者ID*/
    @TableField(exist = false)
    private  Integer idCreatBy;

    /** 创建时间 */
    @TableField(exist = false)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;

    /** 更新者 */
    @TableField(exist = false)
    private String updateBy;

    /** 更新时间 */
    @TableField(exist = false)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date updateTime;

    /** 备注 */
    @TableField(exist = false)
    private String remark;

    /** 请求参数 */
    @TableField(exist = false)
    private Map<String, Object> params;

9.修改代码生成器。domain.java.vm

@TableName("${tableName}") //添加
#if($table.crud || $table.sub)
#set($Entity="BaseEntity")
#elseif($table.tree)
#set($Entity="TreeEntity")
#end
public class ${ClassName} extends ${Entity} implements Serializable //修改
{
............

#else
    @Excel(name = "${comment}")
#end
#end
//这里
#if($column.isPk==1)
    @TableId
#end
    private $column.javaType $column.javaField;

#end

.............

10.修改mapper.java.vm

package ${packageName}.mapper;

import java.util.List;
import ${packageName}.domain.${ClassName};
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
#if($table.sub)
import ${packageName}.domain.${subClassName};
#end

/**
 * ${functionName}Mapper接口
 * 
 * @author ${author}
 * @date ${datetime}
 */
public interface ${ClassName}Mapper extends BaseMapper<${ClassName}>
...........

11.修改serviceImpl.java.vm

package ${packageName}.service.impl;

import java.util.List;
#foreach ($column in $columns)
#if($column.javaField == 'createTime' || $column.javaField == 'updateTime')
import com.ruoyi.common.utils.DateUtils;
#break
#end
#end
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
#if($table.sub)
import java.util.ArrayList;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;//导包
import com.ruoyi.common.utils.StringUtils;
import org.springframework.transaction.annotation.Transactional;
import ${packageName}.domain.${subClassName};
#end
import ${packageName}.mapper.${ClassName}Mapper;
import ${packageName}.domain.${ClassName};
import ${packageName}.service.I${ClassName}Service;

/**
 * ${functionName}Service业务层处理
 * 
 * @author ${author}
 * @date ${datetime}
 */
@Service
public class ${ClassName}ServiceImpl extends ServiceImpl<${ClassName}Mapper, ${ClassName}> implements I${ClassName}Service //修改

12.修改service.java.vm

package ${packageName}.service;

import java.util.List;
import com.baomidou.mybatisplus.extension.service.IService;
import ${packageName}.domain.${ClassName};

/**
 * ${functionName}Service接口
 * 
 * @author ${author}
 * @date ${datetime}
 */
public interface I${ClassName}Service extends IService<${ClassName}>
{

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
以下是一个示例代码,其中包括了Spring Boot整合MyBatis-Plus进行分页查询的实现以及前端页面的展示。 后端代码: ```java @RestController @RequestMapping("/user") public class UserController { @Autowired private UserService userService; /** * 分页查询用户列表 */ @GetMapping("/list") public ResultVo list(Page<User> page) { // 查询条件封装在 QueryWrapper 对象中 QueryWrapper<User> wrapper = new QueryWrapper<>(); wrapper.eq("status", 1); // 查询状态为1的用户 // 执行分页查询 userService.page(page, wrapper); // 将查询结果封装为 ResultVo 对象返回给前端 return ResultVo.success(page); } } ``` 前端代码: ```html <table> <thead> <tr> <th>用户名</th> <th>年龄</th> <th>手机号</th> </tr> </thead> <tbody id="user_list"></tbody> </table> <div id="pagination"></div> <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script> <script src="https://cdn.bootcdn.net/ajax/libs/twbs-pagination/1.4.2/jquery.twbsPagination.min.js"></script> <script> $(function() { // 初始化分页组件 $('#pagination').twbsPagination({ totalPages: 1, visiblePages: 5, onPageClick: function(event, page) { // 发起分页查询请求 $.get('/user/list', { page: page }, function(res) { if (res.code === 200) { // 渲染查询结果到页面 var html = ''; res.data.records.forEach(function(user) { html += '<tr>'; html += '<td>' + user.username + '</td>'; html += '<td>' + user.age + '</td>'; html += '<td>' + user.mobile + '</td>'; html += '</tr>'; }); $('#user_list').html(html); // 更新分页组件 $('#pagination').twbsPagination('destroy'); $('#pagination').twbsPagination({ totalPages: res.data.pages, visiblePages: 5, startPage: res.data.current, first: '首页', prev: '上一页', next: '下一页', last: '末页', onPageClick: function(event, page) { // 发起分页查询请求 $.get('/user/list', { page: page }, function(res) { if (res.code === 200) { // 渲染查询结果到页面 var html = ''; res.data.records.forEach(function(user) { html += '<tr>'; html += '<td>' + user.username + '</td>'; html += '<td>' + user.age + '</td>'; html += '<td>' + user.mobile + '</td>'; html += '</tr>'; }); $('#user_list').html(html); } }); } }); } }); } }); }); </script> ``` 在上面的代码中,我们使用了 MyBatis-Plus 提供的 `Page` 类来进行分页查询,具体的查询条件通过 `QueryWrapper` 对象进行封装。在前端页面中,我们使用了 `jquery.twbsPagination` 插件来实现分页组件,并通过 AJAX 发起分页查询请求,并将查询结果渲染到页面上。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值