package cn.sdut.dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.List;
import org.apache.commons.dbutils.DbUtils;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanListHandler;
public class DBUtilsBaseDao {
//得到数据库连接
public Connection getConn()
{
Connection conn=null;
DbUtils.loadDriver("com.mysql.jdbc.Driver");
try {
conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/shopping?useUnicode=true&characterEncoding=utf-8","root","usbw");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return conn;
}
//增、删、改数据库的方法
public int update(String sql,Object... param)
{
int result=0;
Connection conn=getConn(); //得到连接
QueryRunner runner=new QueryRunner(); //得到运行对象
try {
result=runner.update(conn, sql, param); //进行数据库操作
} catch (SQLException e) {
e.printStackTrace();
}
finally
{
DbUtils.closeQuietly(conn); //关闭数据库连接
}
return result;
}
//数据库查询
public List query(String sql,Class clazz,Object... param)
{
List list=null;
Connection conn=getConn(); //得到连接
QueryRunner runner=new QueryRunner(); //得到运行对象
try {
list=runner.query(conn,sql,new BeanListHandler(clazz),param); //进行数据库操作
} catch (SQLException e) {
e.printStackTrace();
}
finally
{
DbUtils.closeQuietly(conn); //关闭数据库连接
}
return list;
}
//批量操作数据库的方法
public boolean bactchUpdate(String sql,Object[][] param)
{
int[] result=new int[param.length];
int r=1;
Connection conn=getConn(); //得到连接
QueryRunner runner=new QueryRunner(); //得到运行对象
try {
result=runner.batch(conn,sql,param);// 批量进行数据库操作
} catch (SQLException e) {
e.printStackTrace();
}
finally
{
DbUtils.closeQuietly(conn); //关闭数据库连接
}
for(int i=0;i<result.length;i++)
{
r*=result[i];
}
return r>0?true:false;
}
}
package cn.sdut.dao;
import java.util.List;
import cn.sdut.po.User;
public class UserDao extends DBUtilsBaseDao {
// 增加用户
public int addUser(User user) {
int result = 0;
String sql = "insert into users(name,password,sex,birthday,hobby,telephone,address,type) values(?,?,?,?,?,?,?,?)";
Object[] params = { user.getName(), user.getPassword(), user.getSex(),
user.getBirthday(), user.getHobby(), user.getTelephone(),
user.getAddress(), user.getType() };
return update(sql, params);
}
// 删除用户
public int delUser(int id) {
int result = 0;
String sql = "delete from users where id=?";
return update(sql, id);
}
// 修改用户
public int updateUser(User user) {
int result = 0;
String sql = "update users set name=?,sex=?,birthday=?,hobby=?,telephone=?,address=? where id=?";
Object[] params = { user.getName(), user.getSex(), user.getBirthday(),
user.getHobby(), user.getTelephone(), user.getAddress(),user.getId() };
return update(sql, params);
}
//查询符合条件的用户(从姓名、性别、等非空字段模糊查询数据)
public List<User> queryUserByCondition(String condition)
{
String sql=null;
if(condition!=null&&!"".equals(condition))
{
sql="select * from users where concat(name,sex) like '%"+condition+"%'";
}
else
{
sql="select * from users";
}
return query(sql, User.class, null);
}
//根据id查询用户
public User queryUserById(int id)
{
User user=null;
String sql="select * from users where id=?";
List<User> list=query(sql, User.class, id);
if(list!=null&&list.size()>0)
{
user=list.get(0);
}
return user;
}
//批量修改密码
public boolean batchPwdReset(String newPwd,Object[] ids)
{
String sql="update users set password=? where id=?";
Object[][] param=new Object[ids.length][2];
for(int i=0;i<ids.length;i++)
{
param[i][0]=newPwd;
param[i][1]=ids[i];
}
return bactchUpdate(sql, param);
}
//批量删除用户
public boolean batchDelUser(Object[] ids)
{
String sql="delete from users where id=?";
Object[][] param=new Object[ids.length][1];
for(int i=0;i<ids.length;i++)
{
param[i][0]=ids[i];
}
return bactchUpdate(sql, param);
}
//用户登录
public User login(String name,String password)
{
User user=null;
String sql="select * from users where name=? and password=?";
Object[] param=new Object[]{name,password};
List<User> users=query(sql, User.class, param);
if(users!=null&&users.size()>0)
{
user=users.get(0);
}
return user;
}
public static void main(String[] args) {
UserDao dao=new UserDao();
dao.batchDelUser(new Object[]{4,5,6,7});
List<User> users=dao.queryUserByCondition(null);
System.out.println(users);
}
}