Java与SqlServer查询返回对象

在Java开发中,经常会遇到需要与数据库进行交互的场景,而SqlServer是常用的关系型数据库之一。本文将介绍如何使用Java与SqlServer进行查询,并将查询结果封装成Java对象返回。

连接SqlServer数据库

在进行数据库操作之前,首先需要建立Java与SqlServer数据库的连接。可以使用Java提供的JDBC(Java Database Connectivity)来实现。

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class SqlServerConnection {
    private static final String JDBC_DRIVER = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
    private static final String DB_URL = "jdbc:sqlserver://localhost:1433;databaseName=testdb";
    private static final String USER = "username";
    private static final String PASS = "password";

    public static Connection getConnection() throws SQLException, ClassNotFoundException {
        Class.forName(JDBC_DRIVER);
        return DriverManager.getConnection(DB_URL, USER, PASS);
    }
}

上述代码中,我们使用了com.microsoft.sqlserver.jdbc.SQLServerDriver作为SqlServer的JDBC驱动,通过getConnection方法获取数据库连接。

查询并返回对象

在连接数据库的基础上,我们可以通过执行SQL语句来查询数据,并将查询结果封装成Java对象返回。

假设我们有一个名为User的表,包含idnameage字段。我们希望查询出所有年龄大于等于18的用户,并将结果封装成User对象返回。

首先,我们需要先定义User类:

public class User {
    private int id;
    private String name;
    private int age;

    // 省略构造函数和getter、setter方法
}

然后,我们可以编写查询方法:

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class UserDao {
    public List<User> getUsersAboveAge(int age) throws SQLException, ClassNotFoundException {
        Connection connection = SqlServerConnection.getConnection();
        PreparedStatement statement = connection.prepareStatement("SELECT * FROM User WHERE age >= ?");
        statement.setInt(1, age);

        ResultSet resultSet = statement.executeQuery();
        List<User> users = new ArrayList<>();

        while (resultSet.next()) {
            int id = resultSet.getInt("id");
            String name = resultSet.getString("name");
            int userAge = resultSet.getInt("age");

            User user = new User(id, name, userAge);
            users.add(user);
        }

        resultSet.close();
        statement.close();
        connection.close();

        return users;
    }
}

上述代码中,我们通过PreparedStatement对象执行了一条带有占位符的SQL语句,使用setInt方法设置占位符的值,然后通过executeQuery方法执行查询,并将结果封装成User对象。

使用返回的对象

在得到查询结果后,我们可以对返回的对象进行进一步处理。

public class Main {
    public static void main(String[] args) {
        UserDao userDao = new UserDao();
        try {
            List<User> users = userDao.getUsersAboveAge(18);
            for (User user : users) {
                System.out.println("Name: " + user.getName() + ", Age: " + user.getAge());
            }
        } catch (SQLException | ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
}

上述代码中,我们通过UserDaogetUsersAboveAge方法获取所有年龄大于等于18的用户,并遍历打印出用户的姓名和年龄。

结语

通过上述代码示例,我们可以看到,使用Java与SqlServer进行查询并返回对象并不复杂。首先,我们需要建立Java与SqlServer的连接,然后通过PreparedStatement执行SQL查询语句,将结果封装成Java对象返回,最后我们可以对返回的对象进行处理。

希望本文的介绍能够帮助读者理解如何使用Java与SqlServer进行查询并返回对象。在实际开发中,我们可以根据具体需求扩展和优化代码,以满足更复杂的查询和数据操作。