今天完成的事情:
修改数据库,在来写项目分层,之后再来使用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
<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 文件中-->
<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">-->
<!-- <!– 指定列的java数据类型 –>-->
<!--<!– <columnOverride column="id" javaType="java.lang.Integer" jdbcType="bigint" />–>-->
<!-- </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,不知道为什么。
评论