Java-Mybatis深入
MyBatis深入Mybatis的Dao层实现介于原始mybatis过于繁琐,
我们采用代理开发方式:
采用Mybatis的代理开发方式实现DAO 层的开发,这种方式是我们后面进入企业的主流。Mapper 接口开发方法只需要程序员编写Mapper 接口(相当于Dao 接口),由Mybatis框架根据接口定义创建接口的动态代理对象,代理对象的方法体同上边Dao接口实现类方法。
Mapper 接口开发需要遵循以下规范:
1、Mapper.xml文件中的namespace与mapper接口的全限定名相同
2、Mapper接口方法名和Mapper.xml中定义的每个statement的id相同
3、Mapper接口方法的输入参数类型和mapper.xml中定义的每个sql的parameterType的类型相同
4、Mapper接口方法的输出参数类型和mapper.xml中定义的每个sql的resultType的类型相同
只需将原先手动的
1List<User> userList= sqlSession.selectList("userMapper.findAll" ...
Java-Mybatis入门
MyBatis入门1.什么是Mybatis
mybatis是一个优秀的基于java的持久层框架,它内部封装了jdbc,使开发者只需要关注sql语句本身,而不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。
mybatis通过xml或注解的方式将要执行的各种statement配置起来,并通过java对象和statement中sql的动态参数进行映射生成最终执行的sql语句。
最后mybatis框架执行sql并将结果映射为java对象并返回。采用ORM思想解决了实体和数据库映射的问题,对jdbc进行了封装,屏蔽了jdbcapi底层访问细节,使我们不用与jdbcapi打交道,就可以完成对数据库的持久化操作。
MyBatis开发步骤:
①添加MyBatis的坐标
②创建user数据表
③编写User实体类
④编写映射文件UserMapper.xml
⑤编写核心文件SqlMapConfig.xml
⑥编写测试类
环境搭建:1.导入MyBatis的坐标和其他相关坐标
12345678910111213<!--mybatis坐标--><depend ...
Java-Spring声明式事务控制
声明式事务控制1.什么是声明式事务控制Spring 的声明式事务顾名思义就是采用声明的方式来处理事务。这里所说的声明,就是指在配置文件中声明,用在Spring 配置文件中声明式的处理事务来代替代码式的处理事务。
底层是AOP思想,即将控制事务作为通知织入到业务方法中进行加强。
声明式事务处理的作用
事务管理不侵入开发的组件。具体来说,业务逻辑对象就不会意识到正在事务管理之中,事实上也应该如此,因为事务管理是属于系统层面的服务,而不是业务逻辑的一部分,如果想要改变事务管理策划的话,也只需要在定义文件中重新配置即可
在不需要事务管理的时候,只要在设定文件上修改一下,即可移去事务管理服务,无需改变代码重新编译,这样维护起来极其方便
2. 声明式事务控制的实现基于xml配置方式①引入tx命名空间
12xmlns:tx="http://www.springframework.org/schema/tx"http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spri ...
Java-SpringAOP
面向切面编程-Spring AOP一.AOP介绍1.什么是AOPAOP 为Aspect Oriented Programming 的缩写,意思为面向切面编程,是通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。
作用:在程序运行期间,在不修改源码的情况下对方法进行功能增强
优势:减少重复代码,提高开发效率,并且便于维护
2.AOP的底层实现实际上,AOP 的底层是通过Spring 提供的的动态代理技术实现的。在运行期间,Spring通过动态代理技术动态的生成代理对象,代理对象方法执行时进行增强功能的介入,在去调用目标对象的方法,从而完成功能的增强。
3. AOP 的动态代理技术常用的动态代理技术:
JDK 代理: 基于接口的动态代理技术 —用于存在接口时,依据接口生成代理对象
cglib 代理:基于父类的动态代理技术 —用于没有接口时,直接将目标对象作为父类生成代理对象
图解:
JDK 的动态代理:
①目标类接口
123public interface TargetInterface { public void method ...
Java-SpringMVC拦截器
SpringMVC拦截器-Interceptor1.SpringMVC拦截器Spring MVC 的拦截器类似于Servlet 开发中的过滤器Filter,用于对处理器进行预处理和后处理。将拦截器按一定的顺序联结成一条链,这条链称为拦截器链(Interceptor Chain)。在访问被拦截的方法或字段时,拦截器链中的拦截器就会按其之前定义的顺序被调用。拦截器也是AOP思想的具体实现。
2.拦截器和过滤器区别
3.拦截器实现
创建拦截器类实现HandlerInterceptor接口
配置拦截器
测试拦截器的拦截效果
1.实现接口:
1234567891011public class MyHandlerInterceptor1 implements HandlerInterceptor {public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) { System.out.println("pr ...
Java-SpringMVC
Spring-MVC1.SpringMVC快速入门采用MVC三层架构创建spring,因为web包下的servlet大都具有共有行为,即:接收数据,调用service对象,因此可以将共有行为提取出来,交由spring组件帮忙创建(前端控制器),而开发者只需要编写相关controller来实现一些特有行为。
执行流程:
需求:客户端发起请求,服务器接收请求,执行逻辑并进行视图跳转。
开发步骤:
导入SpringMVC相关坐标
配置SpringMVC核心控制器DispatherServlet
创建Controller类和视图页面
创建注解配置Controller类中业务方法的映射地址
配置SpringMVC核心文件spirng-mvc.xml
客户端发起请求测试
导入坐标:
123456首先,导入SpringMVC坐标:<dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <ve ...
Java-Spring集成Web环境
Spring集成Web环境1.Spring继承junit原始问题:在测试类中,每个测试方法都有以下两行代码:
12ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");UserDao userDao = (UserDao) app.getBean("UserDao"); //userDao为一个例子
这两行代码的作用是获取容器,如果不写的话直接会提示空指针异常,所以又不能轻易删掉。
但是,一个项目下会有多个测试类,每个测试类都需要执行这两行代码,这就存在大量重复工作,因此,可以用Spring继承junit,让SpringJunit来创建Spring容器
集成步骤:
导入Spring集成junit的坐标
使用@Runwith注解替换原来的运行期
使用@ContextConfiguration指定配置文件或配置类
使用@Autowired注入需要测试的对象
创建测试方法进行测试
首先导入Springjunit坐标
12 ...
Java-Spring注解开发
Spring注解开发:通过采用注解的方式进行开发,替代原先在xml中的配置文件标签。
1.Spring原始注解:Spring原始注解主要是替代< Bean >标签的配置
给出图总:
具体介绍:
1.@Component可以在web,service,dao层三层上实例化bean,后跟参数为bean中的id。
1@Component("UserDao")
但为了增加可读性,即能很好的观察当前注解的哪一层,采用@Repository注解用于dao层,@Service注解御用service层,采用@Controller注解用于web层。
123@Repository("UserDao") //dao层注解,放在userDao实现类上方@Service("UserService") //service层注解,放在service实现类上方@Controller("UserController") //web层注解,放在web实现类上方
2.@Autowired替代依赖注入的标签, ...
Java-Spring配置文件
Spring配置文件:1.Bean标签基本配置:用于配置对象交由Spring来创建、
默认情况下他调用的是类中的无参构造函数, 如果没有无参构造函数则不能创建成功。
基本属性:
id:Bean实例在Spring容器中的唯一标识
class:Bean的全限定名称。
2.Bean标签范围配置:scope:指对象的作用范围:取值如下:
注意:
1.Spring中scope默认值为”singleton“
2.当sope的取值为singleton时,
Bean的实例化个数:1个
Bean的实例化时机:当Spring核心文件被加载时,实例化配置的Bean实例。
Bean的生命周期:
对象创建:当应用加载,创建容器时,对象就被创建了
对象运行:只要容器在,对象一直活着
对象销毁:当应用卸载,销毁容器时,对象就被销毁了
3.当sope的取值为prototype时,
Bean的实例化个数:多个
Bean的实例化时机:当调用getBean()方法时实例化Bean
Bean的生命周期:
对象创建:当调用对象时,创建新的对象实例
对象运行:只要对象在使用中,就一直活着
对象 ...
Java-Spring入门
Spring入门:1.Spring是什么Spring时分层的Java SE/EE应用full-stack 轻量级开源框架,以 IOC(反转控制)和 AOP (面向切面编程) 为内核。
提供了展现层SpringMVC和持久层Spring JDBCTemplate以及业务层事务管理等众多的企业级应用技术,还能整合开源世界众多著名的第三方框架和类库,逐渐成为使用最多的Java EE 企业应用开源框架。
2.Spring的优势
方便解耦,简化开发
即:在service层中不需要new 一个dao层对象,而是交给spring去创建对象,然后再拿来用。
AOP编程的支持
声明式事物的支持
方便程序的测试
方便集成各种优势框架
降低J啊v啊EE API的使用难度
Java 源码时经典的学习范例
3.Spring的体系结构
4.Spring程序开发步骤1.导入Spring开发的基本包坐标
2.编写Dao接口和实现类
3.创建Spring核心配置文件
4.在Spring配置文件中配置UserDaoImpl (dao层mapper文件)
5.使用Spring的API获得 ...