`

使用Spring的SimpleJdbcTemplate完成DAO操作

阅读更多

SimpleJdbcTemplate内部包含了一个NamedParameterJdbcTemplate;所以NamedParameterJdbcTemplate能做的事情SimpleJdbcTemplate都能干,SimpleJdbcTemplate相对于NamedParameterJdbcTemplate主要增加了JDK5.0的泛型和可变长度参数支持。

public <T> List<T> query(String sql, ParameterizedRowMapper<T> rm, Object... args)

public <T> T queryForObject(String sql, ParameterizedRowMapper<T> rm, SqlParameterSource args)

public <T> List<T> query(String sql, ParameterizedRowMapper<T> rm, SqlParameterSource args)

getJdbcOperations返回的是JdbcOperations(实现JdbcTemplate)

getNamedParameterJdbcOperations返回的是NamedParameterJdbcOperations(实现是NamedParameterJdbcTemplate)

 

 

 

实例说明:

public class StuDaoImple implements StuDaointer {

    private SimpleJdbcTemplate simplejdbctemp;

    public StuDaoImple(){

       simplejdbctemp=new SimpleJdbcTemplate(SQLConnUtil.getDataSource());

    }// SQLConnUtilJDBC工具类,提供了得到数据源的静态方法

    /*

     * 可以通过SimpleJdbcTemplate得到NamedParameterJdbcTemplateJdbcTemplate

     */

    public void AddStu(Stu stu){

       String sql="insert into stu values(:sname,:ssex,:sbrith)";

       SqlParameterSource ps=new BeanPropertySqlParameterSource(stu);

       KeyHolder key=new GeneratedKeyHolder();

       this.simplejdbctemp.getNamedParameterJdbcOperations().update(sql, ps, key);

       System.out.println(key.getKey().intValue());

    }

    /* SimpleJdbcTemplate的第一个好处:

     * SimpleJdbcTemplateupdate方法中参数是动态的,但是只能用?代替参数

     */

    public void DelStu(int id){

       String sql="delete stu where s_id=?";

       simplejdbctemp.update(sql, id);

    }

    /*

     * SimpleJdbcTemplateupdate方法中参数是动态的,它的个数是动态的

     */

    public void UpdStu(Stu stu){

       String sql="update stu set s_name=?,s_sex=?,s_brith=? where s_id=?";

       simplejdbctemp.update(sql, stu.getSname(),stu.getSsex(),stu.getSbrith(),stu.getSid());

    }

    /*

     * SimpleJdbcTemplate的第二个好处:

     * SimpleJdbcTemplatequeryForObject方法可以直接返回Stu对象,不用转换

     */

    public Stu getone(int id){

       String sql="select s_id as sid,s_name as sname,s_sex as ssex,s_brith as sbrith from stu where s_id=?";

       Stu stu=simplejdbctemp.queryForObject(sql, ParameterizedBeanPropertyRowMapper.newInstance(Stu.class), id);

       return stu;

    }

    public List getall(){

       String sql="select s_id as sid,s_name as sname,s_sex as ssex,s_brith as sbrith from stu";

       List list=simplejdbctemp.getJdbcOperations().query(sql, new BeanPropertyRowMapper(Stu.class));

       return list;

    }

}

分享到:
评论
2 楼 fightplane 2010-06-18  
wxq594808632 写道
  public void AddStu(Stu stu){

       String sql="insert into stu values(:sname,:ssex,:sbrith)";

       SqlParameterSource ps=new BeanPropertySqlParameterSource(stu);

       KeyHolder key=new GeneratedKeyHolder();

       this.simplejdbctemp.getNamedParameterJdbcOperations().update(sql, ps, key);

       System.out.println(key.getKey().intValue());

    }




用这个方法得到的主键.mysql好像不行?我第一次添加正确.比如我添加100行数据.然后我删除了这些数据.再进行插入时.取到的主键就是从101开始了.而不是回到原来的位置

这是数据库得到问题,ID字段是自加的不是插入的,mysql中只有将表清空后ID才会清零从头来
1 楼 wxq594808632 2009-05-15  
  public void AddStu(Stu stu){

       String sql="insert into stu values(:sname,:ssex,:sbrith)";

       SqlParameterSource ps=new BeanPropertySqlParameterSource(stu);

       KeyHolder key=new GeneratedKeyHolder();

       this.simplejdbctemp.getNamedParameterJdbcOperations().update(sql, ps, key);

       System.out.println(key.getKey().intValue());

    }




用这个方法得到的主键.mysql好像不行?我第一次添加正确.比如我添加100行数据.然后我删除了这些数据.再进行插入时.取到的主键就是从101开始了.而不是回到原来的位置

相关推荐

    Spring中文帮助文档

    11.4.2. 使用SimpleJdbcTemplate进行批量操作 11.5. 通过使用SimpleJdbc类简化JDBC操作 11.5.1. 使用SimpleJdbcInsert插入数据 11.5.2. 使用SimpleJdbcInsert来获取自动生成的主键 11.5.3. 指定SimpleJdbcInsert...

    Spring API

    11.4.2. 使用SimpleJdbcTemplate进行批量操作 11.5. 通过使用SimpleJdbc类简化JDBC操作 11.5.1. 使用SimpleJdbcInsert插入数据 11.5.2. 使用SimpleJdbcInsert来获取自动生成的主键 11.5.3. 指定SimpleJdbcInsert...

    Spring.3.x企业应用开发实战(完整版).part2

    经过历时一年的重大调整改版而成的,本书延续了上一版本追求深度,注重原理,不停留在技术表面的写作风格,力求使读者在熟练使用Spring的各项功能的同时,还能透彻理解Spring的内部实现,真正做到知其然知其所以然。...

    Spring 2.0 开发参考手册

    12.2.4. 不使用回调的基于Spring的DAO实现 12.2.5. 基于Hibernate3的原生API实现DAO 12.2.6. 编程式的事务划分 12.2.7. 声明式的事务划分 12.2.8. 事务管理策略 12.2.9. 容器资源 vs 本地资源 12.2.10. 在应用...

    Spring-Reference_zh_CN(Spring中文参考手册)

    12.2.4. 不使用回调的基于Spring的DAO实现 12.2.5. 基于Hibernate3的原生API实现DAO 12.2.6. 编程式的事务划分 12.2.7. 声明式的事务划分 12.2.8. 事务管理策略 12.2.9. 容器资源 vs 本地资源 12.2.10. 在应用服务器...

    spring chm文档

    12.2.4. 不使用回调的基于Spring的DAO实现 12.2.5. 基于Hibernate3的原生API实现DAO 12.2.6. 编程式的事务划分 12.2.7. 声明式的事务划分 12.2.8. 事务管理策略 12.2.9. 容器资源 vs 本地资源 12.2.10. 在应用...

    Spring3.x企业应用开发实战(完整版) part1

    经过历时一年的重大调整改版而成的,本书延续了上一版本追求深度,注重原理,不停留在技术表面的写作风格,力求使读者在熟练使用Spring的各项功能的同时,还能透彻理解Spring的内部实现,真正做到知其然知其所以然。...

Global site tag (gtag.js) - Google Analytics