`

使用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之SimpleJdbcTemplate的使用

    在实际项目中,结合Spring的其他模块,如DAO支持、AOP等,SimpleJdbcTemplate将发挥更大的作用,为开发带来便利。 参考链接:[Spring SimpleJdbcTemplate详解](https://1194867672-qq-com.iteye.com/blog/1291025) ...

    spring操作MySQL数据库.zip

    在本项目"spring操作MySQL数据库.zip"中,主要展示了如何使用Spring框架与MySQL数据库进行集成,实现对数据库的增删查改操作。Spring是Java领域一个广泛应用的开源框架,它提供了一个全面的编程和配置模型,使得开发...

    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-orm源码

    源码展示了Spring如何配置实体扫描、数据源、持久化单元等,以及如何使用EntityManager和Query进行数据操作。 6. **AOP代理** Spring使用AOP(面向切面编程)来实现事务管理。当你看到TransactionProxyFactoryBean...

    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.8-sources.jar.zip

    Spring 2.0.8加强了对JDBC的抽象,提供了JdbcTemplate和SimpleJdbcTemplate,简化了数据库操作。同时,它还集成了多种ORM框架,如Hibernate、JPA等,提供了统一的编程接口。 八、集成测试 Spring 2.0.8引入了...

    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. 在应用...

    struts1+spring

    5. **Spring JDBC 和 DAO**:Spring 提供的 JDBC 模块简化了数据库操作,通过 JdbcTemplate 或 SimpleJdbcTemplate 可以实现无事务的数据库访问。而 DataSource 对象可以在 Spring 容器中配置,方便在 DAO 中获取并...

    spring中使用JDBC

    其中,Spring提供的三个主要模板类——`JdbcTemplate`、`NamedParameterJdbcTemplate`和`SimpleJdbcTemplate`,极大地简化了数据库操作,减少了代码量,提高了代码的可读性和可维护性。 #### JdbcTemplate `...

    Maven+spring3.0MVC注释方式开发的Web应用

    - DAO层(Data Access Object):负责与数据库交互,使用`SimpleJdbcTemplate`执行SQL操作。 - 实体类(Entity):代表数据库中的表,通常包含getter和setter方法,可能还会有`@Entity`、`@Table`等JPA注解。 - 配置...

    spring-demo

    这个名为“spring-demo”的项目,显然旨在展示如何使用Spring框架的几个关键组件:Spring JDBC、Spring MVC以及Spring业务层来构建一个完整的Web应用。下面将详细阐述这些知识点。 1. **Spring JDBC**: Spring ...

    student_mis.rar_Spring学生_spring 增删改查

    Spring JDBC提供了Template类,如JdbcTemplate或SimpleJdbcTemplate,它们封装了常见的数据库操作,使得代码更加简洁且易于管理。 接下来,事务管理是企业级应用中必不可少的部分。Spring提供了声明式事务管理,...

    spring.jdbc-3.0.5.jar

    Spring JDBC的主要目标是简化传统的JDBC编程模型,通过提供模板类和数据访问对象(DAO)支持,来处理数据库操作的繁琐过程,如连接管理、事务处理和异常转换等。这一版本3.0.5的发布,进一步优化了性能和稳定性。 ...

    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. 在应用...

    Spring MVC+SimpleJdbcDaoSupport增删改查小例子

    1. **简介**:SimpleJdbcTemplate和SimpleJdbcDaoSupport是Spring提供的简单JDBC模板类,用于简化数据库操作,避免了手动创建Connection、PreparedStatement等对象。 2. **使用方式**:通过继承SimpleJdbcDaoSupport...

    Spring aop、jdbc和事务tx练习

    - 使用JdbcTemplate进行数据库操作的DAO(Data Access Object)类,包含CRUD操作。 - 包含@Transactional注解的服务层类,定义了业务逻辑,利用Spring自动管理事务。 - 测试类,通过JUnit或其他测试框架验证AOP、...

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

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

Global site tag (gtag.js) - Google Analytics