我是靠谱客的博主 殷勤鼠标,这篇文章主要介绍MybatisPlus动态表名,现在分享给大家,希望可以做个参考。

今天在写项目的时候遇见一个问题:
数据库中的数据表是按年份划分的,刚开始实现的时候,分别创建了一个实体类与数据库中的表对应,但是这样如果到下一年就会不能再查到数据,扩充性不是很好,于是就用了MybatisPlus中的动态表名。
官方链接:https://gitee.com/baomidou/mybatis-plus-samples/tree/master/mybatis-plus-sample-dynamic-tablename

项目目录:
在这里插入图片描述
MybatisPlusConfig

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
package com.baomidou.mybatisplus.samples.dytablename.config; import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; import com.baomidou.mybatisplus.extension.plugins.handler.TableNameHandler; import com.baomidou.mybatisplus.extension.plugins.inner.DynamicTableNameInnerInterceptor; import org.mybatis.spring.annotation.MapperScan; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import java.util.HashMap; import java.util.Random; /** * @author miemie * @since 2018-08-10 */ @Configuration @MapperScan("com.baomidou.mybatisplus.samples.dytablename.mapper") public class MybatisPlusConfig { @Bean public MybatisPlusInterceptor mybatisPlusInterceptor() { MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); DynamicTableNameInnerInterceptor dynamicTableNameInnerInterceptor = new DynamicTableNameInnerInterceptor(); HashMap<String, TableNameHandler> map = new HashMap<String, TableNameHandler>(2) {{ put("user", (sql, tableName) -> { String year = "_2018"; int random = new Random().nextInt(10); if (random % 2 == 1) { year = "_2019"; } return tableName + year; }); }}; dynamicTableNameInnerInterceptor.setTableNameHandlerMap(map); interceptor.addInnerInterceptor(dynamicTableNameInnerInterceptor); return interceptor; } }

User

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package com.baomidou.mybatisplus.samples.dytablename.entity; import lombok.Data; import lombok.experimental.Accessors; /** * <p> * 用户实体对应表 user * </p> * * @author hubin * @since 2018-08-11 */ @Data @Accessors(chain = true) public class User { private Long id; private String name; private Integer age; private String email; }

UserMapper

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package com.baomidou.mybatisplus.samples.dytablename.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.samples.dytablename.entity.User; /** * <p> * MP 支持不需要 UserMapper.xml 这个模块演示内置 CRUD 咱们就不要 XML 部分了 * </p> * * @author hubin * @since 2018-08-11 */ public interface UserMapper extends BaseMapper<User> { }

在这里插入图片描述
需要注意的是MybatisPlus中的user一定要与实体类中对应的驼峰命名字段一样,例如User - > user

UserVo -> user_vo如上图所示

详细代码可以参考官方

最后

以上就是殷勤鼠标最近收集整理的关于MybatisPlus动态表名的全部内容,更多相关MybatisPlus动态表名内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(70)

评论列表共有 0 条评论

立即
投稿
返回
顶部