文章目录
JDBCTemplate
1 JDBCTemplate?
(1)Spring框架对JDBC进行封装,使用JDBCTemplate方便实现对数据库操作
2 准备工作
(1)引入相关的jar包
(2)在spring配置文件中配置数据库连接池
<!--配置连接池--> <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close"> <property name="driverClassName" value="com.mysql.jdbc.Driver"></property> <property name="url" value="jdbc:mysql://master:3306/user_db"></property> <property name="username" value="root"></property> <property name="password" value="123456"></property> </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.znv.spring.demo5"></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 操作数据库
3.1 增加
1、对应数据库表创建实体类
2、编写service和dao
(1)在dao进行数据库添加操作
(2)调用JdbcTemplate对象里面update方法实现添加操作
有两个参数:sql语句;可变参数(设置sql语句值)
@Repository public class BookDaoImpl implements BookDao { //注入JDBCTemplate @Autowired private JdbcTemplate jdbcTemplate; @Override public void add(Book book) { //1 创建sql语句 String sql = "insert into t_book values(?,?,?)"; //2 调用方法实现 Object[] args = {book.getUserId(), book.getUsername(), book.getUstatus()}; //可变参数 int update = jdbcTemplate.update(sql, args); System.out.println(update); //影响行数 } }
3、测试类
public class TestBook { @Test public void testJdbcTemplate() { ApplicationContext context = new ClassPathXmlApplicationContext("com/znv/spring/demo5/bean1.xml"); BookService bookService = context.getBean("bookService", BookService.class); Book book = new Book(); book.setUserId("1001"); book.setUsername("hadoop"); book.setUstatus("T"); bookService.addBook(book); } }
3.2 修改+删除
//修改的方法 @Override public void updateBook(Book book) { String sql = "update t_book set usename=?.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 deleteBook(String id) { String sql = "delete from t_book where user_id=?"; int update = jdbcTemplate.update(sql, id); System.out.println(update); }
测试
//修改 // Book book = new Book(); // book.setUserId("1001"); // book.setUsername("storm"); // book.setUstatus("F"); // bookService.updateBook(book); //删除 bookService.deleteBook("1001");
3.3 查询
3.3.1 查询返回某个值
1、查询表里面有多少条记录,返回某个值
2、使用JdbcTemplate实现查询返回某个值代码
queryForObject(String var1, Class<T> var2)
两个参数:1、sql语句;2、返回类型Class
//查询表中记录数 @Override public int selectCount() { String sql = "SELECT COUNT(*) FROM t_book"; Integer count = jdbcTemplate.queryForObject(sql, Integer.class); return count; }
3.3.2 查询返回对象
1、查询详细信息(根据id查询)
2、JdbcTemplate实现查询返回对象
queryForObject(String var1, RowMapper<T> var2, @Nullable Object... var3)
三个参数:1、sql语句;2、RowMapper接口,针对返回不同类型数据,使用接口实现类完成数据的封装;3、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; }
3.3.3 查询返回集合
1、查询图书列表分页
2、JdbcTemplate实现查询返回集合
query(String var1, RowMapper<T> var2, @Nullable Object... var3)
三个参数:1、sql语句;2、RowMapper接口,针对返回不同类型数据,使用接口实现类完成数据的封装;3、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; }
3.4 批量操作
3.4.1 批量增加
1、批量操作:操作表内多条记录
2、jdbcTemplate实现批量添加操作
batchUpdate(String var1, List<Object[]> var2)
两个参数:1、sql语句;2、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)); }
测试
//批量添加 List<Object[]> batchArgs = new ArrayList<>(); Object[] o1={"1003","java","M"}; Object[] o2={"1004","hadoop","T"}; Object[] o3={"1005","hive","T"}; batchArgs.add(o1); batchArgs.add(o2); batchArgs.add(o3); bookService.batchAdd(batchArgs);
3.4.2 批量修改+删除
1、修改
//批量修改 @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={"scala","M","1003"}; Object[] o2={"hadoop","T","1004"}; Object[] o3={"hbase","T","1005"}; batchArgs.add(o1); batchArgs.add(o2); batchArgs.add(o3); bookService.batchUpdate(batchArgs);
2、删除
//批量删除 @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)); }
测试
//批量删除 List<Object[]> batchArgs = new ArrayList<>(); Object[] o1={"1003"}; Object[] o2={"1004"}; batchArgs.add(o1); batchArgs.add(o2); bookService.batchDelete(batchArgs);