JDBCTemplate操作数据库
1:创建对应数据库的 实体类(entity):
package JDBCTemplate.entity; public class User { private String userId; private String username; private String 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; } public String getUserId() { return userId; } public String getUsername() { return username; } public String getUstatus() { return ustatus; } }
2:编写service和dao
1)在dao里进行数据库操作
2)调用jdbcTemplate里的update方法实现添加操作
update(String sql,Object....args)
update有两个参数:第一个是需要执行的sql语句,第二个是课变参数,可以有多个值,用来设置sql语句值
package JDBCTemplate.dao; import JDBCTemplate.entity.Book; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Repository; @Repository public class BookdaoImpl implements BookDao{ //注入JDBCTemplate @Autowired private JdbcTemplate jdbcTemplate; //对数据库进行增加数据操作 @Override public void add(Book book) { //创建sql语句 String sql = "insert int book values(?,?,?)"; // 使用update执行 int update = jdbcTemplate.update(sql, book.getUserId(), book.getUsername(), book.getUstatus()); // update 是执行语句时影响的行数 System.out.println(update); } }
3:测试方法
package JDBCTemplate; import JDBCTemplate.entity.Book; import JDBCTemplate.service.Bookservice; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class TestBook { @Test public void Testadd() { ApplicationContext context = new ClassPathXmlApplicationContext("file:E:\\IDE\\JavaEE\\src\\JDBCTemplate\\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); } }
4:查询操作
查询返回值(例如:查询记录的条数)
使用queryforObject(String sql,Class<T> requiredType)——第二个参数为返回值类型类
例子:
@Override public int selectCount() { String sql = "select count(*) from book"; Integer integer = jdbcTemplate.queryForObject(sql, Integer.class); return integer; }
查询返回对象(返回某个对象的信息):
使用queryforObject(String sql,RowMapper<T> rowMapper,Object.....args)——
第二个参数:RowMapper,是接口,返回不同类型的数据,使用这个接口里面的实现类完成数据封装,T是需要返回的对象类型
第三个参数:sql语句中问号的值
@Override public Book findBookInfo(String id) { String sql = "select * from book where user_id = ?"; Book book = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<Book>(Book.class), id); return book; }
查询返回集合:
使用query(String sql , RowMapper<T> rowMapper)
参数和queryforObject一样
@Override public List<Book> findAllBook() { String sql = "select * from book"; List<Book> bookList = jdbcTemplate.query(sql, new BeanPropertyRowMapper<Book>(Book.class)); return bookList; }
批量操作(操作数据库里的多条记录):
使用batchUpdate(String sql, List<Object[]> batchArgs)
第二个参数:List集合,添加多条记录数据
//批量添加 @Override public void batchAddBook(List<Object[]> batchArgs) { String sql = "insert into book values(?,?,?)"; int[] ints = jdbcTemplate.batchUpdate(sql, batchArgs); //ints是表示影响行数的一个数组 System.out.println(Arrays.toString(ints)); }
@Test public void TestBatch() { ApplicationContext context = new ClassPathXmlApplicationContext("file:E:\\IDE\\JavaEE\\src\\JDBCTemplate\\bean1.xml"); Bookservice bookService = context.getBean("bookService", Bookservice.class); List<Object[]> batchArgs = new ArrayList<>(); Object[] o1 = {"3","java","a"}; Object[] o2 = {"4","PHP","d"}; batchArgs.add(o1); batchArgs.add(o2); bookService.batchAdd(batchArgs); }
浙公网安备 33010602011771号