————————SpringJSBC————————–
1. SpringJdbc
(1)SpringJdbc是什么?
Spring对jdbc的封装。
注:使用SpringJdbc访问数据库,代码更简洁.(比如不用考虑如何
获取连接与关闭连接等。)
(2) 编程步骤
step1. 导包。spring-webmvc、spring-jdbc,ojdbc,dbcp,junit.
step2. 添加spring的配置文件。
step3. 配置JdbcTemplate.
注:JdbcTemplate对常见的一些数据库操作做了封装。
step4. 调用jdbcTemplate提供的方法来访问数据库。
注:通常会将jdbcTemplate注入到DAO。
常用方法:
@Repository("employeeDAO")
public class EmployeeDAO {
@Resource(name="jt")
private JdbcTemplate jt;
/**
* SpringJdbc会将底层的异常转
* 换成相应的RuntimeException,然后输出。
*/
/*
* 插入数据
*/
public void save(Employee e){
String sql = "INSERT INTO emp_jdbc "
+ " VALUES(emp_seq.nextval,?,?)";
Object[] args = {e.getName(),e.getAge()};
jt.update(sql,args);
}
/*
* 查询所有数据
*/
public List<Employee> findAll(){
List<Employee> employees = new ArrayList<Employee>();
String sql = "SELECT * FROM emp_jdbc";
employees = jt.query(sql, new EmpRowMapper());
return employees;
}
/*
* 查询单一数据
*/
public Employee findById(int id){
String sql = "SELECT * FROM emp_jdbc "
+ " WHERE id=? ";
Object[] args = {id};
return jt.queryForObject(sql, args,new EmpRowMapper());
}
/*
* 修改
*/
public void modify(Employee e){
String sql = "UPDATE emp_jdbc SET "
+ " name = ?,age=? WHERE id=? ";
Object[] args = {e.getName(),e.getAge(),e.getId()};
jt.update(sql,args);
}
/*
* 删除
*/
public void delete(int id){
String sql = "DELETE FROM emp_jdbc "
+ " WHERE id=? ";
Object[] args = {id};
jt.update(sql,args);
}
/**
* 内部类:告诉Springjdbc如何将记录转换为对用的实例对象。
*/
class EmpRowMapper implements RowMapper<Employee>{
//index:正在被处理的记录的下标
public Employee mapRow(
ResultSet rst, int index) throws SQLException {
Employee e = new Employee();
e.setId(rst.getInt("id"));
e.setName(rst.getString("name"));
e.setAge(rst.getInt("age"));
return e;
}
}
}
2. Spring集成Mybatis
(1)集成方式一:
step1.导包。
spring-webmvc,mybatis,mybatis-spring,dbcp(链接池),ojdbc(驱动),spring-jdbc,juint(测试)
step2.添加spring配置文件并配置。
注:不在需要mybatis配置文件,原来mybatis的配置文件的内容会放到sql配置文件中的SQLSessionFactoryBean中。
step3.写实体类。
step4.写映射文件。
step5.写映射器Mapper(接口)。
step6.在Spring配置文件中配置MapperScannerconfigurer.
注1:
该Bean会扫描指定包及其子包下面所有的映射器(接口)。然后调用SQLSession的getMapper方法,
并且将该方法的返回值(就是实现了映射器接口的对象)放到Spring容器里面(默认的Id为首字母小写的接口名)。
注2:如何只扫描有特定注解的接口?
1. 开发一个注解。
2. 修改MapperScannerconfigurer的配置。
3. 将该注解添加到接口之上。
见项目: mybatis-day02-1
(2)集成方式二:
step1.导包。
spring-webmvc,mybatis,mybatis-spring,dbcp(链接池),ojdbc(驱动),spring-jdbc,juint(测试)
step2.添加spring配置文件。
注:不在需要mybatis配置文件,原来mybatis的配置文件的内容会放到sql配置文件中的SQLSessionFactoryBean中。
step3.写实体类。
step4.写映射文件。
step5.写映射器Mapper(接口)。
step6.写一个java类,实现映射器接口。
step7.配置SqlSessionTemplate。
注: SqlSessionTemplate对SqlSession的操作做了封装。
见项目: mybatis-day02-2