`
TreasureNow
  • 浏览: 20932 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
社区版块
存档分类
最新评论

springTemplate 收藏的

 
阅读更多

本文收藏自 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;
	}
}
 

 

 

本文收藏自 http://my.oschina.net/jolphin/blog/61693

分享到:
评论

相关推荐

    Druid / SpringTemplate / Mysql 的jar包

    Druid / SpringTemplate / Mysql 的jar包(无需积分,免费!!!)Druid / SpringTemplate / Mysql 的jar包(无需积分,免费!!!)Druid / SpringTemplate / Mysql 的jar包(无需积分,免费!!!)

    springtemplate总结

    springtemplate,简单操作,存储过程使用总结及例子

    springTemplate.zip

    spring框架对jdbc的简单封装。提供了一个JDBCTemplate对象简化JDBC的开发 步骤: 1.导入jar包 2.创建JdbcTemplate对象。依赖于数据源DataSource ​ JdbcTemplate template = new jdbcTemplate(ds);

    HBase, OMID, Haeinsa, Spring Template

    本项目关注的是四个关键技术在HBase数据库操作中的应用——HBase本身,以及OMID、Haeinsa和Spring Template。HBase是一个分布式、版本化的NoSQL数据库,构建于Hadoop之上,适合大规模数据存储。而OMID(Open ...

    Java项目03-菜谱管理系统数据库SpringTemplate实现.rar

    Java项目02-菜谱管理系统数据库SpringTemplate实现:本系统是利用控制台+数据库SpringTemplate框架完全实现的,这里提供源代码及数据库sql文件,另外后续还有swing+数据库实现

    Java项目04-天天生鲜订菜管理系统云数据库&SpringTemplate;实现&Linux;演示.rar

    Java项目04-天天生鲜订菜管理系统阿里云mysql数据库&SpringTemplate;实现&Linux;演示:本项目阿里云mysql数据库&SpringTemplate;实现并提供利用Xshell在Linux环境下答辩展示视频,这里提供源码和数据库sql备份文件及...

    (2020.1.16更新) Druid / SpringTemplate / Mysql 的jar包(无需积分,免费!!!)

    【标题】中的"(2020.1.16更新) Druid / SpringTemplate / Mysql 的jar包(无需积分,免费!!!)"表明这是一个关于Java开发的资源包,其中包含了Druid、SpringTemplate和Mysql相关的jar文件,且这个资源在2020年1月...

    spring template连接JDBC样例

    简单的spring连接JDBC样例,在TOMCAT5.5下完成.可以进行修改后直接使用.新建工程,在MyEclipse环境下导入SPRING文件.将MYSQL驱动拷贝至%工程地址%\WebRoot\WEB-INF\lib 文件夹下,然后将src文件夹替换,即可进行测试. ...

    SpringTemplate

    Spring Boot应用程序 一个具有以下功能的Spring Boot应用程序: PostgreSQL与Spring JDBC的连接 使用Spring Security进行身份验证和授权 RESTful API(具有API身份验证) 上传文件 单元和集成测试

    SpringTemplate:用于创建弹簧角度 Web 应用程序的模板

    SpringTemplate 是一个专门为构建基于 Spring Boot 的Web应用程序提供的模板框架,它简化了开发流程,使得开发者可以更加专注于业务逻辑,而不是基础设施的配置。这个框架利用了Spring Boot的强大功能,为Web应用...

    spring-data使用mongodbTemplate对MongoDB进行读写操作

    MongoDBTemplate是Spring Data MongoDB的核心组件,它提供了丰富的API来执行常见的数据库操作。 首先,让我们深入理解`MongoDBTemplate`。它是MongoDB操作的抽象层,封装了大量的CRUD(创建、读取、更新、删除)...

    spring用到的jar包_spring用到的jar包_已分类_

    1. **Spring核心jar包**:这是Spring框架的基础,主要包括`spring-core`、`spring-beans`、`spring-context`和`spring-expression`。`spring-core`提供了基础工具类和资源处理能力;`spring-beans`负责Bean的创建、...

    使用 Spring JDBC Template 对数据库查询(登录)和删除(maven)

    使用 Spring JDBC Template 对数据库查询(登录)和删除(maven),图文教程地址:https://blog.csdn.net/qq_40147863/article/details/86015509

    Spring boot+Spring JDBC Template+mysql+ sharding-j-subdb.zip

    在IT行业中,Spring Boot、Spring JDBC Template、MySQL和Sharding-J-Subdb是常见的技术组件,它们在构建高效、可扩展的分布式数据库系统中扮演着重要角色。让我们深入了解一下这些技术及其相互之间的协同工作。 ...

    spring jdbc Templatetest 访问mysql数据库,批量插入数据

    在Java开发中,Spring JDBC Template是一个非常重要的工具,它提供了对数据库操作的抽象层,简化了JDBC的繁琐工作,使我们能够更加专注于业务逻辑。本主题将详细讲解如何使用Spring JDBC Template访问MySQL数据库并...

    使用spring jdbc template简化jdbc数据库操作实例代码

    Spring JDBC Template是Spring框架的一部分,它为Java数据库连接(JDBC)提供了一种抽象层,目的是简化数据库操作,同时保留了JDBC的灵活性。在实际开发中,它可以帮助我们避免编写大量的样板代码,如手动打开和关闭...

    spring-comparing-template-engines:演示项目,与Spring MVC结合使用,展示了不同的Java模板引擎

    比较Spring MVC的模板引擎 这是一个演示项目,附带了我的Java的演示文稿,该演示文稿显示了与Spring MVC结合使用的几种Java模板引擎之间的差异。 该项目中使用的模板引擎是: JSP + -v1.2 -v2.3.28.RELEASE -v...

    使用 Spring MVC + JDBC Template 实现筛选、检索功能(maven)

    使用 Spring MVC + JDBC Template 实现筛选、检索功能(maven),图文教程地址:https://blog.csdn.net/qq_40147863/article/details/86187642

    spring-android-rest-template-1.0.1.RELEASE.jar.zip

    《Spring Android REST Template详解》 在移动开发领域,Android与后端服务的交互是一个不可或缺的部分。Spring框架,作为Java开发的基石,也扩展到了Android平台,提供了Spring for Android的组件,其中Spring ...

    前期项目 Spring+Spring MVC+JDBC Template 增删改查

    本项目聚焦于Spring、Spring MVC和JDBC Template的集成应用,用于实现数据库的增删改查操作。这是一套常见的企业级应用开发模式,对于理解和掌握Java Web开发至关重要。 首先,Spring框架是一个开源的应用框架,它...

Global site tag (gtag.js) - Google Analytics