本文向大家介绍对JDBC简单的封装,自定义mini-mapper,希望以此加深大家对此技术的理解。
一、JDBC简介
JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。
Java 具有坚固、安全、易于使用、易于理解和可从网络上自动下载等特性,是编写数据库应用程序的杰出语言。所需要的只是 Java应用程序与各种不同数据库之间进行对话的方法。
数据库是实现持久化的一种途径,而JDBC则是通向数据库的桥梁。
二、环境准备
1、引入maven依赖
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>${mysql-connector.version}</version> <scope>runtime</scope> </dependency> <!-- 引入lombok,去除冗余代码 --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>${lombok.version}</version> <scope>provided</scope> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency>
2、引入配置文件jdbc.properties
jdbc.driveClassName=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://127.0.0.1:3306/mini_mapper?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&verifyServerCertificate=false&useSSL=false&useAffectedRows=true&zeroDateTimeBehavior=convertToNull jdbc.username=root jdbc.password=pf1234
3、新建测试数据表
CREATE TABLE `t_user` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键id', `name` varchar(255) DEFAULT '' COMMENT '姓名', `age` tinyint(3) unsigned DEFAULT '0' COMMENT '年龄', `birthday` date DEFAULT NULL COMMENT '生日', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
三、封装MiniJdbcTemplate
MiniJdbcTemplate提供对数据库表的增删改查操作
1、定义JdbcUtil
获取数据库链接,关闭数据库链接,放在JdbcUtil里维护
public final class JdbcUtil { /** * 数据库链接 */ private static String url = null; /** * 用户名 */ private static String username = null; /** * 密码 */ private static String password = null; static { try ( InputStream inputStream = JdbcUtil.class.getClassLoader().getResourceAsStream("jdbc.properties") ) { Properties properties = new Properties(); properties.load(inputStream); String driveClassName = properties.getProperty("jdbc.driveClassName"); Class.forName(driveClassName); url = properties.getProperty("jdbc.url"); username = properties.getProperty("jdbc.username"); password = properties.getProperty("jdbc.password"); } catch (Exception e) { throw new RuntimeException("加载驱动异常", e); } } private JdbcUtil() { } /** * 获取数据库链接 */ public static Connection getConnection() throws SQLException { return DriverManager.getConnection(url, username, password); } /** * 关闭链接 */ public static void close(Connection connection, PreparedStatement preparedStatement, ResultSet resultSet) throws SQLException { if (resultSet != null) { resultSet.close(); } if (preparedStatement != null) { preparedStatement.close(); } if (connection != null) {