一、相关概念


spring是一个一站式的框架,对不同持久层的技术都进行了封装(处理数据库技术,基本的crud操作即增删改查),如JDBC、Hibermate、MaBatis、JPA等。

二、spring对JDBC的封装使用步骤大体如下:

* 导入jar包 spring-jdbc、spring-tx
* 创建DriveManagerDataSource对象,对数据库进行配置

* className
* url
* username
* password
* 创建JdbcTemplate对象

* 注入dataSource对象
* 调用JdbcTemplate封装的方法进行sql操作

* update(String sql , Object…arr) //增删改
* queryForObject(String sql , RowMapper rowMapper , Object…arr); //查询,单个值或对象
* query(String sql , RowMapper rowMapper , Object…arr); //查询 ,list
* 查询方法的形参需要一个实现RowMapper接口的类,对数据进行封装,详见以下实例
三、利用spring的jdbcTemplate实现简单的sql操作实例

1、创建工程,引入相关jar包






2、创建spring配置文件并写必要约束


<?xml version="1.0" encoding="UTF-8"?> <beans xmlns=
"http://www.springframework.org/schema/beans" xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance" xmlns:context=
"http://www.springframework.org/schema/context" xmlns:aop=
"http://www.springframework.org/schema/aop" xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd"> </beans>
3、建表、配置数据库及jdbcTemplate

* 创建一个简单的book表

* 创建DataSource.properties #DataSource.properities driverClassName=com.mysql
.jdbc.Driver url=jdbc:mysql://127.0.0.1:3306
/spring_jdbc_template_test?characterEncoding=UTF-8
&useOldAliasMetadataBehavior=true username=root password=123456
* spring配置: <!-- 扫描包下的所有注解 --> <context:component-scan base-package=
"com.jdbctemplate.book"></context:component-scan> <context:property-placeholder
location="resource/DataSource.properties"></context:property-placeholder> <!--
创建DataSource对象 --> <bean id="dataSource" class=
"org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name=
"driverClassName" value="${jdbc.driverClassName}"></property> <property name=
"url" value="${jdbc.url}"></property> <property name="username" value=
"${jdbc.username}"></property> <property name="password" value=
"${jdbc.password}"></property> </bean> <!-- 创建JdbcTemplate对象 --> <bean id=
"jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <
constructor-arg name="dataSource" ref="dataSource"></constructor-arg> </bean>
4、创建Book实例类,保存从数据库取出的数据
public class Book { private String name; private float prive; public Book() {
super(); } public Book(String name, float prive) { super(); this.name = name;
this.prive = prive; } public String getName() { return name; } public void
setName(String name) { this.name = name; } public float getPrive() { return
prive; }public void setPrive(float prive) { this.prive = prive; } @Override
public String toString() { return "Book [name=" + name + ", prive=" + prive +
"]"; } }
4、写dao层接口
public interface BookDao { /** * 添加图书 * @param name * @param price * @return */
public int addBook(String name , float price); /** * 删除图书 * @param name *
@return */ public int delBook(String name); /** * 修改价格 * @param name * @param
price * @return */ public int updateBook(String name,float price); /** *
返回所有Book信息 * @return */ public List<Book> getAllBook(); /** * 返回指定书名的图书信息 *
@param name * @return */ public Book getBook(String name); /** * 返回指定书名的价格 *
@param name * @return */ public float getPrice(String name); }
5、写BookDao的实现类,并配置
public class BookDaoImpl implements BookDao{ // jdbc模板 @Resource(name=
"jdbcTemplate") private JdbcTemplate jdbcTemplate; public int addBook(String
name,float price) { return jdbcTemplate.update("insert into book value(?,?)"
,name,price); }public int delBook(String name) { return jdbcTemplate.update(
"delete from book where name=?",name); } public int updateBook(String name,
float price) { return jdbcTemplate.update("update book set price=? where name=?"
,price,name); }public List<Book> getAllBook() { return jdbcTemplate.query(
"select * from book", new BookRowMapper()); } public Book getBook(String name) {
return jdbcTemplate.queryForObject("select * from book where name=?", new
BookRowMapper(),name); }public float getPrice(String name) { return
jdbcTemplate.queryForObject("select price from book where name=?",
Float.class); }private class BookRowMapper implements RowMapper<Book>{ @Override
public Book mapRow(ResultSet re, int arg1) throws SQLException { return new
Book(re.getString("name"),re.getShort("price")); } } } <bean id="bookDaoImpl"
class="com.jdbctemplate.book.dao.impl.BookDaoImpl"></bean>
6、写BookService类
public class BookService { @Resource(name="bookDaoImpl") private BookDaoImpl
bookDaoImpl;public List<Book> getAll() { return bookDaoImpl.getAllBook(); }
public Book get(String name) { return bookDaoImpl.getBook(name); } public float
getPrice(String name) { return bookDaoImpl.getPrice(name); } public int add
(String name,float price) { return bookDaoImpl.addBook(name, price); } public
int delet(String name) { return bookDaoImpl.delBook(name); } } <!--
创建BookService对象 --> <bean id="bookService" class=
"com.jdbctemplate.book.service.BookService"></bean>
7、写测试类
public class Test { public static void main(String[] args) {
ApplicationContext context =new ClassPathXmlApplicationContext(
"resource/spring.xml"); BookService bookService = (BookService) context.getBean(
"bookService"); bookService.add("数学", 23.5F); bookService.add("语文", 20.5F);
System.out.println(bookService.getAll()); } }


四、在过程中@Resource无法使用解决

在过程中注解@Resource无法使用,import
javax.annotation.Resource;也一直红线无法引入,改变JDK版本后奇怪的就好了,但项目中没有错误,项目上总有个红叉。解决:右键项目–properties–project
Facets–java对于的版本改统一即可

友情链接
ioDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:ixiaoyang8@qq.com
QQ群:637538335
关注微信