Spring-JDBC.doc

上传人:sk****8 文档编号:3520632 上传时间:2019-06-01 格式:DOC 页数:8 大小:73KB
下载 相关 举报
Spring-JDBC.doc_第1页
第1页 / 共8页
Spring-JDBC.doc_第2页
第2页 / 共8页
Spring-JDBC.doc_第3页
第3页 / 共8页
Spring-JDBC.doc_第4页
第4页 / 共8页
Spring-JDBC.doc_第5页
第5页 / 共8页
点击查看更多>>
资源描述

1、Spring JDBCMade by Michael.S数据源 -21.配置数据源 -22.配置 JbcdTemplate-23.配置 Data Access Object 类 -3写数据 -31.添加一条记录 -32.添加多条记录 -4方法 1: -4方法 2: -4读数据 -51.获得一条记录 -52.获得多条记录 -5返回单个值 -6执行存储过程 -6Comment Mike1: 需要引入common.dbcp.jar全文以学生管理为例子进行解释在 Spring应用 JDBC包含 StudentDao,StudentDapImpl,StudentService,Student主要利用 J

2、dbcTemplate来进行数据库的增、删、查、改操作数据源1.配置数据源数据源需要在 beans.xml文件中进行配置com.mysql.jdbc.Driverjdbc:mysql:/localhost:3306/springroot8901272.配置 JbcdTemplate3.配置 Data Access Object 类DAO 引用 JdbcTemplate 引用 DataSourcejdbcTemplate: execute 方法执行 DDL statementupdate 方法执行 insert, delete, updatequery 方法执行 select * from ta

3、blequeryForXXX 方法执行 select count(*) from table写数据1.添加一条记录public int add(Student student)/ PreparedStatementString sql = “insert into student (id,name) values(?, ?)“;/ParametersObject params = new Object student.getId(), student.getName() ;/ Parameters type int type = new int Types.VARCHAR, Types.VAR

4、CHAR;/ Update return jdbcTemplate.update(sql, params, type); 也可以不用 types(只是为了更加准确),而直接 jdbcTemplate.update(sql, params);2.添加多条记录方法 1:/ List has to be final, according to getBatchSize() s return valueComment Mike2: Org.springframework.jdbc.corepublic int batchAdd(final List students)String sql = “ins

5、ert into student(id, name) values(?,?)“;/ Inner classBatchPreparedStatementSetter setter = null;setter = new BatchPreparedStatementSetter()Overridepublic int getBatchSize()return students.size();Overridepublic void setValues(PreparedStatement ps, int index)throws SQLExceptionStudent stu = students.g

6、et(index);ps.setString(1, stu.getId();ps.setString(2, stu.getName();return jdbcTemplate.batchUpdate(sql, setter);需要实现 BatchPreparedStatementSetter接口,这里通过匿名内部类来实现。内部类中实现了两个方法 getBatchSize( ), setValues( )注意参数 final List students,必须设置为 final,是由于 getSize()方法的返回值方法 2:/ List has to be final, according to

7、 getBatchSize() s return valuepublic int batchAdd(final List students)String sql = “insert into student(id, name) values(?,?)“;/ Use public int batchUpdate(java.lang.String sql, java.util.List batchArgs) to realize BATCH ADD/List batchArgs = new ArrayList();batchArgs.add(new Object“966“, “spl“); bat

8、chArgs.add(new Object“977“, “michael“); batchArgs.add(new Object“988“, “mad“); Comment Mike3: Org.springframework.jdbc.corereturn jdbcTemplate.batchUpdate(sql, batchArgs);读数据1.获得一条记录public Student findById(String id)String sql = “select id,name from student where id=?“;Object params = new Objectid;/

9、 Student has to be final, according to processRow(ResultSet rs) methodfinal Student student = new Student();jdbcTemplate.query(sql, params, new RowCallbackHandler()Overridepublic void processRow(ResultSet rs) throws SQLExceptionstudent.setId(rs.getString(“id“);student.setName(rs.getString(“name“););

10、return student;JdbcTemplate.query( )方法需要一个 RowCallBackHandler接口作为参数,这里以内部类来实现,实现 processRow ( ) 方法,在这个方法中对 ResultSet中每一条结果进行处理。注意局部变量 final Student students,必须设置为 final,是由于 processRow(ResultSet rs)方法。2.获得多条记录public List getAll()String sql = “select id,name from student “;return jdbcTemplate.query(sq

11、l, new RowMapperResultSetExtractor(new StudentRowMapper();这里 jdbcTemplate.query( )方法需要 ResultReader接口,所以这里使用RowMapperResultSetExtractor,其又需要 RowMapper接口,这里我们自定义了StudentRowMapper(需要继承 RowMapper接口)。class StudentRowMapper implements RowMapperOverridepublic Student mapRow(ResultSet rs, int index) throws

12、 SQLExceptionStudent stu = new Student();stu.setId(rs.getString(“id“);stu.setName(rs.getString(“name“);return stu;RowMapper 接口负责将 ResultSet 中的每一行映射成一个 Object.这样,我们就有了一个可复用的类,用来取得 ResultSet 中的每行数据来创建一个 Student对象。这个可以被用于所有的 Student 查询中。例如查询一个 Student 对象:可以再 DAO 中,使用 studentDao.getAll().get(0)来获得单个查询返回

13、单个值如果涉及到 select cout(*) from table,需要如下实现:public int count()String sql = “select count(id) from student“;return jdbcTemplate.queryForInt(sql);执行存储过程public void SP_Test()CallableStatementCallback cb = new CallableStatementCallback()Overridepublic Object doInCallableStatement(CallableStatement cs)throws SQLException, DataAccessExceptioncs.execute();return null;jdbcTemplate.execute(“call sp_update()“, cb);需要实现 CallableStatementCallback 接口,在内部类中实现 doInCallableStatement( )方法来进行存储过程的调用。(具体的上网查)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 实用文档资料库 > 策划方案

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。