今天就来学习一下Spring的JDBC
需要导入的包这里就跳过,首先看一下配置文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.3.xsd">
<!-- 配置数据源-->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<!-- 数据库驱动 -->
<property name = "driverClassName" value = "com.mysql.cj.jdbc.Driver" />
<!-- 连接数据库URL-->
<property name = "url" value = "jdbc:mysql://localhost/spring" />
<!-- 连接数据库的用户名-->
<property name = "username" value = "root" />
<!-- 连接数据库的密码-->
<property name = "password" value = "root" />
</bean>
<!-- 配置JDBC 模版-->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<!-- 默认必须使用数据源 -->
<property name="dataSource" ref ="dataSource"></property>
</bean>
<bean id="***Dao" class="***.DaoImpl">
<property name="jdbcTemplate" ref="jdbcTemplate"></property>
</bean>
</beans>
可以看出,这里都是采用设值注入的方式注入jdbc的。使用起来也很方便。
增删改都是用的update()方法:jdbcTemplate.update(...).
查询是query()方法:jdbcTemplate.query(...)/queryForObject(sql.rawMapper,args)
对表的操作用到的是excute()方法:jdbcTemplate.excute(...).
其中比较复杂的是查询,下面我们就重点说一下查询。
查询方法中,单例查询最常用的是queryForObject()方法,调用此方法前需要创建一个BeanPropertyRowMapper对象,那么这个对象是干什么用的?为什么要创建这么一个对象呢?
其实,这玩意儿使用的好处在于,当查询到数据以后,不需要创建对象,调用setter方法来保存数据,而是采用自动映射的方式来存储数据。这样是不是就简便了许多!但是需要注意,这就对数据库字段的命名有要求,需要尽可能的符合Java命名规范才行!但是这里是不是就有一个问题,既然这是自动映射,那如果我要多表联合查询,还能调用这个方法吗?答案是肯定的,需要在bean中添加对应的集合。具体操作详见这里:点我查看
说了这么多,相信各位对jdbc已经有了一定的认识,但是我个人还是建议各位参考一下jdbcTemplate底层源码,看看到底是如何调用这些方法,它们又是如何实现的。这里附上源码网址: 点我前往