Spring JdbcTemplate
来源:互联网 发布:个人博客网站源码 编辑:程序博客网 时间:2024/06/07 06:02
– Start
package shangbo.spring.jdbc.example1;import org.springframework.context.ApplicationContext;import org.springframework.context.annotation.AnnotationConfigApplicationContext;public class App { public static void main(String[] args) throws Exception { // 实例化 Spring IoC 容器 ApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class); // 从容器中获得 BusinessService 的实例 BusinessService service = context.getBean(BusinessService.class); // 业务逻辑 service.doWork(); }}
package shangbo.spring.jdbc.example1;import org.apache.commons.dbcp.BasicDataSource;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.jdbc.datasource.DataSourceTransactionManager;import org.springframework.transaction.annotation.EnableTransactionManagement;@Configuration@EnableTransactionManagement // 开启事务管理public class AppConfig { @Bean(destroyMethod="close") public BasicDataSource dataSource() { BasicDataSource dataSource = new BasicDataSource(); dataSource.setDriverClassName("oracle.jdbc.driver.OracleDriver"); dataSource.setUrl("jdbc:oracle:thin:@localhost:1521:xe"); dataSource.setUsername("hr"); dataSource.setPassword("123456"); return dataSource; } @Bean public DataSourceTransactionManager txManager() { DataSourceTransactionManager txManager = new DataSourceTransactionManager(); txManager.setDataSource(dataSource()); return txManager; } @Bean public JobDao jobDao() { JobDao jobDao = new JobDaoImpl(); jobDao.setDataSource(dataSource()); return jobDao; } @Bean public BusinessService businessService() { BusinessService businessService = new BusinessServiceImpl(); businessService.setJobDao(jobDao()); return businessService; }}
package shangbo.spring.jdbc.example1;public interface BusinessService { void doWork(); void setJobDao(JobDao jobDao);}
package shangbo.spring.jdbc.example1;import org.springframework.transaction.annotation.Transactional;public class BusinessServiceImpl implements BusinessService { private JobDao jobDao; @Transactional public void doWork() { // Call Function // System.out.println(jobDao.queryJobTitleById("IT")); // System.out.println(jobDao.queryJob("IT")); // Call Function // System.out.println(jobDao.queryJobTitleById2("IT")); System.out.println(jobDao.queryJob2("IT")); } public void setJobDao(JobDao jobDao) { this.jobDao = jobDao; }}
package shangbo.spring.jdbc.example1;import java.util.List;import org.apache.commons.dbcp.BasicDataSource;public interface JobDao { // // DDL // void createTableJobs(); // // Insert // int insertJob(Job job); int[] insertJob(List<Job> jobs); // // Update // int updateJob(Job job); // // Query // Job queryJobById(String jobId); List<Job> queryAllJob(); // // Delete // int deleteJobById(String jobId); // // Call Stored Procedure // String queryJobTitleById2(String jobId); Job queryJob2(String jobId); // // Call Function // String queryJobTitleById(String jobId); Job queryJob(String jobId); // // Setter // void setDataSource(BasicDataSource dataSource);}
package shangbo.spring.jdbc.example1;import java.sql.CallableStatement;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.SQLException;import java.sql.Types;import java.util.ArrayList;import java.util.List;import java.util.Map;import org.apache.commons.dbcp.BasicDataSource;import org.springframework.jdbc.core.BatchPreparedStatementSetter;import org.springframework.jdbc.core.BeanPropertyRowMapper;import org.springframework.jdbc.core.CallableStatementCreator;import org.springframework.jdbc.core.JdbcTemplate;import org.springframework.jdbc.core.ParameterizedPreparedStatementSetter;import org.springframework.jdbc.core.PreparedStatementCreator;import org.springframework.jdbc.core.SqlOutParameter;import org.springframework.jdbc.core.SqlParameter;import org.springframework.jdbc.support.GeneratedKeyHolder;import org.springframework.jdbc.support.KeyHolder;import org.springframework.stereotype.Repository;import oracle.jdbc.OracleTypes;@Repositorypublic class JobDaoImpl implements JobDao { private JdbcTemplate jdbcTemplate; // // DDL // public void createTableJobs() { String sql = "create table jobs (job_id varchar2(10), job_title varchar2(35), min_salary number(6,0), max_salary number(6,0))"; jdbcTemplate.execute(sql); } // // Insert // public int insertJob(Job job) { String sql = "insert into jobs values (?, ?, ?, ?)"; return jdbcTemplate.update(sql, job.getJobId(), job.getJobTitle(), job.getMinSalary(), job.getMaxSalary()); } public int insertJob2(final Job job) { final String sql = "insert into jobs values (job_seq.nextval, ?, ?, ?)"; KeyHolder keyHolder = new GeneratedKeyHolder(); // 返回生成的 key jdbcTemplate.update(new PreparedStatementCreator() { public PreparedStatement createPreparedStatement(Connection connection) throws SQLException { PreparedStatement ps = connection.prepareStatement(sql, new String[] { "job_id" }); ps.setString(1, job.getJobTitle()); ps.setInt(2, job.getMinSalary()); ps.setInt(3, job.getMaxSalary()); return ps; } }, keyHolder); return jdbcTemplate.update(sql, job.getJobId(), job.getJobTitle(), job.getMinSalary(), job.getMaxSalary()); } public int[] insertJob(final List<Job> jobs) { String sql = "insert into jobs values (?, ?, ?, ?)"; // 批量插入 return jdbcTemplate.batchUpdate(sql, new BatchPreparedStatementSetter() { public void setValues(PreparedStatement ps, int i) throws SQLException { ps.setString(1, jobs.get(i).getJobId()); ps.setString(2, jobs.get(i).getJobTitle()); ps.setInt(3, jobs.get(i).getMinSalary()); ps.setInt(4, jobs.get(i).getMaxSalary()); } public int getBatchSize() { return jobs.size(); } }); } public int[][] insertJob2(final List<Job> jobs) { String sql = "insert into jobs values (?, ?, ?, ?)"; // 批量插入,每批次 100 return jdbcTemplate.batchUpdate(sql, jobs, 100, new ParameterizedPreparedStatementSetter<Job>() { public void setValues(PreparedStatement ps, Job argument) throws SQLException { ps.setString(1, argument.getJobId()); ps.setString(2, argument.getJobTitle()); ps.setInt(3, argument.getMinSalary()); ps.setInt(4, argument.getMaxSalary()); } }); } // // Update // public int updateJob(Job job) { String sql = "update jobs set job_title=?, min_salary=?, max_salary=? where job_id = ?"; return jdbcTemplate.update(sql, job.getJobTitle(), job.getMinSalary(), job.getMaxSalary(), job.getJobId()); } // // Query // public Job queryJobById(String jobId) { String sql = "select * from jobs where job_id = ?"; return jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<Job>(Job.class), jobId); } public List<Job> queryAllJob() { String sql = "select * from jobs"; return jdbcTemplate.query(sql, new BeanPropertyRowMapper<Job>(Job.class)); } // // Delete // public int deleteJobById(String jobId) { String sql = "delete from jobs where job_id = ?)"; return jdbcTemplate.update(sql, jobId); } // // Call Stored Procedure // public String queryJobTitleById2(final String jobId) { List<SqlParameter> declaredParameters = new ArrayList<SqlParameter>(); declaredParameters.add(new SqlParameter("job_id", Types.VARCHAR)); declaredParameters.add(new SqlOutParameter("job_title", Types.VARCHAR)); // Map<String, Object> r = jdbcTemplate.call(new CallableStatementCreator() { public CallableStatement createCallableStatement(Connection con) throws SQLException { String sql = "{call query_job_title_by_id2(?,?)}"; CallableStatement statement = con.prepareCall(sql); statement.setString(1, jobId); statement.registerOutParameter(2, Types.VARCHAR); return statement; } }, declaredParameters); return r.get("job_title").toString(); } public Job queryJob2(final String jobId) { List<SqlParameter> declaredParameters = new ArrayList<SqlParameter>(); declaredParameters.add(new SqlParameter("job_id", Types.VARCHAR)); declaredParameters.add(new SqlOutParameter("job", OracleTypes.CURSOR, new BeanPropertyRowMapper<Job>(Job.class))); // Map<String, Object> r = jdbcTemplate.call(new CallableStatementCreator() { public CallableStatement createCallableStatement(Connection con) throws SQLException { String sql = "{call query_job2(?,?)}"; CallableStatement statement = con.prepareCall(sql); statement.setString(1, jobId); statement.registerOutParameter(2, OracleTypes.CURSOR); return statement; } }, declaredParameters); return ((List<Job>) r.get("job")).get(0); } // // Call Function // public String queryJobTitleById(final String jobId) { List<SqlParameter> declaredParameters = new ArrayList<SqlParameter>(); declaredParameters.add(new SqlOutParameter("job_title", Types.VARCHAR)); // Map<String, Object> r = jdbcTemplate.call(new CallableStatementCreator() { public CallableStatement createCallableStatement(Connection con) throws SQLException { String sql = "{call ? = query_job_title_by_id(?)}"; CallableStatement statement = con.prepareCall(sql); statement.registerOutParameter(1, Types.VARCHAR); statement.setString(2, jobId); return statement; } }, declaredParameters); return r.get("job_title").toString(); } public Job queryJob(final String jobId) { List<SqlParameter> declaredParameters = new ArrayList<SqlParameter>(); declaredParameters.add(new SqlOutParameter("job", OracleTypes.CURSOR, new BeanPropertyRowMapper<Job>(Job.class))); // Map<String, Object> r = jdbcTemplate.call(new CallableStatementCreator() { public CallableStatement createCallableStatement(Connection con) throws SQLException { String sql = "{call ? = query_job(?)}"; CallableStatement statement = con.prepareCall(sql); statement.registerOutParameter(1, OracleTypes.CURSOR); statement.setString(2, jobId); return statement; } }, declaredParameters); return ((List<Job>) r.get("job")).get(0); } // // Setter // public void setDataSource(BasicDataSource dataSource) { jdbcTemplate = new JdbcTemplate(dataSource); }}
package shangbo.spring.jdbc.example1;public class Job { private String jobId; private String jobTitle; private Integer minSalary; private Integer maxSalary; public String getJobId() { return jobId; } public void setJobId(String jobId) { this.jobId = jobId; } public String getJobTitle() { return jobTitle; } public void setJobTitle(String jobTitle) { this.jobTitle = jobTitle; } public Integer getMinSalary() { return minSalary; } public void setMinSalary(Integer minSalary) { this.minSalary = minSalary; } public Integer getMaxSalary() { return maxSalary; } public void setMaxSalary(Integer maxSalary) { this.maxSalary = maxSalary; } public String toString() { return "Job[jobId=" + jobId + ", jobTitle=" + jobTitle + ", minSalary=" + minSalary + ", maxSalary=" + maxSalary + "]"; }}
– 更多参见:Spring Framework 精萃
– 声 明:转载请注明出处
– Last Updated on 2017-06-17
– Written by ShangBo on 2017-06-17
– End
阅读全文
0 0
- spring JdbcTemplate
- spring jdbcTemplate
- Spring JdbcTemplate
- Spring JDBCTemplate
- Spring jdbctemplate
- spring JdbcTemplate
- spring jdbcTemplate
- Spring JDBCTemplate
- spring jdbctemplate
- spring jdbctemplate
- Spring JdbcTemplate
- Spring--JdbcTemplate
- spring jdbcTemplate
- Spring jdbcTemplate
- spring-jdbcTemplate
- Spring JdbcTemplate
- spring jdbcTemplate
- Spring JdbcTemplate
- IOS Storyboard页面切换详解
- 函数参数的int &和unsigned int &没法兼容
- SDUT2449-->走迷宫
- (6/16)JSP过滤器
- robocon2017赛后总结
- Spring JdbcTemplate
- Codeforces 817C Really Big Numbers【思维+二分】
- Hadoop多个文件单词计数
- Visual Stdio 注册表相关路径
- Java重排序对多线程的影响
- caffe中 insert_splits Unknown bottom blob
- 细数linux内核里那些偏门的C语言语法(一)简化三目运算
- QT 打开文件对话框
- 解决“Maven项目中的Dynamic Web Module 3.0 requires Java 1.6 or newer”问题