0
点赞
收藏
分享

微信扫一扫

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;

		}

	}

}

举报

相关推荐

0 条评论