发表于: 2018-03-09 23:39:43
1 508
今天完成的事情:
1.java代码符合命名归法。
1.1接口类中的方法和属性不要加任何修饰符号,public也不要加,保持代码的简洁性。我的StudentDao接口和StudentService接口中有修饰符号。Modifier 'public' is redundant for interface methods less... (Ctrl+F1) Reports any redundant modifiers on interfaces or interface components.
已改。
1.2接口和实现类有两套命名规则。
【强制】对于service和DAO类,基于SOA理念,暴露出来的服务一定是接口,内部的实现类用Impl的后缀与接口区别。已改。
1.3各层命名规约
A. Service和DAO层方法命名规约
1.3.1获取单个对象的方法用get做前缀。1.3.2获取多个对象的方法用list做前缀。1.3.3插入的方法用save或insert做前缀。1.3.4删除的方法用remove或delete做前缀。
需要改,DAO接口和Service类还有mapper文件。已改。用shift+F6.
2.除了CRUD的基本单元测试,加上根据学员名字,学号去查找报名贴的单元测试。
需要添加按学号查找的单元测试。已改。
3.Interface和ServiceImpl分开 。
4.分别使用Mybatis的配置文件和Annotation方式去配置数据库
需要添加Annotation方式配置数据库。
明天的计划:
完成JDBCTemplate连接数据库,mybatis注解方式连接数据库。
遇到的问题:
mybatis注解方式连接数据库,没看明白怎么回事就开始建项目,结果测试单元报错。明天要看仔细些,看下有没有mapper.xml文件,看教程的时候有提到resoultMaps标签,但下载来的项目文件没有。
收获:
1.mybatis标签properties的作用。
MyBatis 的配置文件包含了会深深影响 MyBatis 行为的设置(settings)和属性(properties)信息。
properties标签 所代表的属性可以在java属性文件中配置,也可以在外部配置并动态替换。
2.用PreparedStatement无论从可读性还是可维护性上来说,都比直接用Statement的代码更方便,更简洁:
Statement的句子中包含明确的不可修改的数据,所以即使相同语法的句子,也是需要编译再执行。
stmt.executeUpdate("insert into tb_name (col1,col2,col2,col4) values ('"+var1+"','"+var2+"',"+var3+",'"+var4+"')");
而PreparedStatement的语句中没有数据,可以重复调用,所以相同语法的句子,可以不用编译直接执行。同时对于预编译语句DB会尽最大可能性能优化。会采用某些策略来决定要缓存的语句还有缓存时间。
perstmt = con.prepareStatement("insert into tb_name (col1,col2,col2,col4) values (?,?,?,?)");
下面是赋值语句,会调用缓存中的语句。
perstmt.setString(1,var1);
perstmt.setString(2,var2);
perstmt.setString(3,var3);
perstmt.setString(4,var4);
perstmt.executeUpdate();
而且PreparedStatement可以有效防止恶意SQL注入。关于具体的恶意注入这里没有了解。只是看到一个“or '1' = '1'”,作为登录密码在使用Statement时可以通过验证,恶意登录。
(PreparedStatement 预编译原理 http://blog.csdn.net/u014033756/article/details/50512677)
评论