spring和jdbctemplate

1.spring与jdbc整合应用

a。增删改

-获取connection

-获取statement

-设置sql中?参数

-执行sql操作

-释放connection

b。查询

-获取connection

-获取statement

-设置sql中?参数

-执行sql操作获取resultset结果

-将resultset结果封装成实体对象

-释放connection

1.spring提供了JdbcTemplate,编写DAO的工具类

a。jdbcTemplate.update("insert。。。。。",参数);

b。提供了aop事务管理(不需要再方法中追加事务提交和回滚)

c。提供了统一的异常处理DataAccessException

2.spring整合jdbc步骤

a。引入spring(ioc,aop,dao),数据库驱动,添加src/applicationContext.xml

b.编写实体类

c。编写DAO

d.在applicationContext.xml中扫描EmpDAO,注入JdbcTemplate对象 

dbcp注入jdbctemplate,jdbctemplate注入empdao。

dbcp和jdbctemplate用的(xml的bean定义),empdao用的自动扫描。

例子:

spring.xml:

<!-- 开启自动扫描,扫描DAO -->

<context:component-scan base-package="org.alexhe"></context:component-scan>

<!-- 定义JdbcTemplate -->

<bean id="template" class="org.springframework.jdbc.core.JdbcTemplate">

<!-- 注入连接信息 -->

<property name="dataSource" ref="dbcp"></property>

</bean>

<bean id="dbcp" class="org.apache.commons.dbcp.BasicDataSource">

<property name="username" value="root"></property>

<property name="password" value="19850319a"></property>

<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>

<property name="url" value="jdbc:mysql://localhost:3306/danei?useSSL=false&amp;useUnicode=true&amp;characterEncoding=utf8"></property>

</bean>

empdao.java:

@Repository//扫描Dao

public class EmpDao {

@Resource//注入

private JdbcTemplate template;//注入

 

public void save(Emp emp){

String sql="insert into emp(name,salary,age) values(?,?,?)";

Object[] params={emp.getName(),emp.getSalary(),emp.getAge()};

template.update(sql,params);

}

public void delete(int id){

String sql="delete from emp where id=?";

Object[] params={id};

template.update(sql,params);

}

public List<Emp> findAll(){

String sql="select * from emp";

EmpRowMapper rowMapper=new EmpRowMapper();

List<Emp> list=template.query(sql, rowMapper);

return list;

}

public Emp findById(int id){

String sql="select * from emp where id=?";

Object[] params={id};

EmpRowMapper rowMapper=new EmpRowMapper();

Emp emp=template.queryForObject(sql, params,rowMapper);

return emp;

}

}

 Emp.java:

public class Emp implements Serializable{

private Integer id;

private String name;

private Double salary;

private Integer age;

省略get,set方法

EmpRowMapper.java:

/**将emp记录封装成Emp对象*/

public class EmpRowMapper implements RowMapper<Emp>{

 

@Override

public Emp mapRow(ResultSet rs, int index) throws SQLException {

// TODO Auto-generated method stub

Emp emp=new Emp();

emp.setId(rs.getInt("id"));

emp.setName(rs.getString("name"));

emp.setSalary(rs.getDouble("salary"));

emp.setAge(rs.getInt("age"));

return emp;

}

 

}

Test类:

public class TestEmpDao {

public static void main(String[] args) {

ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml");

EmpDao empDao=ac.getBean("empDao",EmpDao.class);

Emp emp=new Emp();

emp.setName("spring1");

emp.setAge(201);

emp.setSalary(100010.0);

List<Emp> list=empDao.findAll();

System.out.println(list);

}

}

 

原文地址:https://www.cnblogs.com/alexhjl/p/6841173.html