spring:JdbcDaoSupport
在前面我们学习了JDBC Template,尽管此时可以直接利用JDBCTemplate进行数据库的操作,但是在大部分的DAO的实现子类中,却很少有人会这样做,大家往往会让DAO的实现子类既实现了DAO同时又继承一个JdbcDaoSupport的抽象类。为什么会这样呢?先来看之前学习的JDBC Template。
我们为获得JDBCTemplate对象,需要在xml文件中进行配置:
1234<!--配置JDBC工具类--> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource" ref="dataSource"/> </bean>
然后在使用的地方使用下面的代码进行注入:
12@Autowiredprivate JdbcTemplate jdbcTemplate;
这其实就是让Spri ...
spring:JDBC Template学习
本文介绍如何使用Spring组件JDBC Template来简化持久化操作,当然JDBC Template现在企业用的不是很多,一般使用 Mybatis作为持久层框架。因此本文只是简单的介绍几点:1、Spring组件JDBC Template基本信息;2、使用JDBC Template进行持久化操作;3、更好地了解和学习Mybatis或者Hibernate等ORM框架。
注意在学习JDBC Template之前,你最好有JDBC、SpringIOC、SpringAOP和Mysql等基础。
JDBC Template简介为了简化持久化操作,Spring在JDBC API基础上提供了JDBC Template组件。下面是基于JDBC API的数据库访问操作流程图:
其实这个过程是较为复杂的,我们希望是简化JDBC的操作,最好是不编写JDBC API的代码,但是能实现JDBC的功能,最好是下面这样:
下面是从网上找到的一张图片,通过对比可以清楚地知道JDBC Template极大地简化了程序员的代码量:
案例说明这里举一个学生、课程和选课的例子来介绍如何使用Spring提供的JDBC ...
spring:基于AspectJ的AOP开发
在实际开发中,Spring最常用到的是基于AspectJ的AOP开发方式。而AspectJ的使用通常有两种方式:注解方式和xml配置方式。
AspectJ简述AspectJ是一个基于Java语言的AOP框架,在此之前都是使用传统的AOP开发,AspectJ是一个独立的AOP框架,由于它的方便效率,Spring2.0以后新增了对AspectJ切点表达式支持。
@AspectJ是AspectJ1.5新增的功能,通过JDK5注解的方式,允许直接在Bean类中定义切面。新版本的Spring框架建议使用AspectJ方式来进行开发AOP。
使用AspectJ需要导入Spring AOP和AspectJ相关的jar包,如spring-aop、aopalliance、aspects以及aspectj.weaver等。
基于注解方式的AspectJ开发AOP第一步:新建一个webapp,名称为spring_aspectJ,接着在里面新建一个java源文件。
第二步:导入相应的包。首先在pom.xml文件中引入spring的基本开发包以及AspectJ开发包:
123456789101112131415 ...
spring:Spring AOP
Spring AOP说明AOP(Aspect Oriented Pragraming)面向切面编程,AOP采用横向抽取机制,取代了传统纵向继承体系的重复性代码(性能监视、事务管理、安全检查、缓存)。
所谓的传统纵向继承体系是指当你需要实现某个功能的时候需要去继承某个类,而横向抽取机制则是通过使用动态代理机制产生一个与之同级的对象,然后在代理对象中进行功能增强。
Spring AOP使用纯Java实现,不需要专门的编译过程和类加载器,在运行期通过代理方式向目标类织入增强代码。
Spring的AOP代理JDK动态代理:对实现了接口的类生成代理CGLib代理机制:对类生成代理
AOP相关术语**Joinpoint(连接点):**所谓连接点是指那些被拦截到的点。在spring中,这些点指的是方法,因为spring只支持方法类型的连接点;**Pointcut(切入点):**所谓切入点是指我们要对哪些Joinpoint进行拦截的定义;**Advice(通知/增强):**所谓通知是指拦截到Joinpoint之后所要做的事情就是通知。通知分为前置通知,后置通知,异常通知,最终通知,环绕通知(切面要完成 ...
spring:Spring Bean管理
Spring工厂类介绍在前面使用了Spring的ApplicationContext,并通过它的getBean方法获取Spring的配置文件applicationContext.xml,然后得到Bean的class对象。
从图中可以知道我们使用的是ApplicationContext接口,而使用的具体实现类是ClassPathXmlApplicationContext用来加载类路径下面的配置文件;注意到左边还有一个FileSystemXmlApplicationContext实现类,用于加载文件系统中的文件,言外之意就是当你的配置文件不在当前的项目工程内,此时就可以使用FileSystemXmlApplicationContext实现类去获取配置文件,接着去获取Bean对象。在老旧的Spring中使用的是BeanFactory接口,正如你所看到的ApplicationContext接口是它的子类自然功能就相对来说较为丰富。再有一点就是两者在生成Bean实例的时间是不同的。对于BeanFactory接口来说是工厂实例化结束后,在调用getBean方法的时才会去创建该类的实例;而Appl ...
spring:快速入门
Spring概述Spring是一个开源框架,Spring是为简化企业级应用开发而生的,使用Spring可以使简单的JavaBean实现以前只有EJB才能实现的功能;Spring是JavaEE/JavaSE的一站式框架。JavaEE在开发过程中会将服务器划分为三层:Web层,业务逻辑层,持久层。Spring对于这三层都提供了较为完善的解决方案:在Web层提供了SpringMVC;业务逻辑层提供了用于Bean管理的SpringIOC和事务;持久层提供了JDBC Template,或者与Mybatis等ORM框架进行整合。
优点:
接下来是Spring的模块(本文以Spring4为例进行学习介绍):
Spring Ioc实现原理下载SpringSpring官网并不直接提供Spring的下载,Spring现在托管在GitHub上,相应的下载步骤如下:你可以点击这里查看文章下载Spring,或者直接看下面的步骤:
1、进入Spring官网 -> PROJECTS -> SPRING FRAMEWORK:
2、点击GitHub的图标,进入GitHub:
3、进入Sprin ...
Mybatis:拦截器实现分页
在前面往数据库中批量插入了大量数据,那么如何将这些数据进行分页展示呢?这里就需要介绍Mybatis中的拦截器了,通过拦截器可以实现数据的分页(在数据库中物理分页方式读取数据)。 本篇主要介绍以下几点内容:1、Mybatis的四大对象、插件原理及接口;2、Mybatis的插件开发过程;3、代理模式的介绍;4、如何使用PageHelper插件来实现分页功能。
Mybatis的四大对象Mybatis对持久层的操作就是借助于四大核心对象,分别是:ParameterHandler、ResultSetHandler、StatementHandler、Executor。
其中ParameterHandler用于处理SQL的参数对象;ResultSetHandler用于处理SQL的返回结果集;StatementHandler是数据库的处理对象,用于执行SQL语句;Executor是Mybatis的执行器,用于执行增删改查操作。
MyBatis支持用插件对四大核心对象进行拦截,对MyBatis来说插件就是拦截器,用来增强核心对象的功能,增强功能本质上是借助于底层的动态代理实现的,换句话说MyBatis中 ...
Mybatis:批量插入数据
本篇来学习Mybatis如何批量插入数据,在此之前先介绍传统JDBC模式下如何进行数据的批量插入操作,因为Mybatis其本质上是封装了JDBC,因此了解JDBC模式下的数据批量插入有利于更好地理解和使用Mybatis。总的来说就三个内容:1、复习传统JDBC模式下数据的批量插入操作;2、Mybatis借助Mysql数据库对批量插入的支持;3、Mybatis基于SqlSession的ExecutorType进行批量添加。
传统JDBC模式下数据的批量插入操作传统JDBC模式下数据的批量插入操作方法有两种:1、在Java代码中使用for循环直接插入SQL数据(如execute()/executeUpdate()方法);2、借助于statement、Prestatement对象的批处理方法addBatch。
两种操作缺点:传统JDBC模式下数据的批量插入操作缺点:1、在Java代码中使用for循环直接插入SQL数据这种方式效率严重低下,需要频繁获取Session连接;2、使用批处理操作会使得代码和SQL之间过度耦合,造成代码量过大现象。
Mybatis数据批量插入方法Mybatis数据批量 ...
Mybatis:参数传递
Mybatis是ORM持久层框架的佼佼者,它封装了JDBC,真正实现了SQL语句与Java代码的分离,它优秀的功能为:支持动态SQL,缓存,物理分页插件PageHelper。注意本篇介绍以数组为传递参数进行数据的查询它在实际运用中有两个例子:1、SQL语句中使用IN的情况,可以使用数组封装IN中的值;2、批量操作数据的情况,可以把操作的数据封装在数组中。
第一步:新建一个Maven项目mybatis_parameter(不使用模板),其中pom.xml配置信息如下:
12345678910111213141516171819202122232425262728293031323334353637383940414243<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-in ...
Mybatis:快速入门
ORM模型ORM(object relation Mapping):对象关系映射。这里的object是指Java实体类中的对象,relation是指数据库中的表,Mapping就是Java实体类中对象与数据库中表之间的对应关系,就像下图中所展示的那样:
接下来是传统JDBC程序的设计缺陷:1、大量配置信息硬编码;2、大量的无关业务处理的编码;3、扩展优化极为不便。
MyBatis概述MyBatis是支持定制化SQL、存储过程以及高级映射的持久层框架。所谓的持久层其实就是能将数据保存到数据库中。
它的特点有:1、避免传统的JDBC硬编码,数据库配置信息都是通过xml文件进行配置,灵活度很高;2、使用XML配置或者注解,很大程度让我们自己书写sql语句,使得数据库优化成为可能;3、POJO对象和数据库记录直接映射, 你只需要创建数据库,而POJO对象则由MyBatis替你完成;4、完善的文档支持,MyBatis有着非常完善的文档,能帮你快速学习。
同时还有一些优点:1、简单易学,快速上手,学习成本较低;2、提供了数据库交互信息配置化;3、提供了动态SQL处理。
一般在以下场景中使用MyB ...