Java Spring5學(xué)習(xí)之JdbcTemplate詳解
一、JdbcTemplate
Spring 框架對 JDBC 進(jìn)行封裝,使用 JdbcTemplate 方便實現(xiàn)對數(shù)據(jù)庫操作
二、實戰(zhàn)
2.1 引入依賴
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.24</version> </dependency> <!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>5.3.6</version> </dependency> <!-- https://mvnrepository.com/artifact/org.springframework/spring-orm --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-orm</artifactId> <version>5.3.6</version> </dependency> <!-- https://mvnrepository.com/artifact/org.springframework/spring-tx --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>5.3.6</version> </dependency>
2.2 配置連接池
<!--引入外部屬性文件 --> <context:property-placeholder location="classpath:jdbc.properties" /> <!-- 數(shù)據(jù)庫連接池 --> <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close"> <property name="url" value="${prop.url}" /> <property name="username" value="${prop.userName}" /> <property name="password" value="${prop.password}" /> <property name="driverClassName" value="${prop.driverClass}" /> </bean>
2.3 配置JdbcTemplate 對象,注入 DataSource
<!-- JdbcTemplate 對象 --> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <!--注入 dataSource --> <property name="dataSource" ref="dataSource"></property> </bean>
2.4 掃描注解
<!-- 開啟注解掃描 --> <context:component-scan base-package="cn.zj.aop.an"></context:component-scan>
2.5 創(chuàng)建 service 類,創(chuàng)建 dao 類,在 dao 注入 jdbcTemplate 對象
@Repository public class UserDaoImpl implements UserDao { //注入 JdbcTemplate @Autowired private JdbcTemplate jdbcTemplate; } @Service public class UserService { // 注入 dao @Autowired private UserDao userDao; }
三、操作(CRUD)
實體類
public class User { private String userId; private String username; private String ustatus; @Override public String toString() { return "User [userId=" + userId + ", username=" + username + ", ustatus=" + ustatus + "]"; } public String getUserId() { return userId; } public void setUserId(String userId) { this.userId = userId; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getUstatus() { return ustatus; } public void setUstatus(String ustatus) { this.ustatus = ustatus; } }
3.1 添加
service //添加 public void addUser(User user) { userDao.add(user); } dao @Override public void add(User user) { // 1 創(chuàng)建 sql 語句 String sql = "insert into t_user values(?,?,?)"; // 2 調(diào)用方法實現(xiàn) Object[] args = { user.getUserId(), user.getUsername(), user.getUstatus() }; int update = jdbcTemplate.update(sql, args); System.out.println(update); } 測試 @Test public void test1() { ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml"); UserService userService = context.getBean("userService", UserService.class); User user = new User(); user.setUserId("1"); user.setUsername("java"); user.setUstatus("a"); userService.addUser(user); }
結(jié)果
3.2 修改
service //修改 public void updateUser(User user) { userDao.updateUser(user); } dao @Override public void updateUser(User user) { // TODO Auto-generated method stub String sql = "update t_user set username=?,ustatus=? where userId=?"; // 2 調(diào)用方法實現(xiàn) Object[] args = { user.getUsername(), user.getUstatus() ,user.getUserId()}; int update = jdbcTemplate.update(sql, args); System.out.println(update); } 測試 @Test public void test2() { ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml"); UserService userService = context.getBean("userService", UserService.class); User user = new User(); user.setUserId("1"); user.setUsername("javaScrip"); user.setUstatus("abc"); userService.updateUser(user); }
3.3 刪除
// 刪除 public void deleteUser(String id) { userDao.deleteUser(id); } @Override public void deleteUser(String id) { String sql="delete from t_user where userId=?"; int update=jdbcTemplate.update(sql, id); System.out.println(update); } @Test public void test3() { ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml"); UserService userService = context.getBean("userService", UserService.class); userService.deleteUser("1"); }
四、查詢
4.1 查詢總記錄數(shù) jdbcTemplate.queryForObject
@Test public void test4() { ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml"); UserService userService = context.getBean("userService", UserService.class); int count = userService.selectUserCount(); System.out.println("數(shù)據(jù)庫中共有記錄:"+count); } //查詢記錄數(shù) public int selectUserCount() { return userDao.selectCount(); } @Override public int selectCount() { String sql = "select count(0) from t_user"; Integer count = jdbcTemplate.queryForObject(sql, Integer.class); return count; }
4.2 查詢返回對象
@Test public void test5() { ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml"); UserService userService = context.getBean("userService", UserService.class); User user=userService.findUserInfo("1"); System.out.println(user); } //查詢對象 public User findUserInfo(String id) { // TODO Auto-generated method stub return userDao.findUserInfo(id); } @Override public User findUserInfo(String id) { String sql = "select userId,username,ustatus from t_user where userId=?"; User user = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<User>(User. class),id); return user; }
4.3 查詢返回集合
@Test public void test6() { ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml"); UserService userService = context.getBean("userService", UserService.class); List<User> list=userService.findAllUser(); System.out.println(list); } //查詢返回集合 public List<User> findAllUser(){ return userDao.findAllUser(); } @Override public List<User> findAllUser() { String sql = "select userId,username,ustatus from t_user"; List<User> list = jdbcTemplate.query(sql, new BeanPropertyRowMapper<User>(User. class)); return list; }
五、批量操作 jdbcTemplate.batchUpdate
5.1 添加
@Test public void test7() { ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml"); UserService userService = context.getBean("userService", UserService.class); List<Object[]> list = new ArrayList<>(); Object[] o1 = { "11", "易語言", "中文"}; Object[] o2 = { "12", "c++", "cc"}; Object[] o3 = { "13", "MySQL", "數(shù)據(jù)庫"}; list.add(o1); list.add(o2); list.add(o3); userService.batchAdd(list); } //批量添加 public void batchAdd(List<Object[]> list){ userDao.batchAdd(list); } @Override public void batchAdd(List<Object[]> list) { String sql = "insert into t_user values(?,?,?)"; int[] ints = jdbcTemplate.batchUpdate(sql, list); System.out.println(ints); }
5.2 修改
@Test public void test8() { ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml"); UserService userService = context.getBean("userService", UserService.class); List<Object[]> list = new ArrayList<>(); Object[] o1 = { "易語言易", "中文語言","11"}; Object[] o2 = { "c++c", "ccccc","12"}; Object[] o3 = {"MySQL+ORACle", "數(shù)據(jù)庫數(shù)據(jù)", "13"}; list.add(o1); list.add(o2); list.add(o3); userService.batchUpdate(list); } //批量修改 public void batchUpdate(List<Object[]> list) { userDao.batchUpdate(list); } @Override public void batchUpdate(List<Object[]> list) { String sql = "update t_user set username=?,ustatus=? where userId=?"; int[] ints = jdbcTemplate.batchUpdate(sql, list); System.out.println(ints); }
5.3 刪除
@Test public void test9() { ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml"); UserService userService = context.getBean("userService", UserService.class); List<Object[]> list = new ArrayList<>(); Object[] o1 = { "11"}; Object[] o2 = { "12"}; Object[] o3 = { "13"}; list.add(o1); list.add(o2); list.add(o3); userService.batchDelete(list); } //批量刪除 public void batchDelete(List<Object[]> list) { userDao.batchDelete(list); } @Override public void batchDelete(List<Object[]> list) { String sql = "delete from t_user where userId=?"; int[] ints = jdbcTemplate.batchUpdate(sql, list); System.out.println(ints); }
到此這篇關(guān)于Java Spring5學(xué)習(xí)之JdbcTemplate詳解的文章就介紹到這了,更多相關(guān)Java Spring5之JdbcTemplate內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MyBatis 源碼分析 之SqlSession接口和Executor類
mybatis框架在操作數(shù)據(jù)的時候,離不開SqlSession接口實例類的作用,下面通過本文給大家實例剖析MyBatis 源碼分析之SqlSession接口和Executor類,需要的朋友參考下吧2017-02-02詳解Spring Boot使用系統(tǒng)參數(shù)表提升系統(tǒng)的靈活性
Spring Boot項目中常有一些相對穩(wěn)定的參數(shù)設(shè)置項,其作用范圍是系統(tǒng)級的或模塊級的,這些參數(shù)稱為系統(tǒng)參數(shù)。這些變量以參數(shù)形式進(jìn)行配置,從而提高變動和擴(kuò)展的靈活性,保持代碼的穩(wěn)定性2021-06-06Java循環(huán)結(jié)構(gòu)之多重循環(huán)及continue?break
這篇文章主要介紹了Java循環(huán)結(jié)構(gòu)之多重循環(huán)及continue?break,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的朋友可以參考一下2022-09-09