dao层接口
package dao;
import java.util.List;
import bean.User;
public interface UserDao {
//查询
public List<User> queryUsers(User user);
}
dao层实现类
package dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import bean.User;
import util.DBUtil;
public class UserDaoImpl implements UserDao {
@Override
public List<User> queryUsers(User user) {
List<User> users=new ArrayList<User>();
Connection conn=DBUtil.getConnection();
PreparedStatement ps=null;
ResultSet rs=null;
String sql="SELECT USER_ID,USER_ACCOUNT,REAL_NAME,SEX,BIRTHDAY FROM T_USER WHERE 1=1";
try {
//这是动态拼接查询条件
if(user.getUsername()!=null && user.getUsername().equals("")) {
sql+= "AND REAL_NAME LIKE ?";
}
ps=conn.prepareStatement(sql);
//有多个条件+多个条件的判断
if(user.getUsername()!=null && user.getUsername().equals("")) {
ps.setString(1, "%"+user.getUsername()+"%");
}
rs=ps.executeQuery();
while(rs.next()) {
String userName=rs.getString("REAL_NAME");
int userId=rs.getInt("USER_ID");
String userAccount=rs.getString("USER_ACCOUNT");
int userSex=rs.getInt("SEX");
String birthDay=rs.getString("BIRTHDAY");
User temp=new User();
temp.setUserId(userId);
temp.setUsername(userName);
temp.setUserAccount(userAccount);
temp.setSex(userSex);
temp.setBirthday(birthDay);
users.add(temp);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
DBUtil.closeConn(conn, ps, rs);
}
return users;
}
}
测试类
package dao;
import java.util.List;
import java.util.Map;
import bean.User;
public class UserDaoTest {
public static void main(String[] args) {
//查询语句
UserDao userdao=new UserDaoImpl();
User user=new User();
List <User> userlist=userdao.queryUsers(user);
for(int i = 0;i < userlist.size();i++){
User u = userlist.get(i);
System.out.println(u.getUserId()+" , "+u.getUserAccount()+" , "+u.getUsername()+" , "+u.getSex()+" , "+u.getBirthday());
}
}
}
查詢出所有用戶
遇到的問題:測試輸出: user_account,sex,birthday的結果為null
找到原因是:
一開始只寫了紅框中的兩條,信息獲取不全。