Java数据库存取技术
前言
Java数据库存取技术是Java语言中非常重要的一部分,它涵盖了从连接数据库、执行SQL语句到封装数据对象等多方面的知识点。本篇文章将会详细介绍Java数据库存取技术的完整攻略。
连接数据库
在使用Java进行数据库存取之前,我们需要先完成与数据库的连接。在Java中,我们通过JDBC(Java Database Connectivity)来连接数据库。
JDBC连接流程
JDBC连接数据库的具体流程如下所示:
- 加载驱动:在使用JDBC连接数据库之前,需要先加载数据库驱动程序;
- 建立连接:使用DriverManager类的getConnection方法建立与数据库的连接;
- 创建Statement:使用Connection对象创建Statement对象;
- 执行SQL语句:使用Statement对象执行SQL语句;
- 处理结果集:使用ResultSet对象处理查询结果。
加载驱动
加载数据库驱动程序的代码如下所示:
Class.forName("com.mysql.jdbc.Driver");
建立连接
使用DriverManager类的getConnection方法可以建立与数据库的连接。getConnection方法接收3个参数:
- 数据库连接URL;
- 数据库用户名;
- 数据库用户密码。
代码如下所示:
String url = "jdbc:mysql://localhost:3306/test";
String username = "root";
String password = "123456";
Connection conn = DriverManager.getConnection(url, username, password);
创建Statement
使用Connection对象创建Statement对象的代码如下所示:
Statement stmt = conn.createStatement();
执行SQL语句
使用Statement对象执行SQL语句的代码如下所示:
String sql = "SELECT * FROM user";
ResultSet rs = stmt.executeQuery(sql);
处理结果集
使用ResultSet对象处理查询结果的代码如下所示:
while(rs.next()){
String name = rs.getString("name");
int age = rs.getInt("age");
System.out.println("name: " + name + ", age: " + age);
}
数据库连接池
在实际开发中,为了提高数据库的性能和减少连接时间,我们通常会采用数据库连接池来管理数据库连接。在Java中,我们可以使用c3p0数据库连接池和Druid数据库连接池。
c3p0数据库连接池
c3p0是一种流行的JDBC连接池库。以下是使用c3p0连接池的主要步骤:
- 引入c3p0库;
- 配置c3p0连接池;
- 从连接池中获取连接对象。
以下是一个使用c3p0连接池的示例:
ComboPooledDataSource dataSource = new ComboPooledDataSource();
dataSource.setDriverClass("com.mysql.jdbc.Driver");
dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/test");
dataSource.setUser("root");
dataSource.setPassword("123456");
Connection conn = dataSource.getConnection();
Druid数据库连接池
Druid是阿里巴巴开源的一个数据库连接池。以下是使用Druid连接池的主要步骤:
- 引入Druid库;
- 配置Druid连接池;
- 从连接池中获取连接对象。
以下是一个使用Druid连接池的示例:
DruidDataSource dataSource = new DruidDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/test");
dataSource.setUsername("root");
dataSource.setPassword("123456");
Connection conn = dataSource.getConnection();
封装数据对象
在Java中,我们通常使用POJO(Plain Old Java Object)对象来封装数据对象。POJO是一种简单的Java对象,它没有任何限制或规范,可以用于任何的Java开发场景。
使用POJO对象来封装数据对象的步骤如下所示:
- 创建POJO对象;
- 使用ORM框架来映射数据到POJO对象;
- 使用POJO对象来封装数据对象。
使用MyBatis框架
MyBatis是一种流行的Java持久化框架。以下是使用MyBatis框架封装数据对象的步骤:
- 引入MyBatis库;
- 编写MyBatis配置文件;
- 使用SqlSession对象执行数据库操作。
以下是一个使用MyBatis框架的示例:
编写User POJO对象:
public class User {
private Long id;
private String name;
private Integer age;
// getter and setter methods
}
编写MyBatis配置文件(mybatis-config.xml):
<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="com/example/mapper/UserMapper.xml"/>
</mappers>
</configuration>
编写UserMapper.xml文件:
<mapper namespace="com.example.mapper.UserMapper">
<resultMap type="com.example.pojo.User" id="userResultMap">
<id property="id" column="id"/>
<result property="name" column="name"/>
<result property="age" column="age"/>
</resultMap>
<select id="selectById" resultMap="userResultMap">
SELECT * FROM user WHERE id = #{id}
</select>
<insert id="insert" parameterType="com.example.pojo.User">
INSERT INTO user (name, age) VALUES (#{name}, #{age})
</insert>
<update id="update" parameterType="com.example.pojo.User">
UPDATE user SET name = #{name}, age = #{age} WHERE id = #{id}
</update>
<delete id="delete" parameterType="com.example.pojo.User">
DELETE FROM user WHERE id = #{id}
</delete>
</mapper>
使用SqlSession对象执行数据库操作:
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
User user = sqlSession.selectOne("com.example.mapper.UserMapper.selectById", 1L);
System.out.println(user.getName() + " " + user.getAge());
User newUser = new User();
newUser.setName("test");
newUser.setAge(18);
sqlSession.insert("com.example.mapper.UserMapper.insert", newUser);
sqlSession.commit();
总结
Java数据库存取技术是Java语言中非常重要的一部分。本文从连接数据库、数据库连接池、封装数据对象三个方面进行了详细的介绍。在实际开发中,我们可以根据实际需求来选择不同的技术方案来完成数据库存取。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java数据库存取技术 - Python技术站