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

spring的jdbcTemplate 返回值为list

阅读更多






UserDaoImpl.java


package com.qieast.platform.admincp.dao.impl;

import java.sql.Types;
import java.util.List;

import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;

import com.qieast.platform.admincp.dao.IUserDao;
import com.qieast.platform.model.HomeMember;

public class UserDaoImpl implements IUserDao {
	public UserDaoImpl() {
		super();
	}
	
	 
	 
	private JdbcTemplate jdbcTemplate;
	public JdbcTemplate getJdbcTemplate() {
		return jdbcTemplate;
	}


	public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
		this.jdbcTemplate = jdbcTemplate;
	}
	

	@Override
	public boolean saveUser(HomeMember homeMember) {
		
		
		String sql = "insert into uchome_member(username,password,salt) values(?,?,?)";
		
		Object[] args = new Object[] { homeMember.getUsername(),homeMember.getPassword(),homeMember.getSalt() };
		
		int[] argTypes = new int[] { Types.VARCHAR ,Types.VARCHAR,Types.VARCHAR};
		jdbcTemplate.update(sql, args, argTypes);
		return true;
	}

	@Override
	public boolean deleteUser(HomeMember homeMember) {
	
		return false;
	}

	@Override
	public boolean updateUser(HomeMember homeMember) {
	
		return false;
	}

	@Override
	public List<HomeMember> findAllUser() {
		
		List<HomeMember> list = getJdbcTemplate().query("select * from uchome_member", new BeanPropertyRowMapper(HomeMember.class));
		System.out.println(list);
		return list;
		
	}

	@Override
	public HomeMember findUserById(int id) {
	
		return null;
	}



}
UserDaoImplTest.java



package com.qieast.platform.admincp.dao.test;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.qieast.platform.admincp.dao.impl.UserDaoImpl;
import com.qieast.platform.model.HomeMember;

public class UserDaoImplTest {
	private BeanFactory beanFactory = null;
	private UserDaoImpl dao = null;

	@Before
	public void setUp() throws Exception {

		beanFactory = new ClassPathXmlApplicationContext(
				"file:WebContent/WEB-INF/applicationContext.xml");
			dao =  (UserDaoImpl) beanFactory.getBean("userDao");
	}

	@After
	public void tearDown() throws Exception {
		dao = null;
		beanFactory = null;
	}

	@Test
	public void saveUserTest() {

		HomeMember homeMember = new HomeMember();

		homeMember.setUsername(""+Math.random());
		homeMember.setPassword("password");
		homeMember.setSalt("Salt");
		dao.saveUser(homeMember);
	}
	@Test
	public void findAllTest(){
		dao.findAllUser();
	}
}

applicationContext.xml


<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="
    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
    http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd
    http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">

		<bean id="userDao" class="com.qieast.platform.admincp.dao.impl.UserDaoImpl">
		<property name="jdbcTemplate" ref="jdbcTemplate"/>
	</bean>
	<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
		<property name="driverClassName" value="com.mysql.jdbc.Driver" /> 
		<property name="url" value="jdbc:mysql://localhost:3306/test" /> 
		<property name="username" value="root" />
		 <property name="password" value="123" /> 
	</bean> 

	<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
		<property name="dataSource" ref="dataSource" />
	</bean>

	<!-- 定义JPA 开始 -->
	<bean
		class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />

	<bean id="entityManagerFactory"
		class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
		<property name="dataSource" ref="dataSource" />
		<property name="jpaVendorAdapter">
			<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
				<property name="database" value="MYSQL" />
				<property name="showSql" value="true" />
			</bean>
		</property>
		<property name="persistenceProviderClass" value="org.hibernate.ejb.HibernatePersistence" />
		<property name="jpaProperties">
			<props>
				<prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
				<prop key="hibernate.show_sql">true</prop>
				<prop key="hibernate.max_fetch_depth">3</prop>
			</props>
		</property>
	</bean>



	<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
		<property name="entityManagerFactory" ref="entityManagerFactory" />
	</bean>

	<tx:annotation-driven transaction-manager="transactionManager" />
	<!-- 定义JPA 结束 -->
</beans>


























package com.qieast.platform.does.dao.impl;

import java.security.MessageDigest;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Random;
import lombok.Data;

import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.ResultSetExtractor;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.RowMapperResultSetExtractor;

import com.qieast.platform.does.dao.IUserDao;
import com.qieast.platform.model.HomeMember;

@Data
public class UserDaoImpl implements IUserDao {

	private HomeMember homeMember;
	private JdbcTemplate jdbcTemplate;
	private String salt = null;

	/**
	 * 根据id找用户
	 * 
	 * @return
	 */
	public HomeMember findUserById(int id) {
		homeMember = null;
		try {
			homeMember = (HomeMember) jdbcTemplate.queryForObject(
					"SELECT uid FROM uchome_member WHERE uid = ?",
					new Object[] { id },
					com.qieast.platform.model.HomeMember.class);
		} catch (DataAccessException e) {
			e.printStackTrace(); // 以后注释掉
		}
		return homeMember;
	}

	/**
	 * 判断指定name用户是否存在。当能插入时会抛出异常
	 * 
	 * @param name
	 * @return
	 */
	public int findUserByName(String name) {
		int temp = -1;
		try {
			temp = jdbcTemplate.queryForInt(
					"SELECT uid FROM uchome_member WHERE username = ?",
					new Object[] { name });
		} catch (DataAccessException e) {

		}
		return temp;
	}

	@Override
	public void saveUser(HomeMember homeMember) {
		salt = initSalt();
		int temp = -1;
		try {
			temp = jdbcTemplate
					.queryForInt("SELECT max(uid) FROM uchome_member");
			System.out.println(temp);
			jdbcTemplate
					.update("INSERT INTO uchome_member(uid,username,password,salt) VALUES('"
							+ ++temp
							+ "', '"
							+ homeMember.getUsername()
							+ "', '"
							+ md5(homeMember.getPassword())
							+ "','"
							+ salt + "')");
		} catch (DataAccessException e) {

			e.printStackTrace();
		}
	}

	/**
	 * 随机生成salt
	 * 
	 * @return
	 */
	public String initSalt() {
		String salt = "";
		Random random = new Random();
		random.nextInt(27);
		for (int i = 0; i < 18; i++) {
			char temp = (char) (random.nextInt(26) + 97);
			salt = salt + temp;
		}
		return salt;
	}

	/**
	 * 进行md5加密
	 * 
	 * @param text
	 * @return
	 */
	public String md5(String s) {
		char hexDigits[] = salt.toCharArray();
		try {
			byte[] strTemp = s.getBytes();
			MessageDigest mdTemp = MessageDigest.getInstance("MD5");
			mdTemp.update(strTemp);
			byte[] md = mdTemp.digest();
			int j = md.length;
			char str[] = new char[j * 2];
			int k = 0;
			for (int i = 0; i < j; i++) {
				byte byte0 = md[i];
				str[k++] = hexDigits[byte0 >>> 4 & 0xf];
				str[k++] = hexDigits[byte0 & 0xf];
			}
			return new String(str);
		} catch (Exception e) {
			return null;
		}
	}

	/**
	 * 查找所有的学员 grouptype=0是管理员的 1是 学员
	 * 
	 * @param text
	 * @return List<HomeMember>
	 */

	public List<HomeMember> findAllStudent() {
		List<HomeMember> studentList = new ArrayList<HomeMember>();
		try {
			String sql = "SELECT * FROM uchome_member WHERE grouptype = 1";
			/*List<Map<String, Object>> lm = jdbcTemplate.queryForList(sql);
			for (Map<String, Object> map : lm) {
				System.out.println(map.keySet());
				Object o = (Object) map.values();

				// homeMember =(HomeMember)o;
				// studentList.add(homeMember);
			}
*/
			
			studentList = jdbcTemplate.query(sql,new RowMapperResultSetExtractor(new UserRowMapper()));
			System.out.println(studentList);
		} catch (DataAccessException e) {
			e.printStackTrace();
		}
		return studentList;
	}

	class UserRowMapper implements RowMapper

	{

		public Object mapRow(ResultSet rs, int index) throws SQLException

		{

			HomeMember homeMember = new HomeMember();

			homeMember.setUid(rs.getInt("uid"));

			homeMember.setUsername(rs.getString("username"));

			homeMember.setPassword(rs.getString("password"));
			
			homeMember.setEmail(rs.getString("email"));

			homeMember.setRegip(rs.getString("regip"));
			
			homeMember.setRegdate(rs.getInt("regdate"));

			homeMember.setLastloginip(rs.getString("lastloginip"));

			homeMember.setLastlogintime(rs.getInt("lastlogintime"));
			
			homeMember.setListenline(rs.getInt("listenline"));

			homeMember.setUtype(rs.getInt("utype"));

			homeMember.setGrouptype(rs.getInt("grouptype"));
			
			homeMember.setSchoolid(rs.getInt("schoolid"));

			homeMember.setSalt(rs.getString("salt"));

			return homeMember;

		}

	}

}










分享到:
评论
1 楼 zqb666kkk 2013-12-27  
nice 很好的启发

相关推荐

    基于注解的Spring JdbcTemplate

    Spring会自动通过AOP代理处理这些注解方法,所以我们不需要为接口实现类。然而,如果你的项目需要,可以创建一个空实现。 ### 6. 使用Spring JdbcTemplate 在服务层或者控制器中,我们可以依赖注入`UserRepository...

    spring-jdbcTemplate实例工程

    《深入解析Spring JdbcTemplate》 Spring JDBC Template是Spring框架中...这个实例工程为我们提供了一个学习和实践Spring JdbcTemplate的良好平台,通过对其中代码的分析和运行,可以更好地理解和掌握其用法和精髓。

    SpringJdbcTemplate封装工具类

    SpringJdbcTemplate将底层JDBC抛出的异常转换为Spring的`DataAccessException`,这是一个运行时异常,提供了更友好的错误信息和更方便的异常处理方式。 7. **使用示例** 使用SpringJdbcTemplate进行数据库操作...

    Spring JdbcTemplate调用Oracle存储过程实现CRUD

    使用 Spring JdbcTemplate 调用 Oracle 存储过程实现 CRUD 在本文中,我们将讨论如何使用 Spring JdbcTemplate 调用 Oracle 存储过程来实现 CRUD(Create、Read、Update、Delete)操作。我们将首先编写 Oracle 存储...

    Spring JdbcTemplate 常用方法整理

    Spring的JdbcTemplate是Spring框架中用于简化数据库操作的工具类,它是基于JDBC但又抽象出了一层,避免了直接与数据库驱动API交互,从而提高了代码的可读性和可维护性。本文将深入探讨Spring JdbcTemplate的常用方法...

    Spring JdbcTemplate

    **Spring JdbcTemplate**是Spring框架中的一个核心组件,主要用于简化Java数据库访问。它提供了一种模板化的方式来执行SQL语句,使得开发人员可以避免编写大量的重复代码,专注于业务逻辑,而不是底层的数据库交互...

    Spring JDBCTemplate连接池jar包

    3. `spring-jdbc-5.0.0.RELEASE.jar`:包含Spring对JDBC的支持,包括JDBCTemplate和DataSourceTransactionManager,它们是与数据库交互和管理事务的关键。 4. `spring-tx-5.0.0.RELEASE.jar`:提供了事务管理功能,...

    strut2+spring+springjdbctemplate做的简易登录系统

    Struts2、Spring和Spring JDBC Template是Java Web开发中常用的三个框架,它们分别负责不同的职责。Struts2作为MVC(Model-View-Controller)框架,主要处理前端请求和业务逻辑;Spring则是一个全面的后端框架,提供...

    Spring JdbcTemplate查询实例

    综上所述,Spring JdbcTemplate为开发者提供了简洁、安全的数据库访问方式,尤其适用于简单的CRUD操作。通过学习和掌握Spring JdbcTemplate,我们可以更高效地进行数据库交互,减少代码中的错误,提高开发效率。在...

    Spring JdbcTemplate例子

    Spring JdbcTemplate是Spring框架中的一个核心组件,主要用来简化数据库操作。它提供了一种模板方法设计模式,将SQL语句的执行与结果处理进行了抽象,使得开发者可以更加专注于业务逻辑,而无需关心底层数据访问的...

    使用Spring JDBCTemplate进行增删改查curd操作

    在Spring框架中,JdbcTemplate是用于简化数据库操作的重要工具,它是Spring JDBC模块的一部分。通过使用JdbcTemplate,开发者可以避免编写大量的重复代码,如手动管理连接、处理结果集等,从而专注于业务逻辑。本文...

    模仿spring jdbcTemplate的实现

    模仿spring jdbcTemplate的粗略实现,只有很小的参考价值,如果是java初学者可以使用这个封装好的工具进行数据库操作,只需要在db.properties里配置好driver,url等信息

    Spring JdbcTemplate api

    在Spring框架中,可以为每个DAO配置单独的`JdbcTemplate`实例,或者让DAO类继承`JdbcDaoSupport`类,这样可以通过调用`getJdbcTemplate()`方法来获取`JdbcTemplate`实例。书中提到的做法是为每个DAO添加一个`...

    Spring JdbcTemplate.batchUpdate 例子

    在Spring框架中,`JdbcTemplate`是用于简化Java数据库连接(JDBC)操作的一个核心组件。这个类提供了很多方法来执行SQL查询、更新语句,包括批处理操作。本篇文章将详细探讨`batchUpdate`方法及其在实际开发中的应用...

    spring的jdbcTemplate小案例

    在本文中,我们将深入探讨Spring框架中的一个核心组件——JdbcTemplate。JdbcTemplate是Spring提供的一种数据库操作工具,它简化了数据库访问,使开发者能够编写出更健壮、更易于维护的代码,避免了手动处理JDBC连接...

    spring jdbcTemplate 源码

    此外,JdbcTemplate对JDBC的异常进行了封装,统一转换为Spring的DataAccessException,提供了更友好的异常处理机制。这使得错误信息更容易理解和处理,也保持了代码的一致性。 总结来说,Spring JDBCTemplate通过...

    Spring jdbcTemplate pom.xml

    1.Spring4前 spring-jdbc包是独立的,4以后spring-jdbc 就已经没有了

    Spring 学习 JdbcTemplate,模板模式,回调

    在IT行业中,Spring框架是Java开发中的核心工具之一,它为构建企业级应用提供了全面的解决方案。本主题将深入探讨Spring框架中的JdbcTemplate组件,以及模板模式和回调机制的概念。 **1. Spring JdbcTemplate** ...

    spring JdbcTemplate query方法使用示例

    spring JdbcTemplate query方法使用示例,欢迎下载借鉴

Global site tag (gtag.js) - Google Analytics