本篇内容介绍了“怎么开发一个MyBatis通用Mapper的轮子”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!通用Mapper起码应该包含以下功能:1、增2、删3、改4、批量增5、批量删6、只更新指定字段7、分页查询查当前页8、分页查询查总数9、字典字段翻译10、数据权限控制大概长下面这个样子:1、基于MyBatis3提供的SqlProvider构建动态Sql例如如下代码:2、基于自定义注解,为实体和数据库表建立对应关系例如如下代码:基于以上两个原理,当方法被调用时,我们便可构建出相应的动态Sql,从而实现该通用Mapper。1)@Table了解Jpa的朋友一定很熟悉,这个就是为实体指定表名,实体不加这个注解就认为实体名与表名一致:2)@Column指定完表名,该指定列名了,同样的如果字段不指定则认为字段名与表列名一致:3)@Id这个注解就是为了表明该字段是否是数据库主键。当然,这个注解可以与@Column合并,但为了更清晰,我还是决定单独使用这个注解。并且,也方便后期扩展。4)@OrderBy这个注解来标明查询时的排序字段,同时考虑如果排序字段有多个,可定义优先级:5)@Transient考虑实体中有些字段在数据库中不存在的情况。使用这个注解来标注这样的字段:1)TableInfo,表示一个实体对应的数据库表信息2)ColumnInfo,表示实体中的一个字段对应的数据库表字段信息以上只需要注意一点,如何判断一个实体是否是联合主键。这里用的比较粗暴的方法,如果有多个字段加了@Id,那么认为是联合主键。这个BaseMapper的定义模仿了SpringDataJpa,它需要两个泛型,T表示实体类型,K表示主键类型。一般情况下K为简单数据类型,比如Long,String;联合主键情况下,K为自定义的一个复杂数据类型,具体使用方法见文章最后章节。简单实现思路:对需要翻译的字段加上@FieldTrans注解来表明这个字段需要翻译,通过AOP方式对结果数据进行增强,来将字段进行翻译更新。此部分内容留待后续实现,同时调研一下是否还有更优雅简单的实现方式。我们先来思考一下数据权限到底要干啥?一句话来概括:查一张表的数据时在where条件中追加“and 控制权限的列 in (???)”免费云主机域名。简单实现方法:在控制权限的字段加上@DataAuthrity注解来表明通过这个字段控制权限,而???的内容肯定是由业务代码来生成的,因此考虑给这个注解增加一个属性,用来指明权限数据由执行哪个接口或方法来获取。此部分内容留待后续实现,同时调研一下是否还有更优雅简单的实现方式。至此,不需要写任何mapper.xml,UserMapper已经具备了增删改查能力。“怎么开发一个MyBatis通用Mapper的轮子”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注百云主机网站,小编将为大家输出更多高质量的实用文章!
本篇内容介绍了“css常用的引用方式怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.内部引用内部引用就是在html代码中在2.外部引用外部引用就是用标…
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。