一、spring框架技术-----简化了web企业级开发,更易于系统的维护和扩展
多态性的体现-----提倡面向接口编程---运行时绑定(后绑定:通过结果来确定调用的是哪个接口)
使用接口为属性、参数、返回值,父类引用指向子类对象
二、spring的作用
插拔式的功能----用的时候插上、不用拔掉
三、搭建spring的步骤
1、创建web项目、在WebContent----WEB-INF----lib下添加相关jar包
在WebContent----WEB-INF下配置spring-servlet.xml和web.xml文件(配置的关键内容见上篇SpringMVC框架的配置)
2、在项目中创建Source Folder(resources),在resources中配置jdbc.properties、log4j.properties、spring配置文件(applicationContext.xml)
注意:每个配置文件注意路径问题
jdbc.properties----用属性文件保存数据库信息(需要更改数据库信息)
log4j.properties----控制日志信息输送的目的地是控制台、文件、GUI组件、甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等(需要更改两处包路径)
applicationContext.xml
---a、先引入属性文件---读取数据库属性信息${}--->properties文件---jdbc***(需修改)
---b、配置数据源---数据库连接信息
---c、配置sqlSessionFactory----工厂
注入数据源、配置实体类别名(统一配置包名)、配置映射文件(统一配置路径)----(需修改)
---d、配置事务管理器
注入数据源、事务管理器、增加事务注解驱动
---e、加入注解支持---包括事务管理(设置使用注解的类所在的包,加载业务类)----(需修改)
扫描service路径,加载service实现类
---f、配置dao代理器,设置dao路径(配置mybatis接口)----(需修改)
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.0.xsd">
<!-- 加载数据库属性文件内容 -->
<context:property-placeholder location="classpath:jdbc.properties"/>
<!-- 1、配置数据源 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName">
<value>${jdbc.driver}</value>
</property>
<property name="url">
<value>${jdbc.url}</value>
</property>
<property name="username">
<value>${jdbc.username}</value>
</property>
<property name="password">
<value>${jdbc.password}</value>
</property>
<property name="maxActive">
<value>${jdbc.maxActive}</value>
</property>
<property name="maxIdle">
<value>${jdbc.maxIdle}</value>
</property>
<property name="maxWait">
<value>${jdbc.maxWait}</value>
</property>
</bean>
<!-- 2、创建sqlSessionFactory -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="typeAliasesPackage" value="com.hqyj.pojo"></property>
<!-- 配置sqlmapper路径 -->
<property name="mapperLocations">
<list>
<value>classpath:mapper/*.xml</value>
</list>
</property>
</bean>
<!-- 3、配置事务管理 -->
<!-- a、事务管理器 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<!-- 增加事务注解驱动 -->
<tx:annotation-driven transaction-manager="transactionManager"/>
<!-- 设置使用注解的类所在的包,加载业务类 -->
<context:component-scan base-package="com.hqyj.service"></context:component-scan>
<!-- 配置mybatis接口 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.hqyj.dao"></property>
</bean>
</beans>
3、Source Folder(resources)下创建Mapper文件夹,配置Mapper.xml(在这里书写SQL语句)
---namespace---逻辑路径必须和dao路径一致(包名+接口名)
---sql的ID和dao的方法名一致
parameterType属性用于对应的mapper接口方法接受的参数类型
resultType用于指定sql输出的结果类型
4、创建项目包目录----pojo、dao、service、controller
注意:在pojo中的实体类属性:基本数据类型统一改为包装类型
Mybatis接口不是我们实现的,其自己实现
在service包下建立Impl包,是****service接口的实现类
注解:@Service:初始化service
@Autowired:自动注入(可以初始化了、可用)
@Transactional:事务处理,保障数据的一致性
controller----使用接口编程
@Controller
@RequestMapping("/users")
public class UsersController {
@Autowired
private UsersService us;
@Autowired
private HttpServletRequest request;
@RequestMapping("/insert")
public String insert(Users u){
us.insert(u);
System.out.println("插入成功");
return "users/list";
}
@RequestMapping("/update")
public String update(Users u){
us.update(u);
System.out.println("更新成功");
return "users/list";
}
@RequestMapping("/delete")
public String delete(String usid){
us.delete(usid);
System.out.println("删除成功");
return "users/list";
}
@RequestMapping("/selectOne")
public String selectOne(String usid){
Users u = us.selectOne(usid);
request.setAttribute("u", u);
System.out.println(u);
return "users/update";
}
@RequestMapping("/selectList")
public String selectList(){
List list = us.selectList();
request.setAttribute("list", list);
System.out.println(list);
return "users/list";
}
}
在WebContent下新建文件夹(实体类文件夹)------存储jsp文件----users-----insert.jsp
5、在jdbc.properties配置连接池
事先打开一定数量的数据库连接,等待用户的使用,使用之后,再还回连接池
最多打开的连接数量
jdbc.maxActive=10
事先准备的连接数量
jdbc.maxIdle=5
客户端处于等待的超时时间,毫秒数
jdbc.maxWait=30000