1.jdbcTemplate
Spring中的数据库操作模板,可以整合其它框架,如mybatis
(1)对JDBC进行封装,使用jdbcTemplate可方便对数据库进行增删改查
2.准备工作
(1)引入依赖
mysql依赖、druid连接池、spring-jdbc依赖、Spring -tx依赖、
spring-orm依赖,用于spring整合其它框架依赖
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.47</version></dependency><!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc --><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>5.3.24</version></dependency><!-- https://mvnrepository.com/artifact/org.springframework/spring-orm --><dependency><groupId>org.springframework</groupId><artifactId>spring-orm</artifactId><version>5.3.22</version></dependency><!-- https://mvnrepository.com/artifact/org.springframework/spring-tx --><dependency><groupId>org.springframework</groupId><artifactId>spring-tx</artifactId><version>5.3.21</version></dependency>
<!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
<dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.2.12</version>
</dependency>
(2) 在Spring中配置连接池
<!-- dataSource数据库连接池--><bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close"><property name="url" value=""></property><property name="username" value=""></property><property name="password" value=""></property><property name="driverClassName" value=""></property></bean>
(3)配置jdbcTemplate对象,注入DataSource
<!-- jdbcTemplate对象--><bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"><!-- 注入数据源dataSource1.ref引用一个已经存在的对象--><property name="dataSource" ref="dataSource"></property></bean>
(4)创建 service 类,创建 dao 类,在 dao 注入jdbcTemplate 对象
Service注入Dao,Dao的实现类注入jdbcTemplate
Dao注入连接池
package com.Dao;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;@Repository
public class BookDaoimpl implements BookDao{@Autowiredpublic JdbcTemplate jdbcTemplate;}
创建接口DAo
package com.Dao;public interface BookDao {
}
注入dao
package com.Server;import com.Dao.BookDao;
import com.Dao.UserDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;@Service
public class BookService {//注入dao@Autowiredprivate BookDao bookDao;}
jdbcTemplate 操作数据库
1.对应数据库表创建实体类。
package com.entity;//创建数据库对应实体类。
public class User {private String userid;private String username;private String ustatus;//状态public String getUserid() {return userid;}public void setUserid(String userid) {this.userid = userid;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getUstatus() {return ustatus;}public void setUstatus(String ustatus) {this.ustatus = ustatus;}}
2.编写Service和Dao
(1)在Dao进行数据库添加操作。
①在Server方法中添加方法。
方法体中调用接口的add方法
@Service
public class BookService {//注入dao@Autowiredprivate BookDao bookDao;//添加方法public void addBook(Book book){bookDao.add(book);}
}
②在接口中添加add方法,并且在实现类中实现add方法。
在接口中添加add方法
public interface BookDao {//添加方法void add(Book book);
}
在实现类中实现add方法
//添加方法,在实现类中实现public void add(Book book){}
(3)调用update方法实现添加操作
有两个参数
第一个参数:sql语句
第二个参数:可变参数
//添加方法,在实现类中实现public void add(Book book){//1.创建sql语句String sql="insert into t_book values(?,?,?)";//2.调用方法实现,第二个参数为可变参数,int update = jdbcTemplate.update(sql, book.getUserid(), book.getUsername(), book.getUstatus());System.out.println(update);}
(4)查询
查询返回某个值
public int selectCount(Book book) {String sql="select count(*) from t_book";//两个参数1.sql语句,第二个参数为返回类型的class如integer.classInteger count = jdbcTemplate.queryForObject(sql, Integer.class);return count;}
查询返回对象
public Book findBookInfo(String id) {String sql="select * from t_book where userid=?";//三个参数//1.sql语句2.RowMapper 3.sql语句?中的值//第二个参数中<>写兑现类型,()中写实现类型的.classBook book = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<Book>(Book.class), id);return book;}
查询返回集合
@Overridepublic List<Book> findAllBook() {String sql="select * from t_book";//参数 1.sql语句2.RowMapper 3.sql语句?中的值//第二个参数中<>写兑现类型,()中写实现类型的.class,第三个参数可省略不写。//返回是list集合List<Book> bookList = jdbcTemplate.query(sql, new BeanPropertyRowMapper<Book>(Book.class));return bookList;}
批量 修改操作
批量增加批量删除相同,仅仅sql语句变就行。
@Overridepublic void batchUpdataBook(List<Object> batchArgs) {String sql="updata t_book set username=?,ustatus=?,where id=?";int[] ints = jdbcTemplate.batchUpdate(sql, batchArgs);}