`
itace
  • 浏览: 178431 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Spring DAO

 
阅读更多
@Repository("mysqlDao")
public class MysqlDao {

	@Autowired
	private JdbcTemplate jdbcTemplate;
	
	protected int add(String sql,Object[]params){
		System.out.println("[sql]"+sql);
		return jdbcTemplate.update(sql, params);
	}
	protected int update(String sql,Object[]params){
		System.out.println("[sql]"+sql);
		return jdbcTemplate.update(sql, params);
	}
	/**
	 * 插入
	 * @param table
	 * @param map
	 * @return 返回更新条数
	 */
	public int add(String table,Map<String, Object> map){
		if (map==null) {
			return 0;
		}
		List<String> fields_list = new ArrayList<String>();
		List<Object> values_list = new ArrayList<Object>();
		
		Set<String> fields = map.keySet();
		for (String field : fields) {
			Object value = map.get(field);
			if (value!=null) {
				fields_list.add(field);
				values_list.add(value);
			}
		}
		if (fields_list.size()>0) {
			String sql_fields = StringUtil.listToString(fields_list, ",");
			String sql_questions = StringUtil.loop("?", fields_list.size(), ",");
			Object[] sql_values = values_list.toArray();
			
			StringBuffer sql_sb = new StringBuffer();
			sql_sb.append("insert into "+table+"(");
			sql_sb.append(sql_fields);
			sql_sb.append(") values (");
			sql_sb.append(sql_questions);
			sql_sb.append(")");
			String sql = sql_sb.toString();
			System.out.println("[sql]"+sql);
			return jdbcTemplate.update(sql, sql_values);
			
		}else {
			return 0;
		}
	}
	/**
	 * 插入
	 * @param table
	 * @param map
	 * @return 返回id
	 */
	public long addForID(String table,Map<String, Object> map){
		if (map==null) {
			return 0;
		}
		List<String> fields_list = new ArrayList<String>();
		List<Object> values_list = new ArrayList<Object>();
		
		Set<String> fields = map.keySet();
		for (String field : fields) {
			Object value = map.get(field);
			if (value!=null) {
				fields_list.add(field);
				values_list.add(value);
			}
		}
		if (fields_list.size()>0) {
			String sql_fields = StringUtil.listToString(fields_list, ",");
			String sql_questions = StringUtil.loop("?", fields_list.size(), ",");
			Object[] sql_values = values_list.toArray();
			
			StringBuffer sql_sb = new StringBuffer();
			sql_sb.append("insert into "+table+"(");
			sql_sb.append(sql_fields);
			sql_sb.append(") values (");
			sql_sb.append(sql_questions);
			sql_sb.append(")");
			String sql = sql_sb.toString();
			System.out.println("[sql]"+sql);
			//----------
			KeyHolder keyHolder = new GeneratedKeyHolder();  
			final String _sql = sql;
			final Object[] params_sql =  sql_values;
			int updatecount = jdbcTemplate.update(new PreparedStatementCreator() {  
			    public PreparedStatement createPreparedStatement(Connection connection) throws SQLException {  
			        PreparedStatement ps = connection.prepareStatement(_sql, Statement.RETURN_GENERATED_KEYS);
			        for (int i = 0; i < params_sql.length; i++) {
						ps.setObject(i+1, params_sql[i]);
					}
			        return ps;
			    }
			}, keyHolder);
			if (updatecount>0) {
				long id = keyHolder.getKey().longValue();
				return id;
			}else {
				return 0;
			}
//			return jdbcTemplate.update(sql, sql_values);
			
		}else {
			return 0;
		}
	}
	/**
	 * 修改
	 * @param table
	 * @param map
	 * @param id
	 */
	public int update(String table,Map<String, Object> map,Object id){
		if (map==null) {
			return 0;
		}
		List<String> fields_list = new ArrayList<String>();
		List<Object> values_list = new ArrayList<Object>();
		
		Set<String> fields = map.keySet();
		for (String field : fields) {
			Object value = map.get(field);
			if (value!=null) {
				String field2 = field+" = ?"; 
				fields_list.add(field2);
				values_list.add(value);
			}
		}
		if (fields_list.size()>0) {
			String sql_fields = StringUtil.listToString(fields_list, ",");
			
			StringBuffer sql_sb = new StringBuffer();
			sql_sb.append("update "+table+" set ");
			sql_sb.append(sql_fields);
			sql_sb.append(" where id = ? ");
			String sql = sql_sb.toString();
			
			values_list.add(id);
			Object[] sql_values = values_list.toArray();
			System.out.println("[sql]"+sql);
			return jdbcTemplate.update(sql, sql_values);
			
		}else {
			return 0;
		}
	}
	protected int delete(String sql,Object[]params){
		System.out.println("[sql]"+sql);
		return jdbcTemplate.update(sql, params);
	}
	protected int delete(String table,int id){
		String sql = "delete from "+table+ " where id = ? ";
		System.out.println("[sql]"+sql);
		return jdbcTemplate.update(sql, id);
	}
	protected int[] batchUpdate(String sql,List<Object[]> params){
		final List<Object[]> args = params;
		
		BatchPreparedStatementSetter batchParams = new BatchPreparedStatementSetter() {
			
			public void setValues(PreparedStatement ps, int i) throws SQLException {
				Object[]param=args.get(i);
				for (int j = 0; j < param.length; j++) {
					ps.setObject(j+1, param[j]);
				}
			}
			public int getBatchSize() {
				
				return args.size();
			}
		};
		System.out.println("[sql]"+sql);
		return jdbcTemplate.batchUpdate(sql, batchParams);
		
	}
	protected int[] batchDelete(String sql,List<Object[]> params){
		final List<Object[]> args = params;
		
		BatchPreparedStatementSetter batchParams = new BatchPreparedStatementSetter() {
			
			public void setValues(PreparedStatement ps, int i) throws SQLException {
				Object[]param=args.get(i);
				for (int j = 0; j < param.length; j++) {
					ps.setObject(j+1, param[j]);
				}
			}
			public int getBatchSize() {
				
				return args.size();
			}
		};
		System.out.println("[sql]"+sql);
		return jdbcTemplate.batchUpdate(sql, batchParams);
		
	}
	protected int queryCount(String sql,Object[]params){
		System.out.println("[sql]"+sql);
		return jdbcTemplate.queryForInt(sql,params);
	}
	protected List<Map<String, Object>> queryBySql(String sql,Object[]params){
		System.out.println("[sql]"+sql);
		return jdbcTemplate.queryForList(sql, params);
	}
	protected Map<String, Object> queryOneBySql(String sql,Object[]params){
		System.out.println("[sql]"+sql);
		return jdbcTemplate.queryForMap(sql, params);
	}
	protected int getLastId(){
		String sql_lastId = "select LAST_INSERT_ID()";
		return jdbcTemplate.queryForInt(sql_lastId);
	}

}

 

分享到:
评论

相关推荐

    Spring DAO入门实例

    Spring DAO 是 Spring 框架中的数据访问对象(Data Access Object)模块,它提供了一种解耦应用程序代码和数据访问技术的方式。在这个入门实例中,我们将了解如何使用 Spring 操作数据库,特别是通过 JDBC 进行...

    Spring Dao层设计

    Spring 数据库访问的支持。包括统一异常体系和Spring的Template+CallBack的解读

    SpringDao模式实例

    Spring DAO模式是Spring框架中的一种设计模式,它主要用于数据库访问层的实现,旨在提供一种统一的、可扩展的、易管理的方式来处理数据访问。在Spring框架中,DAO(Data Access Object)模式是将业务逻辑与数据操作...

    Mybatis_SpringDao

    Mybatis_SpringDao 是一个关于将Mybatis与Spring框架整合使用的示例项目,它展示了如何在Spring应用中采用原始Dao(Data Access Object)的方式进行数据访问,并且包含了事务管理的实现。下面我们将深入探讨这个主题...

    BasicDAO和SpringDAO的区别

    BasicDAO和SpringDAO的区别

    hibernate spring通用dao

    spring集成hibernate通用dao,泛型,server都可以调用

    dao.rar_spring-dao

    标题中的"dao.rar_spring-dao"暗示了这个压缩包可能包含了与Spring DAO层相关的源代码或资源。DAO(Data Access Object)模式是Java开发中常用的一种设计模式,用于封装对数据库的操作,使得业务逻辑层与数据访问层...

    spring_aop.rar_spring-dao

    本资源“spring_aop.rar_spring-dao”是一个关于Spring AOP(面向切面编程)和Spring DAO(数据访问对象)的实例,旨在帮助开发者理解如何在Spring框架下实现AOP的控制反转,并有效地进行DAO层的操作。 首先,我们...

    Spring的DAO

    Spring的DAO支持是其核心模块之一,用于简化数据访问层(DAO)的开发,通过将固定的数据访问逻辑和业务逻辑分离,提高了代码的可维护性和复用性。Spring的DAO设计模式主要体现在模板(Template)和回调(Callback)...

    解决The type org.springframework.dao.support.DaoSupport cannot be resolved.bao报错

    在开发Spring框架相关的Java应用时,可能会遇到"The type org.springframework.dao.support.DaoSupport cannot be resolved"的错误提示。这个错误通常意味着编译环境无法找到`DaoSupport`类,这是Spring DAO模块中的...

    Spring支持DAO需要的jar包

    Spring以其强大的依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-Oriented Programming,AOP)能力,简化了Java应用的复杂性,特别是对于数据访问层(DAO,Data Access Object)的管理。本文将详细...

    ehcache-spring-dao:spring dao ehcache 集成示例

    本示例“ehcache-spring-dao”是关于如何将EHCache与Spring DAO集成的教程,它利用了Jersey作为RESTful服务的提供者。下面我们将详细探讨这些关键组件及其集成方式。 首先,EHCache是一款广泛使用的开源Java分布式...

    Spring对DAO的支持.doc

    本文将从三个方面探讨Spring对DAO的支持:传统模式的DAO,Spring对JDBC的DAO支持,以及Spring对Hibernate的DAO支持。 ### 1. 传统DAO模式 在传统的DAO模式中,通常需要实现以下几个组件: - **DAO工厂**:创建DAO...

    经典spring关于关于dao模式的开发案例

    在Spring框架中,DAO(Data Access Object)模式是一种常见的设计模式,用于封装对数据库的访问操作,以此来解耦业务逻辑层与数据访问层。这个经典的Spring DAO模式开发案例提供了深入理解Spring如何处理数据访问的...

    spring-dao.jar

    spring-dao.jar spring-dao.jar

    Spring数据访问对象框架入门

    Spring Data Access Object(DAO)框架是Spring生态体系中用于数据库交互的重要部分,它简化了数据访问层的实现,使得开发者可以更专注于业务逻辑,而不是底层数据库操作。本文将深入探讨Spring DAO框架的入门知识,...

    使用Spring实现DAO模式

    使用Spring实现DAO模式 在软件开发领域,设计模式是一种被广泛接受的解决特定问题的方案。其中,DAO(Data Access Object)模式旨在提供一种抽象的数据访问机制,将数据访问的逻辑封装在一个对象中,从而使得应用...

    spring3使用示例

    Spring框架是Java开发中不可或缺的一部分,它为应用程序提供了一个全面的基础设施,支持bean管理、依赖注入、面向切面编程(AOP)、数据访问/对象关系映射(DAO)、Web MVC等。Spring3作为其早期的一个版本,虽然...

    spring-5.2.6.7z

    Spring框架是一个开放源代码的J2EE应用程序框架,由Rod Johnson发起,是...Spring框架主要由七部分组成,分别是 Spring Core、 Spring AOP、 Spring ORM、 Spring DAO、Spring Context、 Spring Web和 Spring Web MVC

Global site tag (gtag.js) - Google Analytics