本文收藏自 http://my.oschina.net/jolphin/blog/61693
package com.team.dao; import java.util.List; import java.util.Map; import org.springframework.jdbc.core.JdbcTemplate; import com.team.util.PageHelper; public interface Jdbc { // JdbcTemplate public JdbcTemplate getJdbcTemplate(); // 更新 public int update(String sql, Object... args); // 统计 public long stat(String sql, Object... args); // 查找 public <T> T find(String sql, Class<T> clazz, Object... args); // 查询 public <T> List<T> query(String sql, Class<T> clazz, Object... args); // 分页 public <T> PageHelper<T> query(String sql, long count, Class<T> clazz, Object... args); // 命名更新 public <T> int updateNamed(String namedSql, T bean); // 批量命名更新 public <T> int[] updateNamed(String namedSql, List<T> beans); // 命名更新 public int updateNamedMap(String namedSql, Map<String, Object> paramMap); // 批量命名更新 public int[] updateNamedMap(String namedSql, List<Map<String, Object>> paramMaps); }
package com.team.dao; import java.util.ArrayList; import java.util.List; import java.util.Map; import javax.annotation.Resource; import org.springframework.dao.EmptyResultDataAccessException; import org.springframework.jdbc.core.BeanPropertyRowMapper; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.SqlParameter; import org.springframework.jdbc.core.namedparam.BeanPropertySqlParameterSource; import org.springframework.jdbc.core.namedparam.NamedParameterUtils; import org.springframework.jdbc.core.namedparam.ParsedSql; import org.springframework.stereotype.Repository; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import com.team.util.PageHelper; @Repository @Transactional public class JdbcSupport implements Jdbc { @Resource protected JdbcTemplate jdbcTemplate; @Override public JdbcTemplate getJdbcTemplate() { return jdbcTemplate; } @Override public int update(String sql, Object... args) { return jdbcTemplate.update(sql, args); } @Override @Transactional(propagation=Propagation.NOT_SUPPORTED, readOnly=true) public long stat(String sql, Object... args) { return jdbcTemplate.queryForLong(sql, args); } @Override @Transactional(propagation=Propagation.NOT_SUPPORTED, readOnly=true) public <T> T find(String sql, Class<T> clazz, Object... args) { try { return jdbcTemplate.queryForObject(sql, BeanPropertyRowMapper.newInstance(clazz), args); } catch (EmptyResultDataAccessException e) { return null; } } @Override @Transactional(propagation=Propagation.NOT_SUPPORTED, readOnly=true) public <T> List<T> query(String sql, Class<T> clazz, Object... args) { return jdbcTemplate.query(sql, BeanPropertyRowMapper.newInstance(clazz), args); } @Override @Transactional(propagation=Propagation.NOT_SUPPORTED, readOnly=true) public <T> PageHelper<T> query(String sql, long count, Class<T> clazz, Object... args) { int page = 0; int size = 0; if (args != null && args.length >= 2) { page = (Integer)args[args.length - 2]; size = (Integer)args[args.length - 1]; } page = (page < 1) ? 1 : page; size = (size < 1) ? 1 : size; int from = (page - 1) * size; args[args.length - 2] = from; args[args.length - 1] = size; List<T> list = jdbcTemplate.query(sql, BeanPropertyRowMapper.newInstance(clazz), args); return new PageHelper<T>(list, count, page, size); } @Override public <T> int updateNamed(String namedSql, T bean) { String sql = NamedParameterUtils.parseSqlStatementIntoString(namedSql); ParsedSql parsedSql = NamedParameterUtils.parseSqlStatement(namedSql); BeanPropertySqlParameterSource source = new BeanPropertySqlParameterSource(bean); List<SqlParameter> params = NamedParameterUtils.buildSqlParameterList(parsedSql, source); Object[] args = NamedParameterUtils.buildValueArray(parsedSql, source, params); return jdbcTemplate.update(sql, args); } @Override public <T> int[] updateNamed(String namedSql, List<T> beans) { String sql = NamedParameterUtils.parseSqlStatementIntoString(namedSql); ParsedSql parsedSql = NamedParameterUtils.parseSqlStatement(namedSql); List<Object[]> batchArgs = new ArrayList<Object[]>(); for(T bean : beans){ BeanPropertySqlParameterSource source = new BeanPropertySqlParameterSource(bean); List<SqlParameter> params = NamedParameterUtils.buildSqlParameterList(parsedSql, source); Object[] args = NamedParameterUtils.buildValueArray(parsedSql, source, params); batchArgs.add(args); } return jdbcTemplate.batchUpdate(sql, batchArgs); } @Override public int updateNamedMap(String namedSql, Map<String, Object> paramMap) { String sql = NamedParameterUtils.parseSqlStatementIntoString(namedSql); Object[] args = NamedParameterUtils.buildValueArray(namedSql, paramMap); return jdbcTemplate.update(sql, args); } @Override public int[] updateNamedMap(String namedSql, List<Map<String, Object>> paramMaps) { String sql = NamedParameterUtils.parseSqlStatementIntoString(namedSql); List<Object[]> batchArgs = new ArrayList<Object[]>(); for(Map<String, Object> paramMap : paramMaps){ Object[] args = NamedParameterUtils.buildValueArray(namedSql, paramMap); batchArgs.add(args); } return jdbcTemplate.batchUpdate(sql, batchArgs); } }
p
package junit.test.service; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.annotation.Resource; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import com.team.bean.User; import com.team.dao.Jdbc; import com.team.util.PageHelper; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration("classpath:applicationContext.xml") public class JdbcTest { @Resource private Jdbc jdbc; @Test public void update(){ jdbc.update("delete from user where id = ?", 110); } @Test public void updateNamed(){ User user = new User(); user.setUsername("username"); user.setRealname("realname"); user.setPassword("password"); jdbc.updateNamed("insert into user(username, realname, password, memo) "+ "values(:username, :realname, :password, :memo)", user); } @Test @SuppressWarnings("serial") public void batchUpdate(){ List<User> list = new ArrayList<User>(){{ add(new User(1, null, null, "changePassword", null)); add(new User(2, null, null, "changePassword", null)); add(new User(3, null, null, "changePassword", null)); }}; jdbc.updateNamed("update user set password = :password where id = :id", list); } @Test @SuppressWarnings("serial") public void updateMap(){ Map<String, Object> map = new HashMap<String, Object>(){{ put("password", "changePawword"); put("id", 110); }}; jdbc.updateNamedMap("update user set password = :password where id = :id", map); } @Test @SuppressWarnings("serial") public void batchUpdateMap(){ List<Map<String, Object>> list = new ArrayList<Map<String,Object>>(); list.add(new HashMap<String, Object>() {{ put("password", "changePawword"); put("id", 110); }}); list.add(new HashMap<String, Object>() {{ put("password", "changePawword"); put("id", 109); }}); list.add(new HashMap<String, Object>() {{ put("password", "changePawword"); put("id", 108); }}); jdbc.updateNamedMap("update user set password = :password where id = :id", list); } @Test public void query(){ User user = jdbc.find("select * from user where id = ?", User.class, 110); System.out.println(user); List<User> list = jdbc.query("select * from user", User.class); for(User obj : list){ System.out.println(obj); } long count = jdbc.stat("select count(*) from user"); PageHelper<User> result = jdbc.query("select * from user limit ?, ?", count, User.class, 1, 10); for(User oo : result.getList()){ System.out.println(oo); } } }
package com.team.util; import java.util.List; //分页类 public class PageHelper<T> { private List<T> list; //结果集 private long record; //总记录 private long count; //总页数 private int page; //当前页 private int size; //每页记录 public PageHelper(List<T> list, long record, int page, int size) { this.list = list; this.page = page; this.size = size; this.record = record; this.count = (record+size-1)/size; } public List<T> getList() { return list; } public void setList(List<T> list) { this.list = list; } public long getRecord() { return record; } public void setRecord(long record) { this.record = record; } public long getCount() { return count; } public void setCount(long count) { this.count = count; } public int getPage() { return page; } public void setPage(int page) { this.page = page; } public int getSize() { return size; } public void setSize(int size) { this.size = size; } }
相关推荐
Druid / SpringTemplate / Mysql 的jar包(无需积分,免费!!!)Druid / SpringTemplate / Mysql 的jar包(无需积分,免费!!!)Druid / SpringTemplate / Mysql 的jar包(无需积分,免费!!!)
springtemplate,简单操作,存储过程使用总结及例子
spring框架对jdbc的简单封装。提供了一个JDBCTemplate对象简化JDBC的开发 步骤: 1.导入jar包 2.创建JdbcTemplate对象。依赖于数据源DataSource JdbcTemplate template = new jdbcTemplate(ds);
Java项目02-菜谱管理系统数据库SpringTemplate实现:本系统是利用控制台+数据库SpringTemplate框架完全实现的,这里提供源代码及数据库sql文件,另外后续还有swing+数据库实现
简单的小工程,里面涉及利用OMID,Haeinsa,SpringTemplate的API调用进行HBASE数据库操作。 OMID支持对跨行事务 Haeinsa也能支持跨行事务
Java项目04-天天生鲜订菜管理系统阿里云mysql数据库&SpringTemplate;实现&Linux;演示:本项目阿里云mysql数据库&SpringTemplate;实现并提供利用Xshell在Linux环境下答辩展示视频,这里提供源码和数据库sql备份文件及...
简单的spring连接JDBC样例,在TOMCAT5.5下完成.可以进行修改后直接使用.新建工程,在MyEclipse环境下导入SPRING文件.将MYSQL驱动拷贝至%工程地址%\WebRoot\WEB-INF\lib 文件夹下,然后将src文件夹替换,即可进行测试. ...
(2020.1.16更新)Druid / SpringTemplate / Mysql 的jar包(无需积分,免费!!!)
Spring Boot应用程序 一个具有以下功能的Spring Boot应用程序: PostgreSQL与Spring JDBC的连接 使用Spring Security进行身份验证和授权 RESTful API(具有API身份验证) 上传文件 单元和集成测试
使用spring jdbc template简化jdbc数据库操作实例代码,简化操作,包括详细测试例子。
压缩包中spring4.2.4核心jar包,aop需要的jar包,c3p0连接池的jar包,jdbcTemplate的jar包,log4j-1.2.17的jar包,数据库连接的jar包
spring data mongodb的demo程序,参考App.java中的调用方法,mongodb配置文件在resources目录下,整个项目使用maven,适合初学者学习。
使用 Spring JDBC Template 对数据库查询(登录)和删除(maven),图文教程地址:https://blog.csdn.net/qq_40147863/article/details/86015509
Spring boot+Spring JDBC Template+mysql+ sharding-j-subdb
spring jdbc Templatetest 访问mysql数据库,批量插入数据
spring是一站式框架,当然也对数据持久层做了一部分的处理。spring通过JdbcTemplate对数据操作。本案例详细介绍了spring的jdbcTemplate和c3p0的整合。
总结对比了Spring对JDBCTemplate和SpringTemplate的整合使用方法,尤其JdbcDaoSupport和HibernateDaoSupport的使用方法
前期项目 Spring+Spring MVC+JDBC Template 增删改查,包含建库,前端加后台
比较Spring MVC的模板引擎 这是一个演示项目,附带了我的Java的演示文稿,该演示文稿显示了与Spring MVC结合使用的几种Java模板引擎之间的差异。 该项目中使用的模板引擎是: JSP + -v1.2 -v2.3.28.RELEASE -v...
使用 Spring MVC + JDBC Template 实现筛选、检索功能(maven),图文教程地址:https://blog.csdn.net/qq_40147863/article/details/86187642