mybatis自动多语言的实现

318 阅读1分钟

1、加一个拦截器,切面设置在mybatis的Executor里即可

2、根据执行器id可以获取到相关执行表,用于判断是否需要多语言操作

3、根据切面参数可以获取到mapper方法的参数,这里只能是Domain类,结合mybatis——useGeneratedKeys功能,可以获取到执行sql后的主键

4、获取多语言字段,结合上一步获取的主键进行多语言操作

存在的问题

1、拦截面比较大,无法精准判断一段执行sql是否需要多语言操作

2、需要结合useGeneratedKeys功能使用,意味着传参必须是一个对象,并且包含了pk列

3、如果mapper中加了 @Param注解,获取到的参数这里会从一个对象变成Object[],其中有2个对象,其一是传参,另一个是Param包装类,这里解析需要判断,否则会有问题

4、需要传参的对象直接包含了多语言数据,否则没有地方可以取

正常使用基本可以满足需求,需要注意的是一些手动编写的insert语句,特别是insert into select,需要特别地去注意使用的形式