m0_72322824 2023-08-21 01:37 采纳率: 70.6%
浏览 10
已结题

Java如何读取动态的实体类,并写入代码?实现自动化的restful api?

我想要实现自动化的rest api。自动读取mysql的字段,然后根据mysql的表格创建实体类,然后生成对应的服务层和控制层。

这是我的springboot项目目录
service和controller层是我自己根据固定的mysql表格items写的rest api,是可以执行的。

img

其中,Generator是我用来自动读取mysql里面的字段,并自动在model包下创建该表对象为java类,其中实体类的文件名就是mysql的表格名。测试是可以成功执行的。

下面是我的想法和启动项,我想先执行exe,也就是我Generator的自动创建实体类。
然后再运行我的springboot

public class Application {
        public static void main(String[] args) throws Exception {
            exe();
            SpringApplication.run(Application.class, args);
        }
    private static void exe() throws Exception {
        Generator.main(new String[]{}); 
    }
}

我原先写了一个service层如下,其中的items实体类是我自己先在controller层手动创建的。

@Service
@Component
public class itemsService {
    @Autowired
    private JdbcTemplate jdbcTemplate;

    public List<items> getList(){
        String sql = "SELECT * FROM items";
        List<items> result = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(items.class));
        return result;
    }

    public items getListById(Integer id){
        String sql = "SELECT * FROM items where id = ?";
        items book=jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<items>(items.class),id);
        return book;
    }

    public int addItem(items newUser) {
        String sql = "INSERT INTO items(id,name,description, price, duration)values(?,?,?,?,?)";
        return jdbcTemplate.update(sql, newUser.getId(), newUser.getName(), newUser.getDescription(),newUser.getPrice(),newUser.getDuration());
    }


    public int addItems(List<items> newUser) {
        int insertedCount = 0;
        String sql = "INSERT INTO items(id,name,description, price, duration)values(?,?,?,?,?)";
        for (items item : newUser){
            int update = jdbcTemplate.update(sql, item.getId(), item.getName(), item.getDescription(), item.getPrice(), item.getDuration());
            insertedCount += update;
        }
        return insertedCount;
    }

    public int deleteItemsById(Integer id) {
        String sql = "delete from items where id = ?";
        return jdbcTemplate.update(sql, id);
    }

    public int updateItemsById(Integer id1,items items) {
        String sql = "update items set id = ?, name = ? , description = ? , price =? , duration =? where id = ?";
        return jdbcTemplate.update(sql, items.getId(),items.getName(), items.getDescription(),items.getPrice(),items.getDuration(),id1);
    }
}

请问现在要怎么才能让程序运行之后,服务层自动的去获取到Generator创建的实体类,并且实现上面的增删查改功能呢?
因为在运行exe前,实体类还没创建,我不知道代码该怎么写
请问我的service层的代码要怎么修改呢?
或者我的方法哪里有问题可以改进的地方吗?

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-08-21 04:11
    关注

    【以下回答由 GPT 生成】

    这个问题涉及到将"Generator"程序生成的实体类集成到一个Spring Boot项目中。以下是解决这个问题的步骤和建议。

    1. 首先,请确保您的"Generator"程序生成的实体类与您的Spring Boot项目的模型包中的类具有相同的包名和类名。
    2. 检查您的"Generator"程序是否可以正确地生成实体类,并将这些类保存在合适的位置,例如在生成代码后将它们复制到您的Spring Boot项目的模型包model下。
    3. 检查生成的实体类与数据库表的字段和数据类型是否匹配。

    4. 将生成的实体类添加到Spring Boot项目的版本控制系统。

    5. 将生成的实体类添加到您的代码库中,以便能够在将来的开发中进行修改和版本管理。

    6. 确保您的Spring Boot项目能够正确地识别和扫描到生成的实体类。

    7. 在Spring Boot项目的启动类上添加@EntityScan注解,以指定实体类所在的包。例如,如果实体类在model包下,启动类可以添加以下注解:@EntityScan("com.example.model")

    8. 配置数据库连接信息以便Spring Boot项目能够正确地与数据库交互。

    9. application.propertiesapplication.yml文件中添加适当的数据库连接配置,包括数据库URL、用户名和密码等。
    10. 根据您的数据库类型和驱动程序,确保添加了正确的依赖项到您的项目的pom.xml文件中。

    11. 更新您的服务层,以使用生成的实体类而不是手动创建的实体类。

    12. 在您的服务层类中,将手动创建的实体类替换为生成的实体类。
    13. 确保为生成的实体类编写适当的CRUD操作方法,以便在操作数据库时使用这些方法。
    14. 更新您的服务层中的方法参数和返回值类型,以匹配生成的实体类。

    总结: 这些是将"Generator"程序生成的实体类集成到Spring Boot项目中的一般步骤和建议。具体的实现方式可能因项目结构和需求而有所不同。您可能需要根据具体情况进行调整和修改。如果您已经尝试了上述步骤但遇到了问题,请提供更多的详细信息,以便我们能够更好地帮助您。



    【相关推荐】



    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 8月26日
  • 创建了问题 8月21日

悬赏问题

  • ¥15 35114 SVAC视频验签的问题
  • ¥15 impedancepy
  • ¥15 在虚拟机环境下完成以下,要求截图!
  • ¥15 求往届大挑得奖作品(ppt…)
  • ¥15 如何在vue.config.js中读取到public文件夹下window.APP_CONFIG.API_BASE_URL的值
  • ¥50 浦育平台scratch图形化编程
  • ¥20 求这个的原理图 只要原理图
  • ¥15 vue2项目中,如何配置环境,可以在打完包之后修改请求的服务器地址
  • ¥20 微信的店铺小程序如何修改背景图
  • ¥15 UE5.1局部变量对蓝图不可见