JdbcTemplate(概念和准备)
1、什么是JdbcTemplate ?
Spring框架对JDBC进行封装,使用JdbcTemplate 方便实现对数据库操作
2、准备工作
(1)引入相关的jar包
(2)在spring配置文件配置数据库连接池
<!-- 数据库连接池 -->
<bean destroy-method="close" class="com.alibaba.druid.pool.DruidDataSource" id="dataSource">
<property value="jdbc:mysql:///user_db" name="url"/>
<property value="root" name="username"/>
<property value="fx13488321363" name="password"/>
<property value="com.mysql.jdbc.Driver" name="driverClassName"/>
</bean>
(3)配置JdbcTemplate对象,注入DataSource
<!-- JdbcTemplate对象 -->
<bean id="JdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate" >
<!-- 注入datasource -->
<property name="dataSource" ref="dataSource"></property>
</bean>
(4)创建service类,创建dao类,在dao注入JdbaTemplate对象
- 配置文件
<!-- 组件扫描 -->
<context:component-scan base-package="com.spring5"></context:component-scan>
- Service
@Service
public class BookService {
// 注入dao
@Autowired
private BookDao bookDao;
}
- Dao
@Repository
public class BookDaoImpl implements BookDao {
// 注入JdbcTemplate
@Autowired
private JdbcTemplate jdbcTemplate;
}
3、JdbcTemplate操作数据库(添加)
1、对应数据库创建实体类
public class User {
private String userId;
private String username;
private String ustatus;
public String getUserId() {
return userId;
}
public String getUsername() {
return username;
}
public String getUstatus() {
return ustatus;
}
public void setUserId(String userId) {
this.userId = userId;
}
public void setUsername(String username) {
this.username = username;
}
public void setUstatus(String ustatus) {
this.ustatus = ustatus;
}
}
2、编写service和dao
(1)在dao进行数据库添加操作
(2)调用JdbcTemplate对象里面的update方法实现添加操作
4、JdbcTemplate操作数据库(查询返回某个值)
1、查询表中有多少条记录,返回某个值
2、使用JdbcTemplate实现查询返回某个值
配置文件中进行数据库连接池的设置以及JdbcTemplate对象的创建
<!-- 数据库连接池 -->
<bean destroy-method="close" class="com.alibaba.druid.pool.DruidDataSource" id="dataSource">
<property value="jdbc:mysql://localhost:3306/user_db" name="url"/>
<property value="root" name="username"/>
<property value="fx13488321363" name="password"/>
<property value="com.mysql.cj.jdbc.Driver" name="driverClassName"/>
</bean>
<!-- JdbcTemplate对象 -->
<bean id="JdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate" >
<!-- 注入datasource -->
<property name="dataSource" ref="dataSource"></property>
</bean>
// 查询表中记录数
@Override
public int selectCount() {
String sql = "select count(*) from t_book";
Integer count = jdbcTemplate.queryForObject(sql, Integer.class);
return count;
}
进行结果的测试
public class TestBook {
@Test
public void testJdbcTemplate(){
ApplicationContext context =
new ClassPathXmlApplicationContext("bean1.xml");
BookService bookService = context.getBean("bookService",BookService.class);
int count = bookService.findCount();
System.out.println(count);
}
}
5、JdbcTemplate操作数据库(查询返回对象)
(1)场景:查询图书详情
(2)JdbcTemplate实现查询返回对象
// 查询返回对象
@Override
public Book findBookInfo(String id) {
String sql = "select * from t_book where user_id=?";
// 调用方法进行实现
Book book = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<Book>(Book.class), id);
return book;
}
6、JdbcTemplate操作数据库(查询返回集合)
(1)查询图书列表分页...
(2)调用JdbcTemplate模板中的方法实现查询返回集合
// 查询返回集合
@Override
public List<Book> findAllBook() {
String sql = "select * from t_book";
// 调用方法
List<Book> bookList = jdbcTemplate.query(sql, new BeanPropertyRowMapper<Book>(Book.class));
return bookList;
}
(3)JdbcTemplate操作数据库(批量操作)
1、批量操作:操作表中的多条记录
2、JdbcTemplate实现批量添加操作
// 批量添加
public void batchAdd (List<Object[]> batchArgs){
bookDao.batchAddBook(batchArgs);
}
// 批量添加
@Override
public void batchAddBook(List<Object[]> batchArgs) {
String sql = "insert into t_book values(?,?,?)";
int[] ints = jdbcTemplate.batchUpdate(sql, batchArgs);
System.out.println(Arrays.toString(ints));
}
测试
// 批量添加
List<Object[]> batchArgs = new ArrayList<>();
Object[] o1 = {"4","admin","e"};
Object[] o2 = {"5","fex","r"};
Object[] o3 = {"6","mysql","t"};
batchArgs.add(o1);
batchArgs.add(o2);
batchArgs.add(o3);
// 调用批量添加方法
bookService.batchAdd(batchArgs);
3、JdbcTemplate实现批量修改操作
// 批量修改
@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 = {"admin","e","1"};
Object[] o2 = {"fex","r","2"};
Object[] o3 = {"mysql","t","3"};
batchArgs.add(o1);
batchArgs.add(o2);
batchArgs.add(o3);
// 调用批量修改方法
bookService.batchUpdate(batchArgs);
4、JdbcTemplate实现批量删除操作
// 批量删除
@Override
public void batchDeleteBook(List<Object[]> batchArgs) {
String sql = "delete from t_book where username = ?";
int[] ints = jdbcTemplate.batchUpdate(sql, batchArgs);
System.out.println(Arrays.toString(ints));
}
测试
// 批量删除
List<Object[]> batchArgs = new ArrayList<>();
Object[] o1 = {"admin"};
Object[] o2 = {"fex"};
Object[] o3 = {"mysql"};
batchArgs.add(o1);
batchArgs.add(o2);
batchArgs.add(o3);
// 调用批量删除方法
bookService.batchDelete(batchArgs);