什么是JDBCTemplate
spring框架对jdbc的封装,使用jdbcTemplate方便对db操作
使用流程
引入依赖 略
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"
xmlns:tx="http://www.springframework.org/schema/tx"
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
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">
<!-- 组件扫描 -->
<context:component-scan base-package="com.addicated"></context:component-scan>
<!-- 数据库连接池 -->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
destroy-method="close">
<property name="url" value="jdbc:mysql://localhost:8889/zentao" />
<property name="username" value="root" />
<property name="password" value="123456" />
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
</bean>
<!-- JdbcTemplate对象注册 -->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<!--注入dataSource-->
<property name="dataSource" ref="dataSource"></property>
</bean>
<!--创建事务管理器-->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<!--注入数据源-->
<property name="dataSource" ref="dataSource"></property>
</bean>
<!--开启事务注解-->
<tx:annotation-driven transaction-manager="transactionManager"></tx:annotation-driven>
</beans>
简单使用代码
创建service类,创建dao类,在dao中注入jdbcTemplate对象 ```java —- 创建service package com.addicated.service;
import com.addicated.dao.UserDao; import com.addicated.entity.User; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service;
import java.awt.print.Book;
@Service public class UserService {
@Autowired
private UserDao userDao;
public void add(User user) {
userDao.add(user);
}
// 修改
public void update(User user) {
userDao.update(user);
}
public void del(String userId) {
userDao.delete(userId);
}
public User findOne(String id) {
User one = userDao.findOne(id);
return one;
}
} —- 创建dao package com.addicated.dao;
import com.addicated.entity.User;
public interface UserDao {
void add(User user);
void update(User user);
void delete(String userId);
User findOne(String id);
} —- 创建dao实现类 package com.addicated.dao;
import com.addicated.entity.User; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.BeanPropertyRowMapper; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Repository; import org.springframework.test.context.jdbc.Sql;
import java.util.Arrays; import java.util.List;
/* */ @Repository public class UserDaoImpl implements UserDao {
// 注入 jdbcTemplate
@Autowired
private JdbcTemplate jdbcTemplate;
@Override
public void add(User user) {
String sql = "insert into t_user values(?,?,?)";
int update = jdbcTemplate.update(sql, user.getUserId(), user.getUsername(), user.getUstatus());
// 细节 ,update 接收的是一个可变参数 所以直接传递数组类型数据也是可行的
System.out.println(update);
}
@Override
public void update(User user) {
String sql= "update xxxx where userId = ? set xxx=?";
}
@Override
public void delete(String userId) {
String Sql = "阿斯顿";
}
@Override
public User findOne(String id) {
String sql = "";
User user = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<User>(User.class), id);
return user;
}
public List<User> findAllUser(){
String sql = "";
List<User> query = jdbcTemplate.query(sql, new BeanPropertyRowMapper<User>(User.class));
return query;
}
// 批量添加
public void batchAddBook(List<Object[]> batchArgs ){
String sql = "isnert into tabName values(?,?,?)";
int[] ints = jdbcTemplate.batchUpdate(sql,batchArgs);
System.out.println(Arrays.toString(ints));
}
}
<a name="jN99u"></a>
## 编写service和 dao
- 在dao进行数据库添加操作
- 操作jdbcTemplate对象的update方法实现添加操作
<br />update方法有多个重载
- 一般而言有两个参数
- 第一参数 sql语句
- 第二参数 可变参数(也就是不定长参数,与哦你过来设置sql语句中的值
```java
@Repository
public class UserDaoImpl implements UserDao {
// 注入 jdbcTemplate
@Autowired
private JdbcTemplate jdbcTemplate;
@Override
public void add(User user) {
Object[] args = {book.getUserId(), book.getUsername(),book.getUstatus()};
String sql = "insert into t_user values(?,?,?)";
int update = jdbcTemplate.update(sql, args);
// 细节 ,update 接收的是一个可变参数 所以直接传递数组类型数据也是可行的
System.out.println(update);
}
-- 测试类
@Test
public void testJdbcTemplate() { ApplicationContext context =
new ClassPathXmlApplicationContext("bean1.xml"); BookService bookService = context.getBean("bookService",
BookService.class);
Book book = new Book(); book.setUserId("1");
book.setUsername("java"); book.setUstatus("a"); bookService.addBook(book);
}
jdbcTemplate 操作数据库 修改与删除
使用流程相似,这里只贴出来部分jdbc使用的代码
------- 修改 与插入不同的只是sql语句 public void updateBook(Book book) { String sql = "update t_book set username=?,ustatus=? where user_id=?"; Object[] args = {book.getUsername(), book.getUstatus(),book.getUserId()}; int update = jdbcTemplate.update(sql, args); System.out.println(update); } ------ 删除操作 注意入参变化 public void delete(String id) { String sql = "delete from t_book where user_id=?"; int update = jdbcTemplate.update(sql, id); System.out.println(update); }
jdbcTemplate 操作数据库 查询返回某个值
查询表里有多少跳记录,返回是个int
- 方法为 queryForObject
- 常用2参数
- 第一参数,sql语句
- 第二参数,返回类型class
- 常用2参数
@Override
public int selectCount() {
String sql = "select count(*) from t_book";
Integer count = jdbcTemplate.queryForObject(sql, Integer.class);
return count;
}
jdbcTemplate 操作数据库 查询返回对象
同样使用 queryForObject方法,这次使用的为重载方法其一,
- 参数有三
同上
批量操作表中多条记录
jdbcTemplate 实现批量添加操作
两个参数
- 1 sql语句
- 2 list集合,添加多条记数据 ```java @Override public void batchAddBook(List
//批量添加测试 List
<a name="rMizF"></a> # jdbcTemplate 操作数据库 批量修改操作 ```java @Override public void batchUpdateBook(List<Object[]> batchArgs) { String sql = "update t_book set username=?,ustatus=? where user_id=?"; int[] ints = jdbcTemplate.batchUpdate(sql, batchArgs); System.out.println(Arrays.toString(ints)); } //批量修改 List<Object[]> batchArgs = new ArrayList<>(); Object[] o1 = {"java0909","a3","3"}; Object[] o2 = {"c++1010","b4","4"}; Object[] o3 = {"MySQL1111","c5","5"}; batchArgs.add(o1); batchArgs.add(o2); batchArgs.add(o3); //调用方法实现批量修改 bookService.batchUpdate(batchArgs);
jdbcTemplate 操作数据库 批量删除
```java @Override public void batchDeleteBook(List
List
Object[] o1 = {“3”}; Object[] o2 = {“4”}; batchArgs.add(o1); batchArgs.add(o2); //调用方法实现批量删除 bookService.batchDelete(batchArgs); ```