发表于: 2017-11-01 20:29:40

1 828


这两天完成的事情:

1.学习了JDBC连接数据库的原理,了解了Spring框架的IOC,了解了MyBatis如何与数据库连接,了解了PerparedStatement和Statement的区别,了解了JDBC的缺点,了解了三层结构原理,了解了一下DAO,温习了maven的操作,学习了Junit单元测试,熟悉了导入jar包的过程,理解了一丢丢XML的操作方式;

JDBC(Java Data Base Connectivity.java数据库连接),由一些接口和类构成的API。

J2SE的一部分,由java.sql.javax.sql包组成

SQL注入问题:or 1 or的时候显示所有数据

SQL注入就是将原本的SQL语句的逻辑结构改变,使得SQL语句的执行结果和原本开发者的意图不一样;

方法:在表单中将命令当作用户输入提交给程序;

PreparedStatement和Statement区别

在SQL中包含特殊字符或者SQL的关键字(如:'or 1 or')时Statement将出现不可预料的结果(出现异常或查询的结果不正确),可以用PreparedStatement来解决

PreparedStatement优点:

1.没有SQL注入问题;

2.Statement会使数据库频繁编译SQL,可能造成数据库缓冲区溢出;

3.数据库和驱动可以对PreparedStatement进行优化(只有在相关联的数据库连接没有关闭的情况下有效)。

JDBC实现数据库的连接:

结果如图:

JDBC 问题总结

1.数据库连接创建、释放频繁造成系统资源浪费,从而影响系统性能。如果是用数据库连接池可以解决此问题

2.SQL语句在代码中硬解码,造成代码维护不容易,适应应用SQL变化的可能较大,SQL变动需要改动JAVA代码

3.使用prepareStatement向占有位符号传递参数存在硬解码,因为SQL语句的where条件不稳定,可能多也可能少,修改SQL还要修改代码,系统不易维护;

4.对结果集解析存在硬解码,SQL变化导致解析代码变化。系统不易维护,如果能将数据库记录封装成pojo对象解析比较方便。

关于XML的配置部分图解:

通过Mybatis实现与数据库的连接:

代码部分:

结果如图:

三层架构:

通常意义上的三层架构就是将整个业务应用划分为:表现层UI、业务逻辑层BLL、数据访问层DAL。区分层次的目的是为了“高内聚,低耦合”的思想。

1.表现层UI:通俗讲就是展现给用户的界面,即用户在使用一个系统的时候他的所见所得。

2.业务逻辑层BLL:针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理。

3.数据访问层DAL:该层所做事务直接操作数据库,针对数据的添加、删除、修改、查找等。

在软件体系架构设计中,分层式结构是最常见,也是最终要的一种结构。微软推荐的分层式结构一般分为三层,从下至上分为:数据访问层、业务逻辑层、表示层。

三层结构原理

3个层次中,系统主要功能和业务逻辑都在业务逻辑层处理。

所谓三层体系结构,是在客户端与数据库之间加入了一个“中间层”,也叫组件层。这里所说的三层体系,不是简单的放置三台机器就是三层体系结构,也不仅仅有B/S应用层才是三层体系机构,三层是指逻辑上的三层,即使这三个层放到一台机器上。

三层体系的应用程序将业务规则、数据访问、合法性校验等工作放到了中间层处理。通常情况下,客户端不直接与数据库进行交互,而是通过COM/DCOM通讯与中间层建立连接,再经由中间层与数据库进行交互。

各层的作用

1.数据访问层:主要是对原始数据的操作层,而不是指原始数据,也就是说,是对数据的操作,而不是数据库,具体为业务逻辑层或者表示层提供数据服务。

2.业务逻辑层:主要是针对具体的问题的操作,也可以理解成对数据层的操作,对数据业务逻辑处理,如果说数据层是积木,那逻辑层就是对这些积木的搭建。

3.表示层:主要是表示WEB方式,也可以表示成WINFORM方式,WEB方式也可以表现成:aspx,如果逻辑层相当强大和完善,无论表现层如何定义和修改,逻辑层都能完善地提供服务。

DAO:

data access Object是后台实现业务逻辑的java类;

对应DAO还有个DTO是Data transfer Object数据运输对象,它是一个定义了很多变量及变量的get,set方法的类,常用来做流程方法的参数.也可以看成是一个自定义的数据类型;

domain是范围,界线,也被用来批一个变量的有效作用域

也常用这个词做一个包,然后在里面放些DAO类文件。

spring是开源的轻量级框架

spring核心主要两部分:

 1.aop:面向切面编程,扩展功能不是修改源代码实现

 2.ioc:控制反转

  比如有一个类,在类里面有方法(不是静态方法),调用类里面的方法,需要创建类的对象,使用对象调用方法,创建对象过程中需要new一个新对象

  把对象的创建不是通过new方式实现,而是讲给Spring配置创建类对象。

Spring是一站式框架:

 1.spring在javaee三层结构中,每一层都提供不同的解决技术

    web层:springMVC   

    service层:spring的ioc

    dao层:Spring的jdbcTemplate

Spring的ioc操作:

1.把对象的创建交给Spring进行管理

2.ioc操作的两部分:

  1.ioc的配置文件方式

  2.ioc的注解方式

IOC底层原理:

1.底层原理使用技术

    1.xml配置文件

    2.dom4j解决xml

    3.工厂设计模式

    4.反射    

开发中的思想:高内聚,低耦合

IOC入门案例:

结果如图:

=================================================================

明天计划的事情:复习与JDBC有关的数据库连接技术并熟练掌握,学习查看日志,学习Linux系统的基础知识;

*************************************************************************************************************

遇到的问题:

1.JdbcTemplate还是不懂;

2.Eclipse前期的程序和后期的程序分别乱码,GBK编码早期的乱码,UTF-8近期的乱码;

3.关于MyBatis连接数据库解决bug花了3个小时,主要问题是

<property name="url" value="jdbc:mysql://localhost:3306/enlist?useUnicode=true&amp;characterEncoding=UTF-8&amp;

useSSL=false&amp;zeroDateTimeBehavior=convertToNull" />的问题;这段代码是正确代码;

sqlMapConfig.xml在src目录下移动到SQLmap目录下再移动回来成功的解决了许多无法解决的bug;Eclipse卒!

*****************************************************************************************************

收获:决定换一个IDE


返回列表 返回列表
评论

    分享到