java吧 关注:1,240,606贴子:12,712,712

学习记录贴,从零造一个简单db库。

只看楼主收藏回复



IP属地:马来西亚1楼2020-11-25 20:21回复
    最近懒的一逼,啥都不想干,开个贴记录一下,开发一个玩具库,会遇到哪些坑,以及填坑的过程有哪些。


    IP属地:马来西亚2楼2020-11-25 20:23
    回复
      下面开始具体设计流程了。
      1:需求分析
      2:技术选型
      3:怎么实现


      IP属地:马来西亚3楼2020-11-25 20:24
      回复
        这个库,到底能解决,哪些问题呢?
        这个得从一个奇怪的现象说起。
        也就是写sql问题。
        在日常开发中,要么用mybatis,jpa,jdbcTemplate之类的技术,他们都有一些特征。
        也就是极大的的简化了,日常crud操作。
        也就是,如果你只要,单表查询有关的,那么,你基本就不用写啥代码,就完成任务了。
        如果设计到,多表join之类的操作,那么就可能头疼了。
        如果刚好时,多表join之后,在group一下,那么就更头疼了。


        IP属地:马来西亚4楼2020-11-25 20:28
        收起回复
          然而这个问题,还没有结束。
          他的下一个版本时,字段格式化group问题。
          也就是典型,报表相关的,将日期格式化到年月日后,再group求年月日报表。
          然而这还没结束,他继续有新的版本。
          在数据量大了之后,你按这个group统计的方法,会跑的很慢的。
          然后他怎么解决呢?
          创建临时表,然后把查询的数据,导入这个表里面去,按定时任务的方式,定时丢数据到里面去。


          IP属地:马来西亚6楼2020-11-25 20:36
          回复
            可以可以


            IP属地:云南来自Android客户端7楼2020-11-25 20:38
            回复
              因此,目标就是一些简化以上业务操作的db库,目标就是为了,极大简化写sql的流程。
              用配置化的方式,实现复杂sql的编写。


              IP属地:马来西亚8楼2020-11-25 20:38
              回复
                工程目录截图:
                我们新建一个项目,名字随便起
                base模块,基础定义模块
                core模块,依赖base,实现核心业务的模块


                IP属地:马来西亚9楼2020-11-25 20:41
                回复
                  既然说,要极大的简化sql操作,甚至要超越mybatis plus这种库,那么自然要有一些特殊的技巧,来使得这个库。
                  比别人家的更好用,这里我选择的方式是,注解。
                  是的,任何sql操作,都是基于类的注解完成的
                  也就是典型的,实体即sql
                  下面看看核心注解有哪些


                  IP属地:马来西亚10楼2020-11-25 20:43
                  回复

                    下面用注解来配置下,具体demo例子


                    IP属地:马来西亚11楼2020-11-25 20:47
                    回复
                      出来了踹我一下


                      IP属地:甘肃来自Android客户端12楼2020-11-25 20:57
                      收起回复

                        JoinTable 配置表名的
                        JoinField 列配置
                        JoinGroup 代表本字段时group
                        JoinWhere 代表查询条件是啥,也就是> < = like 之类的运算符
                        编写单元测试

                        运行效果如下

                        可以看到,生成的sql出来了,
                        我们丢到数据库跑一下,哪些插值表达式,手工改下值,然后运行

                        可以看到,sql结果出来,生成的sql语句是正确的,还能用


                        IP属地:马来西亚13楼2020-11-25 21:01
                        回复
                          刚才的是单表的演示,那么,多表也能用吗?
                          当然,下面演示,多表join例子
                          举个例子,你想统计,部门每个月新进人数有多少
                          假设有sys_user 用户表 ,sys_dep 部门表


                          IP属地:马来西亚14楼2020-11-25 21:05
                          回复
                            什么,大专生学Java,***不去卖车卖房卖保险


                            IP属地:广东来自Android客户端15楼2020-11-25 21:11
                            回复

                              JoinTableList 表明列表,主要在里面嵌套JoinTable,进而实现多表join
                              单元测试,这次不赋值了

                              下面是sql,一样丢到数据库运行看看是不是可以的

                              好像还能跑哦,多表join也是可以的。
                              并且注意到,当字段有值,他就按JoinWhere 哪里配置的条件,
                              根据上下文,动态的丢到where 或者 having 哪里去,


                              IP属地:马来西亚17楼2020-11-25 21:15
                              回复