JAVA全系列 教程
3762个小节阅读:7090.3k
目录
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
BaseDao接口
xxxxxxxxxx
/**
* 通用接口
*/
public interface BaseDao {
/**
* 通用的DML操作方法
*/
int executeUpdate(String sql,Object[] param);
/**
* 通用查询方法
* 要求:实体类的属性名必须要与表的列名相同。
*/
<T> List<T> select(String sql,Object[] param,Class<T> clazz);
}
BaseDaoImpl接口实现类
xxxxxxxxxx
/**
* 通用接口实现类
*/
public class BaseDaoImpl implements BaseDao {
/**
* 通用的DML操作方法
*/
@Override
public int executeUpdate(String sql, Object[] param) {
Connection conn = null;
PreparedStatement ps = null;
int row;
try{
conn = JdbcDruidUtil.getConnection();
ps = conn.prepareStatement(sql);
//得到参数的个数
ParameterMetaData pd = ps.getParameterMetaData();
for(int i =0;i<pd.getParameterCount();i++){
ps.setObject(i+1,param[i]);
}
row = ps.executeUpdate();
}catch (Exception e){
e.printStackTrace();
//通过自定义异常解决异常耦合问题
throw new ApplicationException(e.getMessage());
}finally{
JdbcDruidUtil.closeResource(ps,conn);
}
return row;
}
/**
* 通用查询方法
*/
@Override
public <T> List<T> select(String sql, Object[] param, Class<T> clazz) {
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
List<T> list = new ArrayList<>();
try{
conn = JdbcDruidUtil.getConnection();
ps = conn.prepareStatement(sql);
//得到参数的个数
ParameterMetaData pd = ps.getParameterMetaData();
for(int i =0;i<pd.getParameterCount();i++){
ps.setObject(i+1,param[i]);
}
rs = ps.executeQuery();
//获取结果集信息
ResultSetMetaData rm = rs.getMetaData();
while(rs.next()){
//OMR映射
//通过反射实例化实体类对象
T bean = clazz.newInstance();
//实体类的属性名必须要和表的列名相同。
for(int i=0;i<rm.getColumnCount();i++){
//得到列名
String columnName = rm.getColumnName(i+1);
//获取列的值
Object value = rs.getObject(columnName);
//通过BeanUtil工具类讲值映射到对象中
BeanUtils.setProperty(bean,columnName,value);
}
list.add(bean);
}
}catch (Exception e){
e.printStackTrace();
//通过自定义异常解决异常耦合问题
throw new ApplicationException(e.getMessage());
}finally{
JdbcDruidUtil.closeResource(rs,ps,conn);
}
return list;
}
}
UsersDao接口
xxxxxxxxxx
public interface UsersDao extends BaseDao {
/**
* 根据用户ID查询用户
*
*/
Users selectUsersById(int userid);
/**
* 修改用户信息
*/
int updateUsersById(Users users);
/**
* 根据用户姓名模糊查询
*/
List<Users> selectUsersByLikeName(String username);
}
UsersDaoImpl接口实现类
xxxxxxxxxx
public class UsersDaoImpl extends BaseDaoImpl implements UsersDao {
/**
* 根据用户ID查询用户
* @param userid
* @return
*/
@Override
public Users selectUsersById(int userid) {
Connection conn =null;
PreparedStatement ps = null;
ResultSet rs = null;
Users users = null;
try{
conn = JdbcDruidUtil.getConnection();
ps = conn.prepareStatement("select * from users where userid = ?");
ps.setInt(1,userid);
rs = ps.executeQuery();
while(rs.next()){
//手动orm映射
users = new Users();
users.setUserid(rs.getInt("userid"));
users.setUsername(rs.getString("username"));
users.setUserage(rs.getInt("userage"));
}
}catch(Exception e){
e.printStackTrace();
//通过自定义异常解决异常耦合问题
throw new ApplicationException(e.getMessage());
}finally{
JdbcDruidUtil.closeResource(rs,ps,conn);
}
return users;
}
/**
* 修改用户信息
*/
@Override
public int updateUsersById(Users users) {
String sql = "update users set userage = ? where userid = ? ";
Object[] param = new Object[]{users.getUserage(),users.getUserid()};
return this.executeUpdate(sql,param);
}
@Override
public List<Users> selectUsersByLikeName(String username) {
String sql = "select * from users where username like ?";
Object[] param = new Object[]{"%"+username+"%"};
return this.select(sql,param,Users.class);
}
}