📅  最后修改于: 2023-12-03 15:20:06.516000             🧑  作者: Mango
Servlet 是 Java Web 应用开发的重要组件之一,它可以帮助我们处理 HTTP 请求和响应。经常情况下,我们需要从数据库中获取信息显示给用户,或者把用户输入的信息保存到数据库中。那么在 Servlet 中如何访问数据库呢?这里我们介绍几种常用的方式。
在介绍这些方法之前,我们需要先了解 JDBC(Java Database Connectivity)。
JDBC 是一种 Java 数据库连接的标准,它定义了一组 Java 类库和接口以便访问各种关系数据库。JDBC 可以使用纯 Java 的方式进行数据库操作,不依赖于特定的数据库管理系统。
JDBC 包含多个 API,其中一些常用的如下:
使用 JDBC 连接数据库的步骤如下:
接下来我们分别介绍使用 JDBC 访问数据库的三种方法。
原生 JDBC 是最基础的访问数据库的方法。下面是一段使用原生 JDBC 的示例代码:
// 加载 JDBC 驱动程序
Class.forName("com.mysql.jdbc.Driver");
// 建立数据库连接
String url = "jdbc:mysql://localhost:3306/test";
String user = "root";
String password = "123456";
Connection conn = DriverManager.getConnection(url, user, password);
// 创建 PreparedStatement 对象
PreparedStatement ps = conn.prepareStatement("SELECT name, age FROM users WHERE id = ?");
ps.setInt(1, 1);
// 执行查询语句并处理结果集
ResultSet rs = ps.executeQuery();
while (rs.next()) {
String name = rs.getString("name");
int age = rs.getInt("age");
System.out.println("name: " + name + ", age: " + age);
}
// 清理环境
rs.close();
ps.close();
conn.close();
JdbcTemplate 是 Spring 框架中的一个模块,它简化了 JDBC 的开发,使得我们可以更加方便地访问数据库。下面是一段使用 JdbcTemplate 的示例代码:
// 创建 JdbcTemplate 对象
DataSource dataSource = getDataSource();
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
// 执行查询语句并处理结果集
String sql = "SELECT name, age FROM users WHERE id = ?";
Object[] args = { 1 };
List<Map<String, Object>> list = jdbcTemplate.queryForList(sql, args);
for (Map<String, Object> map : list) {
String name = (String) map.get("name");
int age = (int) map.get("age");
System.out.println("name: " + name + ", age: " + age);
}
MyBatis 是一种优秀的持久层框架,它可以把 SQL 语句和 Java 代码分离,从而使得代码更加易读、易维护。下面是一段使用 MyBatis 的示例代码:
<!-- 配置 MyBatis -->
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/test" />
<property name="username" value="root" />
<property name="password" value="123456" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="UserMapper.xml" />
</mappers>
</configuration>
<!-- 创建 UserMapper.xml -->
<mapper namespace="com.example.UserMapper">
<select id="selectUserById" resultType="User">
SELECT id,name,age FROM users WHERE id = #{id}
</select>
</mapper>
// 创建 SqlSession 对象
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession sqlSession = sessionFactory.openSession();
// 获取 UserMapper 接口的代理对象
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
// 执行查询语句并处理结果集
User user = userMapper.selectUserById(1);
System.out.println("name: " + user.getName() + ", age: " + user.getAge());
// 清理环境
sqlSession.close();
通过使用 MyBatis,我们可以把 SQL 语句和 Java 代码分离,从而使得代码更加易读、易维护。
通过使用原生 JDBC、JdbcTemplate 和 MyBatis,我们可以方便地访问和操作数据库。如果你需要在 Servlet 中访问数据库,那么你可以按照以上的方式进行。