【Bug】餐饮管理系统中出现的Bug
Hotel Manager System
适用技术栈:Java SE + JDBC(Driud) + MySQL
ProblemMettingRecover
1.Druid配置文件错误
问题记录
测试两个工具类时,爆出 druid.properties 配置文件错误。
查看
原来是拷文件的时候没有改配置文件中的 url
中的数据库名
解决
新建一个 HMS 数据库,然后 druid.properties 中的目标位置girl
改为HMS
再次测试,ok
2.Jniut测试一直卡着跑不出来
情况记录
写完登录页面后用Jniut
进行测试,Run 之后却一直卡在运行测试给你转圈。程序也只跑了一些。
原因
用 Jnuit 做单元测试的时候是不允许控制台输入的,第30行有句向控制台读入,Jniut
在这里卡住了。
解决办法
帮助 -> 编辑自定义VM选项
在末尾加上一行:-Deditable.java.test.console=true
然后重启 IDEA,问题解决
3.domain是干什么的?
一般来说在数据库建了一个表后都会在旁建立一个domain类,然后里面写对应的 Javabean。
这个的意思就是,数据库中的那个表所要表达的对象形式在 Java 程序中的体现。比如你 MySQL 中有个学生表,有很多元素。那你读取在 Java 端怎么接受?必须有一个对应的对象类去表示它。这就是 domain。
4.在做显示所有菜品时,查出来全是null
情况描述
这里我们是用 用阿里Druid做的一个BasicDAO来批量查询,把数据一丢进去,以为会出来结果,结果全是null
出问题的地方:
问题所在
查询数据的那张菜单表的domain
对应Javabean类
没有getter&setter
加上getter&setter
原因
联系Java反射不难猜出这个BasicDAO
底层从数据库返回数据再注入到javabean
中,利用的反射的getMethod,getDeclaredMethod
等取得各字段的setter,getter
方法.没有setter,getter
方法就无法给javabean
注入属性,他们输出到控制台就都是初始值null
。验证方法,在开头给name
赋初始值大哥
,他就会只有第二个名字都是:大哥,然后其他的都是null
.
结论:建立domain类以及表示对象类,无参构造器,setter&getter都给默认带上,不然很多框架方法底层反射实现的东西都会报错或者异常。