美文网首页代码记忆一个Java码农眼中的技术世界IT@程序员猿媛
增强Mybatis处理多表查询 我再也不用写VO类!!!

增强Mybatis处理多表查询 我再也不用写VO类!!!

作者: hihuzi | 来源:发表于2019-02-19 14:57 被阅读8次

    每当我们辛苦的解决好表与表直接的耦合是 ,却发现接下来的的连表查询特别恶性(重名的列名,重名的属性名)我们不得不小心翼翼写xml,小心翼翼修改查询内容.这个还没完,突然需求改了 , 实体类又改了, wot,我又得改xml,改vo类,还有无休止的测试!!!!!啊,我是个浪人,我不想这般所以>>>>.....>>>>>

    1.工具说明

    应用背景:

    1.Mybatis对连表(多表查询)查询映射实体对象的不足(压根没有这些方法)
    2.修改实体后VO类还得修改
    3.填写完复杂的多表查询条件,还有痛苦的测试(一旦修改实体类VO类也要跟着修改如果关联的多 我感觉身体被掏空,油墨有)
    技术:注解+(设计模式)(单例-内部类懒加载,责任链,工厂模式)
    优点:
    1.非侵入式插件(可以很容易添加到你的SpringBoot项目)
    2.易学习 易用
    3.不需要写VO类
    4.直接填充到对应对象List<E>
    5.支持自定义规则
    6.多列重名的情况

    2.使用

    1.直接撸代码(具体的方法)

    
        /**
         * tips sql+ 增强工具(带缓存) 自动填充对象
         *
         * @notice: 返回值  "List<Map>" "Map<String,List<E>" "list<E>"
         * @author: hihuzi 2019/2/14 9:08
         */
        public abstract <E> Object listToEntity(List<Map> list, SQLConfig config) throws Exception;
    
        /**
         * tips sql+ 增强工具(带缓存) 自动填充对象
         *
         * @notice: 返回值  "List<Map>" "Map<String,List<E>" "list<E>"
         * @author: hihuzi 2019/2/14 9:08
         */
        public abstract <E> Object listToEntity(List<Map> list, E... e) throws Exception;
    
        /**
         * tips sql+ 增强工具(带缓存) 自动填充对象
         *
         * @notice: 返回值  "List<Map>" "Map<String,List<E>" "list<E>"
         * @author: hihuzi 2019/2/14 9:08
         */
        public abstract <E> Object listToEntity(List<Map> list, SQLConfig config, E... e) throws Exception;
    
        /**
         * tips sql+ 增强工具(带缓存) 自动填充对象
         *
         * @notice: 返回值  "List<Map>" "Map<String,List<E>" "list<E>"
         * @author: hihuzi 2019/2/14 9:08
         */
        public abstract <E> Object getSQL(SQLBean config) throws Exception;
    

    2.加入你的项目

    A.第一步 83662e09e7d50cb726150f686b18326.png
    没啥好讲的直接复制包到你的项目的工具文件下

    1.非侵入式插件(可以很容易添加到你的SpringBoot项目)
    >>2.易学习 易用
    >>3.不需要写VO类
    >>4.直接填充到对应对象List<E>
    >>5.支持自定义规则
    >>6.多列重名的情况
    ##2.使用
    >1.直接撸代码(具体的方法)
    /** * tips sql+ 增强工具(带缓存) 自动填充对象 * * @notice: 返回值 "List<Map>" "Map<String,List<E>" "list<E>" * @author: hihuzi 2019/2/14 9:08 */ public abstract <E> Object listToEntity(List<Map> list, SQLConfig config) throws Exception; /** * tips sql+ 增强工具(带缓存) 自动填充对象 * * @notice: 返回值 "List<Map>" "Map<String,List<E>" "list<E>" * @author: hihuzi 2019/2/14 9:08 */ public abstract <E> Object listToEntity(List<Map> list, E... e) throws Exception; /** * tips sql+ 增强工具(带缓存) 自动填充对象 * * @notice: 返回值 "List<Map>" "Map<String,List<E>" "list<E>" * @author: hihuzi 2019/2/14 9:08 */ public abstract <E> Object listToEntity(List<Map> list, SQLConfig config, E... e) throws Exception; /** * tips sql+ 增强工具(带缓存) 自动填充对象 * * @notice: 返回值 "List<Map>" "Map<String,List<E>" "list<E>" * @author: hihuzi 2019/2/14 9:08 */ public abstract <E> Object getSQL(SQLBean config) throws Exception;
    >>2.加入你的项目
    A.第一步

    83662e09e7d50cb726150f686b18326.png
    没啥好讲的直接复制包到你的项目的工具文件下
    B.还是第一步(高手可以生成jar包直接引用) efb744bd4e71dd45ba6debe88a38234.png
    C.第二步 4a012eee5d7e1ae14c0938039c022d3.png
    D.第三步 直接看SQL
    1b4cc78ccb1a12cf012d8f43fdb127e.png
    E.第四部 等待发出SQL等结果
    重复的名称会用 类名.属性名
    list.parallelStream().forEach(map -> {
                map.put("uId", map.get("User.id"));
                map.put("aId", map.get("Agent.id"));
                map.put("cid", map.get("Car.id"));
    
            });
    

    F.第五步 吧这个list给前台吧
    G.好吧 !!!还是给出源码地址吧 欢迎搞事
    https://gitee.com/hihuzi-top/collection_tool.git

    https://github.com/hioo520/collectionTool.git
    https://gitee.com/hihuzi-top/collection_tool.git
    

    莫忘了点赞
    累了!

    相关文章

      网友评论

        本文标题:增强Mybatis处理多表查询 我再也不用写VO类!!!

        本文链接:https://www.haomeiwen.com/subject/aygxyqtx.html