Loading... Easy Code是IDEA的一个插件,可以直接对数据的表生成entity,controller,service,dao,mapper,无需任何编码,简单而强大。 <!--more--> ### 一、安装配置 `Ctrl+Alt+S`(可能和 QQ 最近截屏录像功能冲突)打开 `Settings` → 选择 `Plugins` → 安装 `Easy Code`插件 → 重启 `IDE` → 重新来到 `Settings`找到 `Other Settings`下的 `Easy Code`进行如下修改:  **补充:** 配置 `@Mapper`避免后期手动添加:  ### 二、使用演示 在此之前先建立SpringBoot项目~ 连接数据库:   测试链接报错及解决:   Easy Code逆向工程:   目录结构展示(对应的文件夹不存在会提示让你点击自动创建):  ### 三、项目运行 **(1)配置yml** ```Java server: port: 8080 spring: datasource: name: mysql type: com.alibaba.druid.pool.DruidDataSource driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/booksystem?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&serverTimezone=UTC username: root password: 123456 thymeleaf: cache: false encoding: UTF-8 mode: HTML suffix: .html prefix: classpath:/templates/ mybatis: mapper-locations: classpath:mapper/*.xml type-aliases-package: cn.ctx.booksystem.entity ``` **(2)项目测试**   ### 四、差异化对比 **1.Controller层** 默认生成 `@RestController`=`@Controller`+`@ResponseBody`(所以上图那个是白加的QAQ) 如果需要页面跳转则用 `ModelAndView`: ```Java @GetMapping("test") public ModelAndView test(){ ModelAndView mv = new ModelAndView("test");//跳转到test.html页面 return mv; } ``` 对于各种页面的跳转一般专门写一个 `PageController`来处理: ```Java @Controller public class PageController { @RequestMapping("{module}/{url}.html") public String module(@PathVariable("module") String module, @PathVariable("url") String url){ return module + "/" + url; } } ``` 还有就是服务对象装载是用 `@Resource`,一般我Controller层用的是 `@Autowired`,而Service才是用 `@Resource`。 这里特意去回顾了一下知识点: > **`@Autowired` VS `@Resource`** * **依赖识别方式:**`@Autowired`默认是 `byType` 可以使用 `@Qualifier` 指定 `Name` , `@Resource` 默认是 `ByName` 如果找不到则 `ByType` * **适用对象:**`@Autowired`可以对构造器、方法、参数、字段使用,`@Resource`可以对方法、字段使用 * **提供方:**`@Autowired`是 `Spring`提供的,`@Resource`是 `JSR-250`提供的 * 个人见解:为什么IDEA只对@Autowired警告,却对@Resource视而不见?可能是因为 `@Autowired`是 `Spring`提供的,它是特定 `IOC`提供的特定注解,一旦换用了其他的 `IOC`框架,是不能够支持注入的。而 `@Resource`是 `JSR-250`提供的,它是 `Java`标准,我们使用的 `IOC`容器应当去兼容它,这样即使更换容器,也可以正常工作。 **2.Entity层** `int`映射成 `Integer`,之前是我不规范了。 **3.Mapper层** 采用 `ResultMap`而不是 `ResultType`,可能是为了方便修改后续如果数据库更改属性,造成字段不一样问题,同时也省去了很长的字段映射,虽然说Mybatis配置中可以简化。 **4.其他** 都有友好的注释,确实节省了很多。 不过比起Mybatis的逆向工程,代码量少了很多,但是会更加规范。 Last modification:August 14, 2022 © Allow specification reprint Like 0 喵ฅฅ
2 comments
[08001] CLIENT_PLUGIN_AUTH is required com.mysql.cj.core.exceptions.UnableToConnectException: CLIENT
遇到这个错就是需要把本地的MySQL驱动进行降级(降到5.X)
又发现了个好东西