-
什么是JdbcTemplate?
Spring框架对Jdbc技术的封装,使用JdbcTemplate可以更方便的实现对数据库的操作
-
前期准备
要想使用JdbcTemplate,我们除了jdbc的jar包和Druid的jar包之外,还需导入Spring相关jar包
在整篇文章的中,我们举例拿Book类来举例,同时使用之前所学的IOC操作来创建对象和注入属性
第一步:使用IOC操作来创建数据库连接池对象和JdbcTemplate对象,并将两者匹配
第二步,创建BookService对象和BookDao对象并对他们设置注解
@Service public class BookService { @Autowired private BookDaoImpl bookDao; } @Component public class BookDaoImpl implements BookDao { @Autowired private JdbcTemplate jdbcTemplate; } -
使用JdbcTemplate对数据进行增删改操作
首先我们先创建Book实体类
public class Book { private Integer id; private String bookname; private String author; //构造器、getset方法,toString方法省略 }调用jdbcTemplate.update()
第一个参数为sql语句,第二个参数为需要填充占位符的值
@Service public class BookService { @Autowired private BookDaoImpl bookDao; public void add(Book book){ bookDao.add(book); } public void update(Book book){ bookDao.update(book); } public void delete(int id){ bookDao.delete(id); } } @Component public class BookDaoImpl implements BookDao { @Autowired private JdbcTemplate jdbcTemplate; @Override public void add(Book book) { String sql = "insert into jdbc_book (`id`,`bookname`,`author`) values(?,?,?)"; int update = jdbcTemplate.update(sql, book.getId(), book.getBookname(), book.getAuthor()); System.out.println("受影响的行数为:" + update); } @Override public void update(Book book) { String sql = "update jdbc_book set `bookname` = ? ,`author` = ? where `id` = ?"; int update = jdbcTemplate.update(sql, book.getBookname(), book.getAuthor(), book.getId()); System.out.println("受影响的行数为:" + update); } @Override public void delete(int id) { String sql = "delete from jdbc_book where id = ?"; int update = jdbcTemplate.update(sql, 1); System.out.println("受影响的行数为:" + update); } } -
使用JdbcTemplate查询一条数据
使用jdbcTemplate.queryForObject()
第一个参数为sql语句
第二个参数是一个接口,针对返回的不同数据类型,使用他的实现类对数据进行封装
第三个参数为填充占位符的数值
@Service public class BookService { @Autowired private BookDaoImpl bookDao; public Book queryOne(int id){ return bookDao.queryOne(id); } } @Component public class BookDaoImpl implements BookDao { @Autowired private JdbcTemplate jdbcTemplate; @Override public Book queryOne(int id) { String sql = "select `id`,`bookname`,`author` from jdbc_book where id = ?"; Book book = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<>(Book.class), id); return book; } } -
使用JdbcTemplate查询特殊值(比如count)*
使用jdbcTemplate.queryForObject()
第一个参数为sql语句,第二个参数为返回值对象类型
@Service public class BookService { @Autowired private BookDaoImpl bookDao; public int queryCount(){ return bookDao.queryCount(); } } @Component public class BookDaoImpl implements BookDao { @Autowired private JdbcTemplate jdbcTemplate; @Override public int queryCount() { String sql = "select count(*) from jdbc_book"; Integer integer = jdbcTemplate.queryForObject(sql, Integer.class); return integer; } } -
使用JdbcTemplate查询集合
参数和查询一个对象相同
@Service public class BookService { @Autowired private BookDaoImpl bookDao; public ListqueryList(){return bookDao.queryList();} } @Component public class BookDaoImpl implements BookDao { @Autowired private JdbcTemplate jdbcTemplate; @Override public List queryList() { String sql = "select `id`,`bookname`,`author` from jdbc_book"; List query = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(Book.class)); return query; } } -
使用JdbcTemplate进行批量增删改
使用jdbcTemplate.batchUpdate()
第一个参数为sql语句,第二个参数为参数列表构成的数组
@Service public class BookService { @Autowired private BookDaoImpl bookDao; public void batchAdd(List



