• 利用 Ruoyi 开发自己的业务管理系统__测试结构完成


    前言铺垫不多说

    (1)Ruoyi这个平台不错;如果你觉得你比Ruoyi的作者牛逼,你就不用看我这个文章了,你可以走了,因为我自认为比Ruoyi的作者要烂;

    (2)必须已经成功搭建Ruoyi,并能在自己机器上运行正常。如果没有搭建完成,我的博客里有,你自己找怎么搭建;

    正文开始

    我利用 Ruoyi 现有平台和他的自动生成代码工具,做了一个简单的 CURD ,效果如下图

    没做修饰,直接用平台代码做的前台画面,所以有NULL之类,也正常;有关这个null后续我会解释;

    步骤:

    (1)最早我是用Eclipse跑的Ruoyi,跑起来了,也正常运行了,所以我想用股票代码表为例,创建一个简单的增删改查

    用它的代码生成功能;

    大家注意我的表名称

    注意包的路径

    原本我以为用 用Maven创建一个新的Maven Module ,直接挂到总的 POM.XML文件中就好了,其实没有那么简单:

    (1)POM.XML文件的修改

    我是用Eclipse创建的 Maven Module ,名字就叫 ruoyi-stock

    项目总的POM.XML要添加我的模块

    (2)原来的 ruoyi-admin 也要做一个依赖,把我的模块加入;

    (3)把JAVA文件放入 ruoyi-admin 对应的JAVA类下,一定要注意路径: 

    需要强调的是,按照我这种配置,一定要:

    把Controller类放在ruoyi-admin中,尽量上按照 ruoyi-admin 的路径来,都放在 ruoyi-admin 下面的 web下(注意下图的路径),否则项目启动会找不到

    对应的HTML文件,我也没有做任何修改,直接也放到 ruoyi-admin 对应的资源下面了,

    对相应JAVA中的包的路径,就不用我说了,手动改下吧。

    要强调的是 要在controller类中,加入@Component

    要在service的实现类中加入@service

    (4) 我自己后建的 ruoyi-stock ,除了POM.XML 就剩一个 StockCodeMapper.xml文件了

    要注意:这个XML文件中,映射的类的路径,要改成对应 ruoyi-admin 中的类的路径及类名称(因为JAVA对应的类路径不在与生成时一样了)

     

     总结:

    (1)因为不太了解这个Ruoyi的架构,以为会按照Maven模块启动的依赖关系来,把Controller放在ruoyi-stock文件中,是不会被启动的;

    原因很简单:SpringBoot按照文件夹的路径来;不会跨文件夹;

    这样让我疑惑的是,那么 Maven 仅仅是起到了包引用的作用,其他不管?

    (2)因为生成的Service类,没有@Service注释,Controller类没有那个  @Component 注释,导致无法被注入;

    同样还有一个疑问,就是 别的对应的业务的 service类、service实现类、Domain类,为什么可以放在自己的文件夹中?

    总之,我还算弄出来了,至少给自己一个交代了。

    先记录到这吧。

    扩展:

    很早之前,我自己为了接私活方便,自己做了一个基于Spring+Struts2+IBatis框架的,自动生成所有代码脚本的一个小工具;

    最早提出这个思路的哥们,他和我既是高中同学,又是公司同事,不过他后来辞职离开了,不久我也离开了;

    我接着他最早的思路,做了这个自动生成工具,恰好自己又接了私活,一边做私活,一边对这个工具进行迭代开发,的确为我省了不少时间;

    后来我再接私活时,确定大概业务后,我直接就用那个工具把所有代码生成一遍,所有的增删改查基本功能就弄好了,然后再到具体页面中勾连具体的功能;

    相对来说,大大节省了时间;

    所以,看到Ruoyi目前这些个功能,还是让我兴奋了一把;

    慢慢弄吧,反正我不着急;

    后记:

    因为 Ruoyi 的作者,在做自动生成类的时候,没有考虑直接从数据库出,而是用自定义的表;

    我这里临时记录下,我们通过系统手工生成代码时,不仅仅需要手工插入 gen_table     ,还需要插入数据到 gen_table_column 中

    否则系统无法识别,为了方便自己和大家,我把插入用的SQL语句临时记录下来,回头我自己再优化这个功能吧。

    数据类型,我自己都调成String的,各位自己根据自己的情况,可以在生成后,自己再调整吧;

    毕竟生成的代码一般不会完美符合实际生产需求,大家也就是利用生成功能,尽量多减少重复劳动吧

     1 INSERT INTO gen_table_column ( table_id, column_name, column_comment, column_type, 
     2 java_type, java_field, is_pk, is_increment, is_required, is_insert, 
     3 is_edit, is_list, is_query, query_type, html_type, dict_type, sort, create_by, 
     4 create_time, update_by, update_time)
     5 SELECT  '2', column_name, column_comment, column_type, 
     6 'String' AS  java_type, column_name AS java_field, CASE WHEN is_nullable ='NO' THEN '1' ELSE '0'  END AS is_pk, 
     7 '0' AS is_increment,'1' AS is_required,'1' AS is_insert, 
     8 '1' AS is_edit, '1' AS is_list, '1' AS is_query,'1' AS  query_type, 'input' AS html_type,'' AS  dict_type, '1' AS sort,'admin' create_by, 
     9 SYSDATE() AS create_time, 'admin' AS update_by, SYSDATE() AS update_time FROM information_schema.columns
    10 WHERE table_schema = 'ry' #表所在数据库
    11 AND table_name = 'stock_bigdeal_analyse' ;

    代码仅供参考

    欢迎留言;

  • 相关阅读:
    Redis 设计与实现 2:Redis 对象 redisObject
    Redis 设计与实现 1:数据库 redisDb
    KafkaProducer 简析
    G1 收集器
    KafkaMirrorMaker 的不足以及一些改进
    Redis 数据结构与对象编码 (Object Encoding)
    跨境 TCP 传输优化实录 — 使用 BBR 解决 LFN 问题
    TCP 协议简析
    使用模拟退火算法优化 Hash 函数
    LSM-Tree 与 B-Tree
  • 原文地址:https://www.cnblogs.com/alexgl2008/p/12177016.html
Copyright © 2020-2023  润新知