package dao.impl;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.PreparedStatementCallback;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.TransactionDefinition;
import org.springframework.transaction.TransactionStatus;
import org.springframework.transaction.support.DefaultTransactionDefinition;
import po.UserInfo;
import dao.UserDao;
public class UserDaoImpl implements UserDao {
private JdbcTemplate jdbcTemplate; //根据当前数据源连接创建的实例
private PlatformTransactionManager transactionManager;//根据当前数据源连接创建的实例
public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
public void setTransactionManager(PlatformTransactionManager transactionManager) {
this.transactionManager = transactionManager;
}
public UserInfo queryByNamePwd(String username,String pwd) {
//DefaultTransactionDefinition 是TransactionDefinition的一个实现类
//transactionDefinition是表示事务的一些属性 如隔离级别等
DefaultTransactionDefinition def = new DefaultTransactionDefinition();
// transactionstatus 表示当前事务
//首先获得当前的事务,需要一个事务定义类(规定隔离级别等属性的一个类)
//根据指定的属性创造一个新事务实例.
TransactionStatus status = transactionManager.getTransaction(def); try{
//参数为一个sql语句
//List result = jdbcTemplate.queryForList("select * from userinfo where username="+username+" and pwd="+pwd);
//参数一个sql语句和 一个 object[] 后面盛放传递过去的参数
List result = jdbcTemplate.queryForList("select * from userinfo where username= ? and pwd=?",new String[]{username,pwd});
UserInfo user = null;
user = (UserInfo)result.get(0);
return user;
}catch(DataAccessException ex)
{
transactionManager.rollback(status);
ex.printStackTrace();
return null;
}
}
public boolean addUser(UserInfo user) {
DefaultTransactionDefinition def = new DefaultTransactionDefinition();
TransactionStatus status = transactionManager.getTransaction(def);
try{
String sql = "insert into userinfo(username,pwd) values(?,?)";
String[] args ={user.getUsername() ,user.getPassword()};
jdbcTemplate.update(sql, args);
return true;
}catch(Exception ex)
{
transactionManager.rollback(status);
ex.printStackTrace();
return false;
}
}
public boolean delUser(UserInfo user) {
// TODO Auto-generated method stub
DefaultTransactionDefinition def = new DefaultTransactionDefinition();
TransactionStatus status = transactionManager.getTransaction(def);
try{
String del = "delete from userinfo where id = ?";
Integer[] args={user.getId()};
jdbcTemplate.update(del, args);
return true;
}catch(Exception ex)
{
transactionManager.rollback(status);
ex.printStackTrace();
return false;
}
}
public boolean modifyUser(UserInfo user) {
// TODO Auto-generated method stub
return false;
}
public List<UserInfo> query(String sql) {
// TODO Auto-generated method stub
return null;
}
public UserInfo queryById(final int id) {
// TODO Auto-generated method stub
DefaultTransactionDefinition def = new DefaultTransactionDefinition();
TransactionStatus status = transactionManager.getTransaction(def);
try{
String query = "select * from userinfo where id = ?";
/*
jdbcTemlate对象的execute方法内 把传递进去的sql语句包装成PreparedStatement对象
然后 传递给第二个参数(一个PreparedStatementCallback对象)的doInPreparedStatement()方法
接着返回该方法所返回的值
*/
jdbcTemplate.execute(query,new PreparedStatementCallback(){
public Object doInPreparedStatement(PreparedStatement pstmt)throws SQLException
{
pstmt.setInt(1, id);
ResultSet rst = pstmt.executeQuery();
rst.next();
UserInfo user = new UserInfo();
user.setId(id);
user.setUsername(rst.getString("username"));
user.setPassword(rst.getString("pwd"));
return null;
}
});
}catch(Exception ex)
{
ex.printStackTrace();
}
return null;
}
}
分享到:
相关推荐
Spring_JdbcTemplete代码包Spring_JdbcTemplete代码包
https://blog.csdn.net/TUTsmile/article/details/107655565 文章所对应的工程
Spring 对JDBC 的封装支持模板类操作,使JDBC的代码量精简,提高了开发效率。JdbcTemplate使用详解 JdbcTemplate使用详解
非常好的东西,喜欢的下载下来吧spring 3.0jdbcTemplete+flex4.6+pureMvc+cairngorm2.2.2+blazeds, 最新出炉,可以选择pureMvc和cairngorm2.2.2两种框架
spring 中对大数据的处理,包括clob,blob的数据。比之jdbc下简便很多。
jdbc批量方法。多个sql语句可以一起执行
Spring框架实现jdbctemplete操作mysql数据库,增删查改,包括源码和数据库
此资源包含了三个常用的连接池(C3P0、Druid、JDBCTemplete),供大家下载使用。
毕业论文使用jsp+webwork+spring+jdbctemplete+MySQL开发 而jsp运用了大量的jstl,吸收了freemarker的大部分精华 毕业论文包括以下模块: 登录、注册、用户管理、角色管理、权限管理,用户角色,角色权限,模块...
我们用起来很爽不是吗,之所以这么爽难道不是因为我们少了很多配置吗,之前我们想要使用jdbcTemplete 是不是需要在xml 文件中配置bean 后才能使用。有被xml 一推配置支配的恐惧吗? 为了解救从多处于水深火热的程序...
例如,`JdbcTemplete` 类提供了一种统一的方式来执行数据库操作。 Java 中的 SQLException SQLException 是 Java 中的一种异常类型,它用于捕获数据库操作中的异常。例如,在 `PersonDaoImpl` 类中,如果数据库...