jdbctemplate简介】
JdbcTemplate简介
Spring对数据库的操作在jdbc上⾯做了深层次的封装,使⽤spring的注⼊功能,可以把DataSource注册到JdbcTemplate之中。 JdbcTemplate位于中。其全限定命名为org.JdbcTemplate。要使⽤JdbcTemlate还需⼀个这个包包含了⼀下事务和异常控制
JdbcTemplate主要提供以下五类⽅法:
execute⽅法:可以⽤于执⾏任何SQL语句,⼀般⽤于执⾏DDL语句;
update⽅法及batchUpdate⽅法:update⽅法⽤于执⾏新增、修改、删除等语句;batchUpdate⽅法⽤于执⾏批处理相关语句;
query⽅法及queryForXXX⽅法:⽤于执⾏查询相关语句;
call⽅法:⽤于执⾏存储过程、函数相关语句。
下⾯进⾏案件分析
在src下⾯新建⼀个属性配置⽂件
[Java] 纯⽂本查看复制代码
1 2 3 41jdbc.user=root
2jdbc.password=123456
3jdbc.sql.jdbc.Driver 4jdbc.jdbcUrl=jdbc\:mysql\:///test
我们通常将数据库的配置信息单独放到⼀个⽂件中,这样也为了⽅便后期维护配置Spring配置⽂件l
[Java] 纯⽂本查看复制代码
01 02 03 04 05 06 07 08 09 101<context:property-placeholder location="classpath:db.properties"/> 2<bean id="dataSource"class= "hange.v2.c3p0.ComboPooledDataSource">
3<property name="user"value="${jdbc.user}"></property>
4<property name="password"value="${jdbc.password}"></property>
5<property name="driverClass"value="${jdbc.driverClass}"></property>
6<property name="jdbcUrl"value="${jdbc.jdbcUrl}"></property>
7</bean>
8
9<bean id="jdbcTemplate"class="org.JdbcTemplate">
10<property name="dataSource"ref="dataSource"></property>
11</bean>
第⼀⾏代码:⽤来读取db.properties⽂件中的数据。
第⼆⾏代码:⽤来配置⼀个数据源,这⾥数据实现类来⾃C3P0中的⼀个属性类。其中属性的值就是来⾃于db.properties 第九⾏代码:配置⼀个JdbcTemplate实例,并注⼊⼀个dataSource数据源
测试代码
1、update()⽅法
a、通过update插⼊数据
1 //启动IoC容器
2 ApplicationContext ctx=new ClassPathXmlApplicationContext("l");
3 //获取IoC容器中JdbcTemplate实例
4 JdbcTemplate jdbcTemplate=(JdbcTemplate) Bean("jdbcTemplate");
5 String sql="insert into user (name,deptid) values (?,?)";
6 int count= jdbcTemplate.update(sql, new Object[]{"caoyc",3});
7 System.out.println(count);
这⾥update⽅法,第⼆参可以为可变参数。在数据库中可以看到,数据以被正确插⼊
b、通过update修改数据
[Java] 纯⽂本查看复制代码
1 21String sql="update user set name=?,deptid=? where id=?"; 2jdbcTemplate.update(sql,new Object[]{"zhh",5,51});
c、通过update删除数据[Java] 纯⽂本查看复制代码
1 21String sql="delete from user where id=?"; 2jdbcTemplate.update(sql,51);
2、batchUpdate()批量插⼊、更新和删除⽅法
a、批量插⼊
[Java] 纯⽂本查看复制代码
1 2 3 4 5 6 7 81String sql="insert into user (name,deptid) values (?,?)"; 2
3List<Object[]> batchArgs=new ArrayList<Object[]>();
4batchArgs.add(new Object[]{"caoyc",6});
5batchArgs.add(new Object[]{"zhh",8});
6batchArgs.add(new Object[]{"cjx",8});
7
8jdbcTemplate.batchUpdate(sql, batchArgs);
batchUpdate⽅法第⼆参数是⼀个元素为Object[]数组类型的List集合3、从数据中读取数据到实体对象
先定⼀个User实体类
[Java] 纯⽂本查看复制代码
01 02 03 04 05 06 071package com.proc;
2
3public class User {
4private Integer id;
5private String name; 6private Integer deptid; 7public Integer getId() {
08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
8return id;
9}
10public void setId(Integer id) {
11this.id = id;
12}
13public String getName() {
14return name;
15}
16public void setName(String name) {
17this.name = name;
18}
19public Integer getDeptid() {
20return deptid;
21}
22public void setDeptid(Integer deptid) {
23this.deptid = deptid;
24}
25
26public String toString() {
27return"User [id="+ id + ", name="+ name + ", deptid="+ deptid + "]"; 28}
29}
a、读取单个对象
[Java] 纯⽂本查看复制代码
1 2 3 4 51String sql="select id,name,deptid from user where id=?";
2
3RowMapper<User> rowMapper=new BeanPropertyRowMapper<User>(User.class); 4User user= jdbcTemplate.queryForObject(sql, rowMapper,52);
5System.out.println(user);
输出结果:
User [id=52, name=caoyc, deptid=6]
【注意】:1、使⽤BeanProperytRowMapper要求sql数据查询出来的列和实体属性需要⼀⼀对应。如果数据中列明和属性名不⼀致,在sql语句中需要⽤as重新取⼀个别名
2、使⽤JdbcTemplate对象不能获取关联对象
b、读取多个对象
[Java] 纯⽂本查看复制代码
1 2 3 4 5 6 71String sql="select id,name,deptid from user";
2
3RowMapper<User> rowMapper=new BeanPropertyRowMapper<User>(User.class); 4List<User> users= jdbcTemplate.query(sql, rowMapper);
5for(User user : users) {
6System.out.println(user);
7}
输出结果
...
User [id=49, name=姓名49, deptid=5]
User [id=50, name=姓名50, deptid=8]
User [id=52, name=caoyc, deptid=6]
User [id=53, name=zhh, deptid=8]
User [id=54, name=cjx, deptid=8]
---
c、获取某个记录某列或者count、avg、sum等函数返回唯⼀值[Java] 纯⽂本查看复制代码
1 2 3 41String sql="select count(*) from user";
2
3int count= jdbcTemplate.queryForObject(sql, Integer.class); 4System.out.println(count);
在实际开发中可以怎样⽤UserDao.java
[Java] 纯⽂本查看复制代码
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 191package com.proc; 2
3import org.springframework.beans.factory.annotation.Autowired;
4import org.BeanPropertyRowMapper;
5import org.JdbcTemplate;
6import org.RowMapper;
7import org.springframework.stereotype.Repository;
8
9@Repository
10public class UserDao {
11
12@Autowired
13private JdbcTemplate jdbcTemplate;
14
15public User get(int id){
16String sql="select id,name,deptid from user where id=?";
17RowMapper<User> rowMapper=new BeanPropertyRowMapper<User>(User.class); 18return jdbcTemplate.queryForObject(sql, rowMapper,id);
19}
20}
xml配置:
[XML] 纯⽂本查看复制代码
01 02 031 <?xml version="1.0"encoding="UTF-8"?>
2 <beans xmlns="/schema/beans"
3 xmlns:xsi="/2001/XMLSchema-instance"
04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22
4 xmlns:aop="/schema/aop"
5 xmlns:context="/schema/context"
6 xsi:schemaLocation="/schema/aop [url]/schema/aop/spring-aop-4.3.xsd[/url]
7 [url]/schema/beans[/url] [url]/schema/beans/spring-beans.xsd[/url]
8 [url]/schema/context[/url] [url]/schema/context/spring-context-
4.3.xsd[/url]">
9
10 <context:component-scan base-package="com.proc"></context:component-scan>
11 <context:property-placeholder location="classpath:db.properties"/>
python转java代码12 <bean id="dataSource"class="hange.v2.c3p0.ComboPooledDataSource">
13 <property name="user"value="${jdbc.user}"></property>
14 <property name="password"value="${jdbc.password}"></property>
15 <property name="driverClass"value="${jdbc.driverClass}"></property>
16 <property name="jdbcUrl"value="${jdbc.jdbcUrl}"></property>
17 </bean>
18
19 <bean id="jdbcTemplate"class="org.JdbcTemplate">
20 <property name="dataSource"ref="dataSource"></property>
21 </bean>
22 </beans>
代码测试
1 UserDao userDao=(UserDao) Bean("userDao");
2 System.out.(53));更多免费技术资料可关注:annalin1203
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论