Hotel Manager System

适用技术栈:Java SE + JDBC(Driud) + MySQL

ProblemMettingRecover

1.Druid配置文件错误

问题记录

测试两个工具类时,爆出 druid.properties 配置文件错误。

image-20220701205452907

image-20220701205432855

查看

原来是拷文件的时候没有改配置文件中的 url中的数据库名

image-20220701205721845

解决

新建一个 HMS 数据库,然后 druid.properties 中的目标位置girl改为HMS

再次测试,ok

image-20220701210000201

2.Jniut测试一直卡着跑不出来

情况记录

写完登录页面后用Jniut进行测试,Run 之后却一直卡在运行测试给你转圈。程序也只跑了一些。

image-20220701213323601

原因

Jnuit 做单元测试的时候是不允许控制台输入的,第30行有句向控制台读入,Jniut在这里卡住了。

解决办法

帮助 -> 编辑自定义VM选项

image-20220701214109295

在末尾加上一行:-Deditable.java.test.console=true

image-20220701214234029

然后重启 IDEA,问题解决

image-20220701214433873

3.domain是干什么的?

一般来说在数据库建了一个表后都会在旁建立一个domain类,然后里面写对应的 Javabean。

这个的意思就是,数据库中的那个表所要表达的对象形式在 Java 程序中的体现。比如你 MySQL 中有个学生表,有很多元素。那你读取在 Java 端怎么接受?必须有一个对应的对象类去表示它。这就是 domain。

4.在做显示所有菜品时,查出来全是null

情况描述

这里我们是用 用阿里Druid做的一个BasicDAO来批量查询,把数据一丢进去,以为会出来结果,结果全是null

image-20220702165739495

出问题的地方:image-20220702171449781

问题所在

查询数据的那张菜单表的domain对应Javabean类没有getter&setter

image-20220702171637966

加上getter&setter

image-20220702171937928

原因

联系Java反射不难猜出这个BasicDAO底层从数据库返回数据再注入到javabean中,利用的反射的getMethod,getDeclaredMethod等取得各字段的setter,getter方法.没有setter,getter方法就无法给javabean注入属性,他们输出到控制台就都是初始值null。验证方法,在开头给name赋初始值大哥,他就会只有第二个名字都是:大哥,然后其他的都是null.

结论:建立domain类以及表示对象类,无参构造器,setter&getter都给默认带上,不然很多框架方法底层反射实现的东西都会报错或者异常。