JdbcTemplate
JdbcTemplte(概念和准备)
-
什么是JdbcTemplate
Spring框架对JDBC进行封装,使用JdbcTemplate方便实现对数据库操作
-
准备工作
(1)引入相关jar包
(2)在spring配置文件配置数据库连接池
<!-- 数据库连接池 --> <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close"> <property name="url" value="jdbc:mysql://localhost:3306/spring" /> <property name="username" value="root" /> <property name="password" value="yzy" /> <property name="driverClassName" value="com.mysql.jdbc.Driver" /> </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注入JdbcTemplate对象
<!--开启组件扫描--> <context:component-scan base-package="com.yzy"></context:component-scan>
@Service public class BookService { //注入dao @Autowired private BookDao bookDao; } @Repository public class BookDaoImpl implements BookDao{ //注入JdbcTemplate @Autowired private JdbcTemplate jdbcTemplate; }
-
JdbcTemplate操作数据库(添加)
1.对应数据库创建实体类
public class Book { private String userId; private String username; private String ustatus; public String getUserId() { return userId; } public void setUserId(String userId) { this.userId = userId; } ... }
2.编写service和dao
在dao进行数据库添加操作
@Repository public class BookDaoImpl implements BookDao{ //注入JdbcTemplate @Autowired private JdbcTemplate jdbcTemplate; @Override public void add(Book book) { String sql = "insert into t_book values(?,?,?)"; int update = jdbcTemplate.update(sql, book.getUserId(), book.getUsername(), book.getUstatus()); System.out.println(update); } }
3.测试类
@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操作数据库(修改和删除)
@Override 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); } @Override 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 操作数据库(查询返回某个值)
1.查询表里面有多少条记录,返回的是某个值
2.使用JdbcTemplate实现查询返回某个值
@Override public int selectCount() { String sql = "select count(*) from t_book"; return jdbcTemplate.queryForObject(sql, Integer.class); }
-
JdbcTemplate 操作数据库(查询返回对象)
1.场景 : 查询图书详情页面,返回对象
2.JdbcTemplate实现查询返回对象
第一个参数:sql语句
第二个参数:RowMapper,是一个接口,返回不同类型的数据,使用这个接口里面的实现类完成数据封装
第三个参数:sql语句值
@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;
}
-
JdbcTemplate 操作数据库(查询返回集合)
1.场景 : 查询图书列表分页
2…调用JdbcTemplate方法实现查询返回集合
第一个参数:sql语句
第二个参数:RowMapper,是一个接口,返回不同类型的数据,使用这个接口里面的实现类完成数据封装
第三个参数:sql语句值
@Override
public List<Book> findAllBook() {
String sql = "select*from t_book";
List<Book> bookList = jdbcTemplate.query(sql, new BeanPropertyRowMapper<Book>(Book.class));
return bookList;
}
-
JdbcTemplate操作数据库(批量操作)
1.批量操作 : 操作表里面多条记录
2.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));
}
-
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)); }
-
JdbcTemplate实现批量删除操作
//批量删除 @Override public void batchDeleteBook(List<Object[]> batchArgs) { String sql = "delete from t_book where user_id=?"; int[] ints = jdbcTemplate.batchUpdate(sql, batchArgs); System.out.println(Arrays.toString(ints)); }
@Override
public void batchDeleteBook(List<Object[]> batchArgs) {
String sql = "delete from t_book where user_id=?";
int[] ints = jdbcTemplate.batchUpdate(sql, batchArgs);
System.out.println(Arrays.toString(ints));
}