• 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);

    }

    }

     

  • 相关阅读:
    ASP.NET 4的Demo实践:URL“.NET研究”路由改进支持 狼人:
    在.NET Workflo“.NET研究”w 3.5中使用多线程提高工作流性能 狼人:
    Reg“.NET研究”exOptions.Compiled的含义和使用 狼人:
    ASP.“.NET研究”NET MVC3 on Mono的折腾(二):Linux(openSUSE)下的部署 狼人:
    C#编程笔记(一)“.NET研究” 狼人:
    Sh“.NET研究”arePoint开发笔记SharePoint2010添加ASP.NET应用程序 狼人:
    分享在MVC3.0中使用jQue“.NET研究”ry DataTable 插件 狼人:
    Silverlight 游戏开发“.NET研究”小技巧:血条和进度条 狼人:
    .N“.NET研究”ET中的异步编程(二) 传统的异步编程 狼人:
    不错的VS2010扩展——JSEnhancements,让js和c“.NET研究”ss也折叠 狼人:
  • 原文地址:https://www.cnblogs.com/alexhjl/p/6841173.html
Copyright © 2020-2023  润新知