@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 数据库访问的支持。包括统一异常体系和Spring的Template+CallBack的解读
Spring DAO模式是Spring框架中的一种设计模式,它主要用于数据库访问层的实现,旨在提供一种统一的、可扩展的、易管理的方式来处理数据访问。在Spring框架中,DAO(Data Access Object)模式是将业务逻辑与数据操作...
Mybatis_SpringDao 是一个关于将Mybatis与Spring框架整合使用的示例项目,它展示了如何在Spring应用中采用原始Dao(Data Access Object)的方式进行数据访问,并且包含了事务管理的实现。下面我们将深入探讨这个主题...
BasicDAO和SpringDAO的区别
spring集成hibernate通用dao,泛型,server都可以调用
标题中的"dao.rar_spring-dao"暗示了这个压缩包可能包含了与Spring DAO层相关的源代码或资源。DAO(Data Access Object)模式是Java开发中常用的一种设计模式,用于封装对数据库的操作,使得业务逻辑层与数据访问层...
本资源“spring_aop.rar_spring-dao”是一个关于Spring AOP(面向切面编程)和Spring DAO(数据访问对象)的实例,旨在帮助开发者理解如何在Spring框架下实现AOP的控制反转,并有效地进行DAO层的操作。 首先,我们...
Spring的DAO支持是其核心模块之一,用于简化数据访问层(DAO)的开发,通过将固定的数据访问逻辑和业务逻辑分离,提高了代码的可维护性和复用性。Spring的DAO设计模式主要体现在模板(Template)和回调(Callback)...
在开发Spring框架相关的Java应用时,可能会遇到"The type org.springframework.dao.support.DaoSupport cannot be resolved"的错误提示。这个错误通常意味着编译环境无法找到`DaoSupport`类,这是Spring DAO模块中的...
Spring以其强大的依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-Oriented Programming,AOP)能力,简化了Java应用的复杂性,特别是对于数据访问层(DAO,Data Access Object)的管理。本文将详细...
本示例“ehcache-spring-dao”是关于如何将EHCache与Spring DAO集成的教程,它利用了Jersey作为RESTful服务的提供者。下面我们将详细探讨这些关键组件及其集成方式。 首先,EHCache是一款广泛使用的开源Java分布式...
在Spring框架中,DAO(Data Access Object)模式是一种常见的设计模式,用于封装对数据库的访问操作,以此来解耦业务逻辑层与数据访问层。这个经典的Spring DAO模式开发案例提供了深入理解Spring如何处理数据访问的...
spring-dao.jar spring-dao.jar
Spring Data Access Object(DAO)框架是Spring生态体系中用于数据库交互的重要部分,它简化了数据访问层的实现,使得开发者可以更专注于业务逻辑,而不是底层数据库操作。本文将深入探讨Spring DAO框架的入门知识,...
使用Spring实现DAO模式 在软件开发领域,设计模式是一种被广泛接受的解决特定问题的方案。其中,DAO(Data Access Object)模式旨在提供一种抽象的数据访问机制,将数据访问的逻辑封装在一个对象中,从而使得应用...
Spring框架是Java开发中不可或缺的一部分,它为应用程序提供了一个全面的基础设施,支持bean管理、依赖注入、面向切面编程(AOP)、数据访问/对象关系映射(DAO)、Web MVC等。Spring3作为其早期的一个版本,虽然...
Spring框架是一个开放源代码的J2EE应用程序框架,由Rod Johnson发起,是...Spring框架主要由七部分组成,分别是 Spring Core、 Spring AOP、 Spring ORM、 Spring DAO、Spring Context、 Spring Web和 Spring Web MVC