发表于: 2017-10-13 23:40:08
2 779
今日完成:
1)jdbcTemplate版本的增删改查数据库的操作
2)更深入的学习了一下log4j,发现它真的很强大,这次我dao抛出的异常传给service,因为没有web层,所以service我就当做顶层,在网上找到一个工具类可以用来在记录代码中产生的异常,并把它保存到本地文件中。
先贴一下log4j.properties
#指定日志输出级别
log4j.rootLogger=DEBUG,A2,A1
#指定日志的输出方式与地方
log4j.appender.A1=org.apache.log4j.FileAppender
log4j.appender.A1.Threshold = ERROR //error以上的异常被输出到文件中去
log4j.appender.A1.File=F:\\log\\my.log
#指定日志信息的格式
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%r %d{yyyy-MM-dd HH:mm:ss} %c %p -%m%n
#把A2输出到控制台
log4j.appender.A2=org.apache.log4j.ConsoleAppender
log4j.appender.A2.layout=org.apache.log4j.SimpleLayout
除了这些之外,还可以添加扩展,具体见博客:http://blog.csdn.net/anlina_1984/article/details/5313023
下面是部分代码
public class LoggerUtils {
/*
* 日志记录的类
* */
public static void info(Class logClass,Object e){
Logger logger=Logger.getLogger(logClass);
if(e instanceof Exception){
logger.debug(e.toString());
}else{
logger.error(e.toString());}
/**
* 得到debug
*/
public static void debug(Class logClass,Object e){
Logger logger=Logger.getLogger(logClass);
if (e instanceof Exception){
logger.debug(getException((Exception)e));
}else{
logger.debug(e.toString());
}
}
/**}
* 得到exception
*/
public static String getException(Exception e){
StackTraceElement[]ste=e.getStackTrace();
StringBuilder sb=new StringBuilder();
sb.append(e.getMessage()+"");
for (int i=0;i<ste.length;i++){
sb.append(ste[i].toString()+"\n");
}
return sb.toString();
}
然后,我在service实现类中,通过try catch捕获异常,然后把异常记录到了本地文件中,这样实现了可以对于异常的记录。
//这是service的一个实现方法
public boolean deleteById(Long id){
try {
int Count= userDao.deleteById(id);
return Count>0?true:false;
} catch (Exception e) {
ErrorUtils.outErrorException(UserServiceImpl.class,e);
}
return false;
}
public class ErrorUtils {
public static void outErrorException(Class clazz,Exception e){
e.printStackTrace();
LoggerUtils.error(clazz,e);
}
}
这是产生的一段异常信息,写到文件中的(我故意在dao层的调用方法加入了1/0产生异常)
这是自己对于异常的封装,希望师兄给出指点,我这样处理异常对不对~
今日疑问:
在数据插入的时候,java类型与数据库字段的类型不一致也能插入。之前操作都是java类型与数据库类型对应,这次尝试了一下用java的String插入对应的数据库的bigInt字段,能插入,这是为什么,是因为数据库对于类型的要求不严格么(这是百度后的答案,,感觉模模糊糊)?
明日任务:
将项目发布到web,然后写出jdbc版本
评论