发表于: 2017-07-12 21:49:02
2 1315
一.今天完成的主要事情
1.熟悉JDBCTemplate连接数据库,在使用时用log4j记录日志,并在此过程中对try..catch进行学习
1. 创建maven工程,添加所需jar包依赖,项目工程如图:
2. 编写model类,
3. 设计接口,这一步非常重要,好的接口设计有非常大的复用性,像任务一中的用各种框架链接数据库,但实际上接口都是相同的,如果接口设计的好,不论是用哪种框架都可以直接拿来就用.设计了查询所有用户,查询表长度,根据ID查询单个用户,根据姓名查询,插入数据,更新数据,删除数据,清空表等接口.
4. 编写实现,编写测试,基本上是写一个实现,就写一个测试,确保写好的实现可以运行
5. 编写日志相关,在这里遇到一个问题,就是log4j不能够在不同的文件中显示不同等级的信息.
log4j的配置如下:
但是,每次打印的时候,都是两个文件中打印的日志信息都是INFO级别以上的,包括错误日志文件中也会显示INFO级别的信息.
在网上找了很多资料,有重写Appener类的,也有其他的,试过了,都不行,暂时先放一下,任务一最后几个task做完后打算用xml文件配置再试试,也请师兄帮忙指点一下.
6.try..catch按照任务要求实现
try...catch就是用来处理程序执行时遇到的异常情况的,其中try中是可能会碰到异常的语句,catch中是标注如果遇到了异常该怎么办,还有一个finally关键字,finally是不论有没有异常,都必须执行的代码,有了try...catch,我们可以在碰到一些不严重的错误时,程序继续执行,不用立即停止,当然,如果异常很严重,超过了本方法处理的范围,本级不能处理,也可以直接向上抛出,由上级处理.向上抛出就是谁调用该方法,异常就抛给谁,如果最后main函数也处理不了,就会抛给虚拟机.
以下是JDBC链接数据库时try...catch的用法
首先是每次执行数据库操作时都会检查异常,因为比较常见的是sql语句语法错误,所以增加对sql语句语法错误的异常处理,如图:
增加finally的含义就是不论sql语句执行是否成功,都关闭数据库链接,释放资源,防止数据库链接被过多占用
此时,执行main方法,可以看到一切正常
然后,在实现中更改一下sql语句,如图
再次执行的时候,结果如下(只贴出了一部分)
从结果可以看到,有一个方法运行失败,但是程序没有终止,因为在该方法的catch中已经将异常处理过了,并且依然关闭了数据库链接,下面的方法执行时没有受到影响.
关于日志,虽然日志出现了一些问题,但确实实现了在我们想要打日志的地方输出日志,比如,在产生异常后,就可以在catch中输出error级别的日志,方便我们维护时查找错误.
2.用mybatis链接数据库,用log4j记录日志,今天用的mybatis的开发方式为传统的dao接口模式
1. 创建maven工程,添加所需的jar包,包括mybatis,junit, log4j,数据库驱动等
2. 编写model类
3. 设计接口,直接使用刚才设计好的
4. 编写实现类,通过传统接口/实现的方式,即以下方式
在实现类中创建sqlSession工厂
从工厂中获取sqlSession语句,然后执行
5. 配置mybatis全局配置文件,配置mapper.xml文件
此时遇到一个小坑,就是通过select查询返回列表时,这里的结果类型要写成list中的成员的类型,不能直接写list,因为它要求的是实际的类型
还有一点,就是,在方法中执行完操作之后,要提交事物,否则有可能出现sql语句执行正常,但是数据库没有变化的情况.,如图
二.明天计划完成的事情
1.用mybatis的mapper映射方式链接数据库,配置数据库时使用注解方式
2.springJdbc链接数据库
3.如果有时间,用spring整合mybatis链接数据库,
三种方式标准均和任务要求一样,用log4j记录日志,单元测试和实现同步进行(已经尝到测试的好处了)
三.遇到的问题
log4j不能在不同文件中输出不同级别的日志问题,在网上找了近一个小时,也没找到,计划明天问下师兄
四.收获
1.对JDBC和mybaits链接数据库更为熟练了,很多基础概念也更清晰了
2.了解了try...catch的基本概念和基本用法
评论