发表于: 2021-01-22 23:31:14

0 1344




今天完成的事情:

修改数据库,在来写项目分层,之后再来使用mybatis generator代码生成



明天计划的事情:
思考每个表需要什么sql语句,修改好

写service,单元测试




遇到的问题:

以下



收获:


对数据库进行修改:查看留言表和评论表是否能合在一起?可以,因为字段大多数都相同,只要记住回复的id,就能针对这个id进行回复


为什么不能根据主键id回复?因为主键的一个基本原则是:不使用任何业务相关的字段作为主键。



留言+回复表放在一起,根据reply_id对某条留言进行回复




这里需要修改role表中的字段,删除comment字段和reply字段。增加message字段



=================================


一级标题和二级标题合并:用level字段区分层级,再通过一个父级id关联就可以实现无限层级的设计

看不懂,找了一下资料。


参考资料:
1.



level说明:

UE(id是6)是属于前端开发(id是3),而前端开发是属于技术组(id是1),因此,UE的level是0.1.3 依次为顶级的id到最靠近自己的id。

P.S:这里主键ID参加了业务相关的数据



使用场景:
根据Level层级来查找所有数据



===========
1.



2.数据库多层级标题的设计:



==========
这里有一个问题,我只能通过主键ID来确定二级标题,通过level字段和parent_id来定位二级标题都不行,因为属于同一级或者数据同一个父级id字段内容都是一样的。



写下了假数据:
work:


multi_level_title:



=================
使用mybatis generator代码生成
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
<generatorConfiguration>
<!-- 用于指定全局配置文件,下面可以通过占位符的形式读取<properties>指定文件中的值。-->
<properties resource="db.properties"/>
<!-- context 是逆向工程的主要配置信息 -->
<!-- id:起个名字 -->
<!-- targetRuntime:设置生成的文件适用于那个 mybatis 版本 -->
<context id="default" targetRuntime="MyBatis3">
<commentGenerator>
<!-- 抑制警告 -->
<property name="suppressTypeWarnings" value="true" />
<!-- 是否去除自动生成的注释 true:是 : false:否 -->
<property name="suppressAllComments" value="true" />
<!-- 是否生成注释代时间戳-->
<property name="suppressDate" value="true" />
</commentGenerator>
<!--jdbc的数据库连接-->
<!--这里是以变量的形式定义,具体的值在 db.properties 文件中-->
<!--jdbc:mysql://localhost:3306/数据库名?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC-->
<jdbcConnection driverClass="${jdbc.driver}"
connectionURL="${jdbc.url}"
userId="${jdbc.username}"
password="${jdbc.password}">
</jdbcConnection>
<!-- targetPackage:生成的实体类所在的包 -->
<!-- targetProject:生成的实体类所在的硬盘位置 -->
<!-- DataObject 类存放位置 -->
<javaModelGenerator targetPackage="com.kbk.model"
targetProject=".\src\main\java">
<!-- 是否允许子包 -->
<property name="enableSubPackages" value="false" />
<!-- 是否对modal添加构造函数 -->
<property name="constructorBased" value="true" />
<!-- 是否清理从数据库中查询出的字符串左右两边的空白字符 -->
<property name="trimStrings" value="true" />
<!-- 建立modal对象是否不可改变 即生成的modal对象不会有setter方法,只有构造方法 -->
<property name="immutable" value="false" />
</javaModelGenerator>
<!-- targetPackage  targetProject:生成的 mapper 文件的包和位置 -->
<sqlMapGenerator targetPackage="mapping"
targetProject=".\src\main\resources">
<!-- 针对数据库的一个配置,是否把 schema 作为字包名 -->
<property name="enableSubPackages" value="false" />
</sqlMapGenerator>
<!-- targetPackage  targetProject:生成的 interface 文件的包和位置 -->
<javaClientGenerator type="XMLMAPPER"
targetPackage="com.kbk.dao" targetProject=".\src\main\java">
<!-- 针对 oracle 数据库的一个配置,是否把 schema 作为字包名 -->
<property name="enableSubPackages" value="true" />
</javaClientGenerator>
<!-- tableName:指定了表名;domainObjectName:指定了实体类的名称 -->
<!-- 生成对应表及类名 -->
<!-- <table tableName="tourist" domainObjectName="Tourist"-->
<!-- enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false"-->
<!-- enableSelectByExample="false">-->
<!-- &lt;!&ndash; 指定列的java数据类型 &ndash;&gt;-->
<!--&lt;!&ndash; <columnOverride column="id" javaType="java.lang.Integer" jdbcType="bigint" />&ndash;&gt;-->
<!-- </table>-->
<!-- tableName:指定了表名;domainObjectName:指定了实体类的名称 -->
<!-- 生成对应表及类名 -->
<table tableName="user" domainObjectName="User"
enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false"
enableSelectByExample="false">
</table>
<!-- tableName:指定了表名;domainObjectName:指定了实体类的名称 -->
<!-- 生成对应表及类名 -->
<table tableName="role" domainObjectName="Role"
enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false"
enableSelectByExample="false">
</table>
<!-- tableName:指定了表名;domainObjectName:指定了实体类的名称 -->
<!-- 生成对应表及类名 -->
<table tableName="message" domainObjectName="Message"
enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false"
enableSelectByExample="false">
</table>
<!-- tableName:指定了表名;domainObjectName:指定了实体类的名称 -->
<!-- 生成对应表及类名 -->
<table tableName="banner" domainObjectName="Banner"
enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false"
enableSelectByExample="false">
</table>
<!-- tableName:指定了表名;domainObjectName:指定了实体类的名称 -->
<!-- 生成对应表及类名 -->
<table tableName="module" domainObjectName="Module"
enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false"
enableSelectByExample="false">
</table>
<!-- tableName:指定了表名;domainObjectName:指定了实体类的名称 -->
<!-- 生成对应表及类名 -->
<table tableName="studio" domainObjectName="Studio"
enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false"
enableSelectByExample="false">
</table>
<!-- tableName:指定了表名;domainObjectName:指定了实体类的名称 -->
<!-- 生成对应表及类名 -->
<table tableName="title" domainObjectName="Title"
enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false"
enableSelectByExample="false">
</table>
<!-- tableName:指定了表名;domainObjectName:指定了实体类的名称 -->
<!-- 生成对应表及类名 -->
<table tableName="work" domainObjectName="Work"
enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false"
enableSelectByExample="false">
</table>
</context>
</generatorConfiguration>




============
在这里碰到一个问题,我想把下面的long类型转成 biginteger



1. 在mybaties配置里面转



成功了




2.在MySQL数据库勾选无符号,没有负数。bigint的数值会变大一倍,然后自动转换成biginteger




========




但结果依然为long,不知道为什么。



返回列表 返回列表
评论

    分享到