
UsersDao
public interface UsersDao extends BaseDao {
/**
* 根据用户Id查询用户
*/
Users selectUsersById(int userid) throws ApplicationException;
/**
* 修改用户信息
* @param users
* @return
*/
int updateUsersById(Users users) ;
/**
* 根据用户姓名模糊查询
*/
List<Users> selectUsersByLikeName(String username);
}
UsersDaoImpl
public class UsersDaoImpl extends BaseDaoImpl implements UsersDao {
/**
* 根据用户ID查询用户
* @param userid
* @return
*/
@Override
public Users selectUsersById(int userid) throws ApplicationException {
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null ;
Users users = null;
try {
conn = jdbcUtill.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 {
jdbcUtill.closeConnection(rs,ps,conn);
}
return users;
}
/**
* 修改用户信息
* @param
* @return
*/
@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);
}
}
BaseDao
public interface BaseDao {
/**
* 通用的Dml操作方法
*/
int executeUpdate(String sql,Object[] param) ;
/**
* 通用查询方法
*
*/
<T> List<T> select(String sql,Object[] param,Class<T> clazz);
}
BaseDaoImpl
public class BaseDaoImpl implements BaseDao {
/**
* 通用的Dml的操作
*/
@Override
public int executeUpdate(String sql, Object[] param) {
Connection connection = null;
PreparedStatement ps = null;
int row = 0;
try {
connection = jdbcUtill.getConnection();
ps = connection.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();
}finally {
jdbcUtill.closeResource((Statement) ps,connection);
}
return row;
}
/**
* 通用查询方法
* @param sql
* @param param
* @param
* @param <T>
* @return
*/
@Override
public <T> List<T> select(String sql, Object[] param, Class<T> clazz) {
Connection connection = null;
PreparedStatement ps = null;
ResultSet rs = null;
List<T> list = null;
try {
connection = jdbcUtill.getConnection();
ps = connection.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()){
//orm映射
//通过反射实例化对象实体类对象
T bean = clazz.getDeclaredConstructor().newInstance();
//实体类的属性名必须要和表的列名相同
for (int i = 0;i<rm.getColumnCount();i++){
//得到列名
String columnName = rm.getColumnName(i+1);
//获取列的值
Object value = rs.getObject(columnName);
//通过BeanUtill工具类讲解映射到对象中
BeanUtils.setProperty(bean,columnName,value);
}
list.add(bean);
}
}catch (Exception e){
e.printStackTrace();
throw new ApplicationException(e.getMessage());
}finally {
jdbcUtill.closeResource(rs, ps,connection);
}
return list;
}
}
UsersService
public interface UsersService {
Users findUsersById(int userid) throws ApplicationException;
int modifyUsersById(Users users) ;
List<Users> findUsersByLikeName(String username);
}
UsersServiceImpl
public class UsersServiceimpl implements UsersService {
@Override
public Users findUsersById(int userid) throws ApplicationException {
UsersDao ud = new UsersDaoImpl();
return ud.selectUsersById(userid);
}
@Override
public int modifyUsersById(Users users) {
UsersDao ud = new UsersDaoImpl();
return ud.updateUsersById(users);
}
@Override
public List<Users> findUsersByLikeName(String username) {
UsersDao ud = new UsersDaoImpl();
return ud.selectUsersByLikeName(username);
}
}
Test3
public class Test3 {
public static void main(String[] args) {
UsersService us = new UsersServiceimpl();
List<Users> list = us.findUsersByLikeName("a");
for (Users users:list){
System.out.println(users);
}
}
}
运行结果
java.lang.NullPointerException
at cn.itbaizhan.dao.impl.BaseDaoImpl.select(BaseDaoImpl.java:88)
at cn.itbaizhan.dao.impl.UsersDaoImpl.selectUsersByLikeName(UsersDaoImpl.java:71)
at cn.itbaizhan.service.impl.UsersServiceimpl.findUsersByLikeName(UsersServiceimpl.java:29)
at cn.itbaizhan.web.Test3.main(Test3.java:12)
Exception in thread "main" cn.itbaizhan.exception.ApplicationException
at cn.itbaizhan.dao.impl.BaseDaoImpl.select(BaseDaoImpl.java:93)
at cn.itbaizhan.dao.impl.UsersDaoImpl.selectUsersByLikeName(UsersDaoImpl.java:71)
at cn.itbaizhan.service.impl.UsersServiceimpl.findUsersByLikeName(UsersServiceimpl.java:29)
at cn.itbaizhan.web.Test3.main(Test3.java:12)
不知道哪错了,老师看一下