根据用户给定的条件来决定执行什么样的查询
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
/**
* 动态查询
*/
public class DynamicConditionQueryTest {
public List<Users> queryUsers(Users users){
Connection connection = null;
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;
List<Users> list = new ArrayList<>();
try {
connection = JDBCUtils.getConnection();
//拼接查询sql语句
String sql = this.generateSql(users);
System.out.println(sql);
preparedStatement = connection.prepareStatement(sql);
resultSet=preparedStatement.executeQuery();
while(resultSet.next()){
users = new Users();
users.setUsername(resultSet.getString("username"));
users.setUserid(resultSet.getInt("userid"));
users.setUserage(resultSet.getInt("userage"));
list.add(users);
}
}catch (Exception e){
e.printStackTrace();
}finally {
JDBCUtils.clossResource(resultSet,preparedStatement,connection);
}
return list;
}
/**
* 生成动态条件查询sql语句
*/
private String generateSql(Users users){
StringBuffer stringBuffer = new StringBuffer("select * from users where 1=1 ");
if(users.getUserid()>0){
stringBuffer.append(" and userid=").append(users.getUserid());
}
if(users.getUsername()!=null&&users.getUsername().length()>0){
stringBuffer.append(" and username='").append(users.getUsername()); //字符串类型注意处理
}
if(users.getUserage()>0){
stringBuffer.append(" and userage=").append(users.getUserage());
}
return stringBuffer.toString();
}
public static void main(String[] args) {
DynamicConditionQueryTest dynamicConditionQueryTest = new DynamicConditionQueryTest();
Users users = new Users();
users.setUsername("laogeng1'");
List<Users> list = dynamicConditionQueryTest.queryUsers(users);
for(Users users2: list){
System.out.println(users2.getUserid()+" "+users2.getUsername()+" "+users2.getUserage());
}
}
}