JdbcTemplate
Spring 框架对 JDBC 进行封装,使用 JdbcTemplate 方便实现对数据库操作
-
引入相关依赖
-
在 Spring 配置文件配置数据库连接池
-
<!-- 配置数据库连接--> <context:property-placeholder location="druid.properties"></context:property-placeholder> <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"> <property name="url" value="${prop.url}"></property> <property name="driverClassName" value="${prop.driverClassName}"></property> <property name="username" value="${prop.username}"></property> <property name="password" value="${prop.password}"></property> </bean>
-
-
配置 JdbcTemplate 对象,注入 DataSource
-
<!-- 配置 jdbctemplate 对象--> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <!-- 注入 dataSource --> <property name="dataSource" ref="dataSource"></property> </bean>
-
-
创建 Service 类,创建 dao 类,在 dao 注入 jdbcTemplate 对象
-
配置文件
-
<!-- 组件扫描--> <context:component-scan base-package="com.cs7eric"></context:component-scan>
-
-
Service
-
@Service public class BookService { //注入 dao @Autowired private BookDao bookDao; }
-
-
BookDao
-
@Repository public class BookDaoImpl implements BookDao{ //注入 jdbcTemplate @Autowired private JdbcTemplate jdbcTemplate; @Override public void add() { } }
-
-
JdbcTemplate 操作 数据库
对应数据库创建实体类
public class Book {
private Integer id;
private String name;
public Book(Integer id, String name) {
this.id = id;
this.name = name;
}
public Book() {
}
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 "Book{" +
"id=" + id +
", name='" + name + '\'' +
'}';
}
}
添加操作
-
编写 service 和 dao
-
在 dao 进行数据库添加操作
-
调用 JdbcTemplate 对象里面 update 方法
- 有两个参数
- 第一个参数:sql 语句
- 第二个参数:可变参数,设置 SQL 语句值
-
@Repository public class BookDaoImpl implements BookDao{ //注入 jdbcTemplate @Autowired private JdbcTemplate jdbcTemplate; @Override public void add() { } @Override public void addBook(Book book) { String sql = "INSERT INTO t_book VALUES(?,?)"; Object[] args = {book.getId(),book.getName()}; int update = jdbcTemplate.update(sql, args); System.out.println(update); } }
-
-
测试类
-
@Test public void addBook() { ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("jdbctemplate.xml"); BookService bookService = context.getBean("bookService", BookService.class); bookService.addBook(new Book(1,"csq")); }
-
修改
/**
* 更新书
*
* @param book 书
*/
@Override
public void updateBook(Book book) {
String sql = "UPDATE t_book SET name=? WHERE id=?";
Object[] args = {book.getName(),book.getId()};
int update = jdbcTemplate.update(sql, args);
System.out.println(update);
}
删除
@Test
public void deleteBook() {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("jdbctemplate.xml");
BookService bookService = context.getBean("bookService", BookService.class);
bookService.deleteBook(1);
}
查询返回某个值
-
查询表里面有多少条记录,返回是某个值
-
使用 JdbcTemplate 实现查询返回某个值
-
- 有两个参数
- 第一个参数:SQL 语句
- 第二个参数:返回类型 Class
- 有两个参数
-
@Override public void selectCount() { String sql = "SELECT COUNT(*) FROM t_book"; Integer count = jdbcTemplate.queryForObject(sql, Integer.class); System.out.println(count); }
-
查询返回对象
-
场景:查询图书详情
-
JdbcTemplate 实现查询返回对象
-
-
有三个参数
- 第一个参数:SQL 语句
- 第二个参数:RowMapper 是接口,针对返回不同类型数据,使用这个接口里面实现类完成数据封装
- 第三个参数:SQL 语句填充值
-
@Override public Book queryForBook(Integer id) { String sql = "SELECT * FROM t_book WHERE id=?"; Book book = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<Book>(Book.class), id); return book; }
-
查询返回集合
-
场景:查询图书列表分页
-
调用 JdbcTemplate 方法实现查询返回集合
-
-
有三个参数
- 第一个参数:SQL 语句
- 第二个参数:RowMapper 是接口,针对返回不同类型数据,使用这个接口里面实现类完成数据封装
- 第三个参数:SQL 语句值
-
@Override public List<Book> queryBooks() { String sql = "SELECT * FROM t_book"; return jdbcTemplate.query(sql, new BeanPropertyRowMapper<Book>(Book.class)); }
-
批量操作
-
批量操作:操作表里面多条记录
-
JdbcTemplate 实现批量添加操作
-
-
有两个参数
- SQL 语句
- List 集合,添加多条数据
-
@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)); }
-
批量修改和批量删除操作和批量添加一样,更改一下SQL 语句即可