根据用户给定的条件来决定执行什么样的查询

    1. import java.sql.Connection;
    2. import java.sql.PreparedStatement;
    3. import java.sql.ResultSet;
    4. import java.util.ArrayList;
    5. import java.util.List;
    6. /**
    7. * 动态查询
    8. */
    9. public class DynamicConditionQueryTest {
    10. public List<Users> queryUsers(Users users){
    11. Connection connection = null;
    12. PreparedStatement preparedStatement = null;
    13. ResultSet resultSet = null;
    14. List<Users> list = new ArrayList<>();
    15. try {
    16. connection = JDBCUtils.getConnection();
    17. //拼接查询sql语句
    18. String sql = this.generateSql(users);
    19. System.out.println(sql);
    20. preparedStatement = connection.prepareStatement(sql);
    21. resultSet=preparedStatement.executeQuery();
    22. while(resultSet.next()){
    23. users = new Users();
    24. users.setUsername(resultSet.getString("username"));
    25. users.setUserid(resultSet.getInt("userid"));
    26. users.setUserage(resultSet.getInt("userage"));
    27. list.add(users);
    28. }
    29. }catch (Exception e){
    30. e.printStackTrace();
    31. }finally {
    32. JDBCUtils.clossResource(resultSet,preparedStatement,connection);
    33. }
    34. return list;
    35. }
    36. /**
    37. * 生成动态条件查询sql语句
    38. */
    39. private String generateSql(Users users){
    40. StringBuffer stringBuffer = new StringBuffer("select * from users where 1=1 ");
    41. if(users.getUserid()>0){
    42. stringBuffer.append(" and userid=").append(users.getUserid());
    43. }
    44. if(users.getUsername()!=null&&users.getUsername().length()>0){
    45. stringBuffer.append(" and username='").append(users.getUsername()); //字符串类型注意处理
    46. }
    47. if(users.getUserage()>0){
    48. stringBuffer.append(" and userage=").append(users.getUserage());
    49. }
    50. return stringBuffer.toString();
    51. }
    52. public static void main(String[] args) {
    53. DynamicConditionQueryTest dynamicConditionQueryTest = new DynamicConditionQueryTest();
    54. Users users = new Users();
    55. users.setUsername("laogeng1'");
    56. List<Users> list = dynamicConditionQueryTest.queryUsers(users);
    57. for(Users users2: list){
    58. System.out.println(users2.getUserid()+" "+users2.getUsername()+" "+users2.getUserage());
    59. }
    60. }
    61. }

    image.png