复习自定义方言的使用

本文介绍了如何在Java中实现自定义方言,包括使用数字表示状态,创建对应的Model类型,编写方言工具类DictUtils,以及如何在前端调用和配置自定义方言类。同时,提到了MyBatis Plus的分页插件在其中的应用。
摘要由CSDN通过智能技术生成

1.状态使用0或1表示,数据库中一般使用数字对应

2.创建相应的model类型

@Data
public class SysDict implments Serializable{
private static final long serialVersionUID = 1L;
@TableId(type=IdType.Auto)//设置主键自增
private Integer id;
private String typeCode; //字典值的类型
private String value; //字典名称
private String label;//字典值
@TableLogic//逻辑删除字段
private String delFlag;
}

3.写方言工具类DictUtils

//这个注解在使用 system cpngfig类的时候也有使用
@Component
public class DictUtils{
//从ioc容器中取出这个service对象 完成 static变量的初始化
@Autowired
private ISysDictService service;
private static ISysDictService sysDictService;

@PostConstruct //完成对从ioc容器中取出的service转移到service
public void init(){
sysDictService= service;
}
//根据type和value获取对应的中文label值
public String getDictLabel(String type, Integer value){
QueryWrapper<SysDict> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("type_code",type);  //前边对应数据库中的字段,后边是前端的属性
queryWrapper.eq("value",value);
SysDict sysdict = sysDictService.getOne(queryWrapper); //getOne方法参数只有querywrapper
return sysDict.getLabel();
}
}

4.完成工具类的使用,创建自定义方言类,直接前端调用,后边通过config方法将这个类方法等注入到bean容器

public class DictDialect extends AbstractDialect implements IExpressionObjectDialect {
    public DictDialect(String name) {
        super(name);
    }
 
    @Override
    public IExpressionObjectFactory getExpressionObjectFactory() {
        return new IExpressionObjectFactory() {
            //定义自定获取的前缀名称
            @Override
            public Set<String> getAllExpressionObjectNames() {
                return Collections.singleton("dict");
//后边都使用#{dict}表示表用了 utils类然后.方法 获取对应的label值
            }
 
            //将字典工具类注册
            @Override
            public Object buildObject(IExpressionContext iExpressionContext, String s) {
                return new DictUtils();
            }
            //设置为缓存
            @Override
            public boolean isCacheable(String s) {
                return true;
            }
        };
    }
}

5.注册前边自定义方言类的方言插件的config

@Configuration
public class DialectConfig{
@Bean
@ConditionalOnMissingBean
//ConditionalOnMissingBean,它是修饰bean的一个注解,主要实现的是,当你的bean被注册之后,如果而注册相同类型的bean,就不会成功,它会保证你的bean只有一个,即你的实例只有一个,当你注册多个相同的bean时,会出现异常,以此来告诉开发人员。//

public DictDialect customDialect(){
return new DictDialect("自定义的字典方言类");
}
}

下面给出mybatisp的分页插件

@Configuration
@MapperScan(basePackages = {"com.gem.back.mapper"})
public class MybatisPlusConfig {
    /*
     * 分页插件,自动识别数据库类型
     * 多租户,请参考官网【插件扩展】
     */
    @Bean
    public PaginationInterceptor paginationInterceptor() {
        return new PaginationInterceptor();
    }
}

6.接下来前端页面使用这个方法

<tr th:each="sysuser:${userlist}">
    <td th:text="sysuser.username"></td>
    <td th:text="${#dict.getDictLabel("userStatus",sysuser.status)}">0</td>
     <td>
    <a href="#" th:href="@{/a/user/form(id=${sysuser.id})}" class="layui-btn layui-btn-sm">编辑</a>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值