Spring和数据库编程
V哥官网:http://www.vgxit.com
本博客对应视频教程:http://www.vgxit.com/course/23
1,概述:
Spring最重要的功能毫无疑问就是操作数据。在Java互联网项目中,数据大部分存储在数据库和NoSQL工具中,我们接下来就要接触到基于Spring的数据库编程。数据库的编程是互联网编程的基础,Spring为开发者提供了JDBC模板模式,那就是它自身的jdbcTemplate,它可以简化许多代码的编程,但是在实际的工作中jdbcTemplate并不常用。Spring还提供了基于TransactionTemplate的支持事务的模板。只不过这些都不是常用技术。对于持久层,我们在开发的时候更多的是使用Mybatis或者Hibernate这样的技术。对于Hibernate的话,Spring提供了HibernateTemplate给与支持,它可以简化对于Hibernate的编程。对于Mybatis框架,由于版本原因,Spring并没有支持Mybatis,好在Mybatis社区开发了介入Spring的开发包,该包也提供了SqlSessionTemplate给开发者使用。更让人欣喜的是该包还屏蔽了SqlSessionTemplate这种功能性的代码。让开发者在开发的时候可以擦除SqlSessionTemplate让开发者直接使用Mapper接口编程,大大提高了编码的可读性。
2,传统的JDBC代码的弊端:
传统的jdbc代码,是非常有弊端的。比如如下代码:
public class ConnMysqlTest {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
//1,加载驱动
Class.forName("com.mysql.jdbc.Driver");
//2,获取数据库连接,通过DriverManager
//连接的地址,书写格式 jdbc:数据库驱动类型://ip:端口/数据库名?serverTimezone=时区[&useUnicode=true&characterEncoding=utf8]
//如果使用utf8编码用如下方式
String connUrl = "jdbc:mysql://localhost:3306/vgxit_test?serverTimezone=Asia/Shanghai";
//4,编写查询语句
String selectSql = "select id, name, gender, age, phone from user;";
try (
Connection connection = DriverManager.getConnection(connUrl, "root", "Abc@123456");
//3,使用Connection来创建一个Statement对象
Statement statement = connection.createStatement();
//5,执行对应的sql,获取到一个ResultSet
ResultSet rs = statement.executeQuery(selectSql);
) {
//遍历查询出来的数据
while (rs.next()) {
System.out.println(rs.getInt(1) + ":" + rs.getString(2) + "," + rs.getShort(3) + "," + rs.getInt(4) + "," + rs.getString(5));
}
}
}
}
这段代码是老师第一次给同学们讲Jdbc的时候给大家写的代码,我是原样的复制过来的。同学们可以看到使用jdbc编程,就算是一条sql,其实也不是太简单。因为我们要考虑打开数据库连接,然后执行sql,然后遍历结果集,然后封装数据,然后关闭Statement,ResultSet,Connection。其实我们就是想要简单的写一条sql来查询数据而已。上面的代码对于我们来说真的是太复杂了。
当然如果我们使用原生的Jdbc编程,效率肯定是最好的。但是我们有太多的逻辑和异常处理等需要我们编码,这个时候其实我们再这么使用在大项目中肯定是不行的。而Spring就可以为我们大大的简化数据库的开发。