阶段一-01.万丈高楼,地基首要-第2章 单体架构设计与准备工作-2-17 MyBatis 数据库逆向生成工具
提供的代码
MyMapper类是作者提供的
要用到的配置文件。
包名加类名的设置
数据源
pojo的包名和我们实际的项目是对应的
打开我们的项目foodie-dev这个项目。
里面有com.imooc.pojo的包
生成的mapper的xml的路径
和我们项目里的这个文件夹对应
在逆向工程的文件夹下也是有这个路径
mapper的包名
生成需要设置数据库的表
对应数据库的表。
可以把数据库内所有的表 都粘贴到这里
GeneratorDisplay。这个类是用来运行我们的xml
解析,然互进行一步一步的操作。逆向的生成。
我们只需要右键去运行这个
警告可以不用管。
生成后的文件
mapper下生成了很多mapper后缀的文件。
继承了通用Mapper
pojo的包下生成的实体类
如果字段是完全的一样的话,它在前面是没有这个@Column的注解的。如果字段在数据库内有下划线的,生成的实体类会改成驼峰式的,这是java里面的开发规范。
注释也都会展示出来。
mapper对应的xml
为我们生成了ResultMapper
复制生成的文件到真正项目里
例如先拷贝mapper下的mapper类文件。
Ctrl+C在生成的项目里面复制,
实体类的复制
添加引用pom.xml内
根目录下的pom.xml
<!-- 通用mapper逆向工具 --> <dependency> <groupId>tk.mybatis</groupId> <artifactId>mapper-spring-boot-starter</artifactId> <version>2.1.5</version> </dependency>
api项目的application.yml
############################################################ # # mybatis mapper 配置 # ############################################################ # 通用 Mapper 配置 mapper: mappers: com.imooc.my.mapper.MyMapper not-empty: false # 在进行数据库操作的的时候,判断表达式 username != null, 是否追加 username != '' identity: MYSQL
在逆向工程里面 复制这个类 过来
foodie-dev-mapper工程内。先创建一个包
然后再复制过来
这样这里的错误提示就没了。
not-empty在做更新操作或者插入的操作会有一些判断,这些判断的时候,会判断某一个属性是否为null,是否为空,
推荐不依赖框架给你追加 不为空,推荐用手写的方式去判断。
identity设置为MySql。数据方言。
4
安装编译,看看当前代码有没有问题。
运行api
http://localhost:8088/hello
以上逆向工具使用完成。
MySql8代码生成(注意事项)
首先把mysql的jar依赖的版本换成一个高版本的。这里我换成了8.0.17原来的版本是5.1.14
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.17</version> </dependency>
然后mysql的链接字符串报了一个错误,
The server time zone value '�й���ʱ��' is unrecognized or represents more than one time zone. You mu
通过百度搜索,解决方法就是在链接字符串的后面加上参数serverTimezone=UTC
https://blog.csdn.net/zhongaiyisheng_/article/details/102556867
最终用的链接字符串:
jdbc:mysql://localhost:3306/foodie-shop-dev?characterEncoding=UTF-8&autoReconnect=true&zeroDateTimeBehavior=convertToNull&useUnicode=true&useSSL=false&serverTimezone=UTC
遇到的其他问题
没有resources目录,造成没有生成xml映射文件
手动的创建resources目录即可。
结束