发表于: 2017-10-30 23:35:53
1 690
今天完成的事情:
1.经过多次调整代码,实现了增删改查的作用。
(1)总列表以及添加的数据和删除记录
(2)查询页面
(3)修改页面
2.在过程中学习了一些相关知识
3.看了看实现jsp的动态页面实现的过程。
还没有找到思路。。。
明天计划的事情:
开始进行任务四
遇到的问题:
1.昨天的问题
在表中找不到这些字段,也就是驼峰命名的字段。
昨天只知道报错和这些字段有关系,但是不知道具体问题。因为感觉已经将驼峰命名的文件映射过了,怎么可能还会有问题,然后其实是SQL语句有问题。
就是前面对应的是数据库里面的字段名,而后面对应的是实体类的属性名。
配置文件的作用呢就是识别两种命名其实说的是一个字段的作用,然后可以用resultMap代替配置文件。
2.改完以后运行遇到第二个问题
报错原因:(翻译过来)
可选的long参数'id'存在,但由于被声明为原始类型,因此无法将其转换为空值。考虑将其声明为对应的原始类型的对象包装器。
这儿涉及到原始类型和引用类型的相关知识。
通俗讲的意思就是字段设置为long,但在程序中用的是引用类型,所以应该使用Long来代替
若是不用这个的话,也可以使用@PathVariable注解来改变,即"Long" equals "@PathVariable long"
不过这个注解的作用不是用在这个地方的,而是用来获得动态的URL请求入参的,所以可能是巧合解决方案,反正以后正常解决就行了。
3.然后就是查询方法,涉及到传id值的问题,然后也是两个界面,并且传值后在原页面跳转,所以涉及的方面比较多,报错有很多。
400 405 500都有。
4.最后解决一个一直以来的连接池警告信息
报错信息:
Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.
意思就是:加载类“com.mysql.jdbc.Driver”。这是不推荐的。新的驱动程序类是`com.mysql.cj.jdbc.Driver'。驱动程序通过SPI自动注册,手动加载驱动程序类通常是不必要的。
数据库驱动包和连接池报有冲突,所以有警告,但程序可以正常运行。
解决方式就是改版本。所到的博客里说要用5.1.+的数据库驱动包。
注解掉的是以前的版本,下面的是更改以后的。
然后看起来舒服多了。
5.任务四看了一会儿,然后没有一点思路。
然后百度出来的都是<%-----%>这样的东西,感觉应该并不是。明天再学。
收获:
1.看到真正的resultMap的使用实例,加深了对该标签的理解。
当字段名和实体类中的属性名不一致的时候,使用resultMap
(1)resultMap:封装一些映射关系
(2)id:专门针对主键
(3)result:针对一般字段
(4)代码:
<resultMap type="返回结果属性" id="取名">
<id property="id" column="order_id/>
<result property="orderNo" column="order_no/>
<result property="price" column="order_price/>
</result>
(5)property里面是实体类中的属性名
(6)column里面是数据库中字段名
可以看出这种方法更彻底,即使不是驼峰命名也可以变成一致的作用。
2.引用类型和原始类型
Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。另外,Java 还为每个原始类型提供了封装类(Wrapper)。
Java 中的所有对象都要通过对象引用访问。对象引用是指向对象存储所在堆中的某个区域的指针。当声明一个原始类型时,就为类型本身声明了存储。
例如:
假定一个方法中有两个局部变量,一个变量为 int 原始类型,另一个变量是对一个 Integer 对象的对象引用:
int i = 5; // 原始类型
Integer j = new Integer(10); // 对象引用
这两个变量都存储在局部变量表中,并且都是在 Java 操作数堆栈中操作的,但对它们的表示却完全不同。
它们的表示如下:
引用类型和原始类型具有不同的特征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型用作某个类的实例数据时所指定的缺省值。对象引用实例变量的缺省值为 null,而原始类型实例变量的缺省值与它们的类型有关。
许多程序的代码将同时包含原始类型以及它们的对象封装。当检查它们是否相等时,同时使用这两种类型并了解它们如何正确相互作用和共存将成为问题。程序员必须了解这两种类型是如何工作和相互作用的,以避免代码出错。
评论