Spring简单入门(四)——JdbcTemplate

首先,Spring在框架中的地位,无论是SSH还是SSM,都是主要负责业务层。而对于其他方面,Spring都有封装,但是并非所长。而本文所讲的JdbcTemplate则是对Jdbc操作的一个简单封装,功能与专门的数据库框架相比相差较远

(1)原始JDBC操作

Class.forName("com.mysql.cj.jdbc.com");
String url = "";
String userName = "";
String password = "";
Connection connection = DriverManager.getConnection(url,userName,password);

通过对原始JDBC操作,我们可以发现,主要就是设置了四个量:驱动名称driverClassName、数据库url、用户名username和密码password,通过设置这四个量后,再通过DriverManager的静态方法来获得Connection对象,再通过该对象来进行数据库的操作。无论何种数据源或者数据池,其都是为了获得Connection对象,后面均一样

(2)JdbcTemplate

由上面可得,我们需要先获取数据源(new也可以,通过Spring配置也可(推荐使用Spring)),然后设置四个变量(不同数据源的变量名称略有差异)。然后再创建JdbcTemplate对象,并set注入数据源(new、Spring配置均可)。至此,获得JdbcTemplate对象后可以执行后面的操作。这里演示使用Spring的配置文件来获得JdbcTemplate对象

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
	<property name="driverClassName" value="com.mysql.cj.jdbc.Driver"></property>
	<property name="url" value=""></property>
	<property name="username" value=""></property>
	<property name="password" value=""></property>
</bean>		
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
    <property name="dataSource" ref="dataSource"></property>
</bean>

Spring使用的数据源为DriverManagerDataSource。四个量为driverClassName、url、username、password

C3P0使用的数据源为ComboPooledDataSource。四个量为driverClass、jdbcUrl、user、password

Druid使用的数据源为DruidDataSource。四个量为driverClassName、url、username、password

不同的数据源修改下配置即可。通过getBean()获得JdbcTemplate对象完成操作即可。

(3)JdbcTemplate的操作

①增删改:使用update(sql语句,sql语句中?的值);这个没任何问题

②查询1条或者多条记录。使用query(sql语句,RowMapper实现类对象,sql语句中?代表的值)。

这里面只有RowMapper是个新奇玩意。它的作用是将查询到的数据给封装到对象中,然后返回该对象的List集合。因此必须使用该接口的实现类。

1“系统提供了一个实现类new BeanPropertyRowMapper<要封装结果的类>(要封装结果的类.class)。其原理是通过传入的Class来反射得到对象,然后使用对象调用查询到的字段的set方法(例如,表中字段为name,那么就去寻找setName(),至于setName中干了啥不重要)。

2”自己实现该接口,注意要加上泛型。实现其方法,主要就是对于ResultSet中的一条数据如何封装到一个对象中,返回该对象即可。注意是一条数据,只能使用resultSet.get(),接口会自动帮你把所有的记录都进行该操作

③如果说查询count(*)这种只返回一个值:使用queryForObject(sql语句,返回值.class,Sql的?的值),这是Spring3的写法,Spring2使用了queryForXXX,XXX为返回值

(4)改进提升JDBCDaoSupport

JDBCDaoSupport是一个抽象类,其内部封装了一个单例的JdbcTemplate对象,同时提供了setDataSource()和setJdbcTemplate(),因此配置中向其子类注入DataSource对象,就可以创建这个单一JdbcTemplate对象,从而使用getJdbcTemplate()就可以获得该单例对象,来进行相关的操作。

首先,需要实现该抽象类,由于抽象类基本都实现了功能,因此可以提供空实现

public class MyDaoTest extends JdbcDaoSupport{}

然后在配置文件中进行配置该实现类

<bean id="jdbcDaoSupport" class="Test.MyDaoTest">
	<property name="dataSource" ref="dataSource"></property>
</bean>

最后获得对象,再获得JdbcTemplate对象执行相关操作即可

public static void main(String[] args) throws ClassNotFoundException, SQLException {
	ApplicationContext applicationContext = new ClassPathXmlApplicationContext("Test/beans.xml");
	JdbcDaoSupport daoSupport = (JdbcDaoSupport) applicationContext.getBean("jdbcDaoSupport");
//	daoSupport.getJdbcTemplate().update("insert into acount(name,money) values(?,?)","Moze",1000.0f);
	List<Acount> query = daoSupport.getJdbcTemplate().query("select * from acount", new BeanPropertyRowMapper<Acount>(Acount.class));
	for(Acount acount:query) {
		System.out.println(acount.toString());
	}
}

总结:学习使用了使用JdbcTemplate来操作数据库。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值