UserDaoImpl.java
applicationContext.xml
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;
}
}
}