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;
}
}
}
分享到:
相关推荐
Spring会自动通过AOP代理处理这些注解方法,所以我们不需要为接口实现类。然而,如果你的项目需要,可以创建一个空实现。 ### 6. 使用Spring JdbcTemplate 在服务层或者控制器中,我们可以依赖注入`UserRepository...
《深入解析Spring JdbcTemplate》 Spring JDBC Template是Spring框架中...这个实例工程为我们提供了一个学习和实践Spring JdbcTemplate的良好平台,通过对其中代码的分析和运行,可以更好地理解和掌握其用法和精髓。
SpringJdbcTemplate将底层JDBC抛出的异常转换为Spring的`DataAccessException`,这是一个运行时异常,提供了更友好的错误信息和更方便的异常处理方式。 7. **使用示例** 使用SpringJdbcTemplate进行数据库操作...
使用 Spring JdbcTemplate 调用 Oracle 存储过程实现 CRUD 在本文中,我们将讨论如何使用 Spring JdbcTemplate 调用 Oracle 存储过程来实现 CRUD(Create、Read、Update、Delete)操作。我们将首先编写 Oracle 存储...
Spring的JdbcTemplate是Spring框架中用于简化数据库操作的工具类,它是基于JDBC但又抽象出了一层,避免了直接与数据库驱动API交互,从而提高了代码的可读性和可维护性。本文将深入探讨Spring JdbcTemplate的常用方法...
**Spring JdbcTemplate**是Spring框架中的一个核心组件,主要用于简化Java数据库访问。它提供了一种模板化的方式来执行SQL语句,使得开发人员可以避免编写大量的重复代码,专注于业务逻辑,而不是底层的数据库交互...
3. `spring-jdbc-5.0.0.RELEASE.jar`:包含Spring对JDBC的支持,包括JDBCTemplate和DataSourceTransactionManager,它们是与数据库交互和管理事务的关键。 4. `spring-tx-5.0.0.RELEASE.jar`:提供了事务管理功能,...
Struts2、Spring和Spring JDBC Template是Java Web开发中常用的三个框架,它们分别负责不同的职责。Struts2作为MVC(Model-View-Controller)框架,主要处理前端请求和业务逻辑;Spring则是一个全面的后端框架,提供...
综上所述,Spring JdbcTemplate为开发者提供了简洁、安全的数据库访问方式,尤其适用于简单的CRUD操作。通过学习和掌握Spring JdbcTemplate,我们可以更高效地进行数据库交互,减少代码中的错误,提高开发效率。在...
Spring JdbcTemplate是Spring框架中的一个核心组件,主要用来简化数据库操作。它提供了一种模板方法设计模式,将SQL语句的执行与结果处理进行了抽象,使得开发者可以更加专注于业务逻辑,而无需关心底层数据访问的...
在Spring框架中,JdbcTemplate是用于简化数据库操作的重要工具,它是Spring JDBC模块的一部分。通过使用JdbcTemplate,开发者可以避免编写大量的重复代码,如手动管理连接、处理结果集等,从而专注于业务逻辑。本文...
模仿spring jdbcTemplate的粗略实现,只有很小的参考价值,如果是java初学者可以使用这个封装好的工具进行数据库操作,只需要在db.properties里配置好driver,url等信息
在Spring框架中,可以为每个DAO配置单独的`JdbcTemplate`实例,或者让DAO类继承`JdbcDaoSupport`类,这样可以通过调用`getJdbcTemplate()`方法来获取`JdbcTemplate`实例。书中提到的做法是为每个DAO添加一个`...
在Spring框架中,`JdbcTemplate`是用于简化Java数据库连接(JDBC)操作的一个核心组件。这个类提供了很多方法来执行SQL查询、更新语句,包括批处理操作。本篇文章将详细探讨`batchUpdate`方法及其在实际开发中的应用...
在本文中,我们将深入探讨Spring框架中的一个核心组件——JdbcTemplate。JdbcTemplate是Spring提供的一种数据库操作工具,它简化了数据库访问,使开发者能够编写出更健壮、更易于维护的代码,避免了手动处理JDBC连接...
此外,JdbcTemplate对JDBC的异常进行了封装,统一转换为Spring的DataAccessException,提供了更友好的异常处理机制。这使得错误信息更容易理解和处理,也保持了代码的一致性。 总结来说,Spring JDBCTemplate通过...
1.Spring4前 spring-jdbc包是独立的,4以后spring-jdbc 就已经没有了
在IT行业中,Spring框架是Java开发中的核心工具之一,它为构建企业级应用提供了全面的解决方案。本主题将深入探讨Spring框架中的JdbcTemplate组件,以及模板模式和回调机制的概念。 **1. Spring JdbcTemplate** ...
spring JdbcTemplate query方法使用示例,欢迎下载借鉴