Spring——JdbcTemplate
Posted xiao-ran
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring——JdbcTemplate相关的知识,希望对你有一定的参考价值。
一.JdbcTemplate介绍:
为了使 JDBC 更加易于使用,Spring 在 JDBCAPI 上定义了一个抽象层, 以此建立一个JDBC存取框架,Spring Boot Spring Data-JPA。
作为 SpringJDBC 框架的核心, JDBC 模板的设计目的是为不同类型的JDBC操作提供模板方法. 每个模板方法都能控制整个过程,并允许覆盖过程中的特定任务。
通过这种方式,可以在尽可能保留灵活性的情况下,将数据库存取的工作量降到最低。
二、JdbcTemplate 方法介绍
- execute方法:可以用于执行任何SQL语句,一般用于执行DDL语句;Execute、executeQuery、executeUpdate
- update方法及batchUpdate方法:update方法用于执行新增、修改、删除等语句;batchUpdate方法用于执行批处理相关语句 SQL SERVCER(GO SQL语句 GO) ;
- query方法及queryForXXX方法:用于执行查询相关语句;
- call方法:用于执行存储过程、函数相关语句。
三、使用JdbcTemplate方式实现数据库编程
(一)、配置方式
1.引入依赖
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>5.1.5.RELEASE</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.32</version> </dependency>
2.实体类
public class StuInfo { private Integer id; private String name; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return "StuInfo{" + "id=" + id + ", name=‘" + name + ‘‘‘ + ‘}‘; }
3.创建数据库连接配置文件
jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/stutest?useUniCode=true&characterEncoding=utf-8 jdbc.username=root jdbc.password=123
4.搭建分层架构
Dao层实现类:
public class StuDao extends JdbcDaoSupport {//继承JdbcDaoSupport类,里面封装了JdbcTemplate模板 /*new RowMapper<StuInfo>() { @Override public StuInfo mapRow(ResultSet resultSet, int i) throws SQLException { StuInfo stu=new StuInfo(); stu.setId(resultSet.getInt("id")); stu.setName(resultSet.getString("name")); return stu; } }*/ //查询所有信息 public List<StuInfo> getStu(){//这里运用自动映射的方式处理结果集,上面注释的方式为手动关联 List<StuInfo> lists=this.getJdbcTemplate().query("select * from stu_info", new BeanPropertyRowMapper(StuInfo.class)); return lists; } }
源码分析:
5.Spring配置文件
<!--导入jdbc配置文件--> <context:property-placeholder location="classpath:jdbc.properties"></context:property-placeholder> <!-- 数据源配置--> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="${jdbc.driver}" /> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> </bean> <bean id="stuDao" class="cn.spring.jdbcTemplate.mapper.StuDao"> <!-- 配置dao * dao 继承 JdbcDaoSupport,之后只需要注入数据源,底层将自动创建模板
--> <property name="dataSource" ref="dataSource"></property> </bean> <!--包扫描仪--> <context:component-scan base-package="cn.spring.jdbcTemplate"></context:component-scan>
因为继承了JdbcTemplate,所以此时直接在Dao层注入数据源,否则:
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource" ref="dataSource"></property> </bean> <bean id="stuDao" class="cn.spring.jdbcTemplate.mapper.StuDao"> <property name="jdbcTemplate" ref="jdbcTemplate"></property> </bean>
6.测试
ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml"); StuService stuServiceImpl = (StuService) context.getBean("StuService"); List<StuInfo> stu = stuServiceImpl.getStu(); //输出数据 for (StuInfo stuInfo : stu) { System.out.println(stuInfo.getId() + "====" + stuInfo.getName()); }
(二)、注解方式
这里只做两点区别:
Dao层实现类:
@Repository public class UserDaoImpl implements UserDao{ @Resource//使用注解方式注入JdbcTemplate private JdbcTemplate jdbcTemplate; @Override public int addMoney(double money,Integer id) { int update = jdbcTemplate.update("update user set money=money+? where id=?", money, id); return update; }
配置文件:
<!--设置JdbcTemplate模板--> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource" ref="dataSource"></property> </bean>
以上是关于Spring——JdbcTemplate的主要内容,如果未能解决你的问题,请参考以下文章
Spring对JDBC的模板支持——JdbcTemplate