1. 程式人生 > 程式設計 >JdbcTemplate方法介紹與增刪改查操作實現

JdbcTemplate方法介紹與增刪改查操作實現

JdbcTemplate介紹

為了使 JDBC 更加易於使用,Spring 在 JDBCAPI 上定義了一個抽象層,以此建立一個JDBC存取框架,Spring Boot Spring Data-JPA。

作為 SpringJDBC 框架的核心,JDBC 模板的設計目的是為不同型別的JDBC操作提供模板方法. 每個模板方法都能控制整個過程,並允許覆蓋過程中的特定任務。

通過這種方式,可以在儘可能保留靈活性的情況下,將資料庫存取的工作量降到最低。

JdbcTemplate方法介紹

JdbcTemplate主要提供以下五類方法:

1、execute方法:可以用於執行任何SQL語句,一般用於執行DDL語句;

Execute、executeQuery、executeUpdate

2、update方法及batchUpdate方法:update方法用於執行新增、修改、刪除等語句;batchUpdate方法用於執行批處理相關語句 SQL SERVCER(GO SQL語句 GO) ;

3、query方法及queryForXXX方法:用於執行查詢相關語句;

4、call方法:用於執行儲存過程、函式相關語句。

JdbcTemplate實現增刪改查

JdbcTemplate新增資料

1. 使用配置實現

1.1 建立實體類

public class Account {
 private Integer accountid;
 private String accountname;
 private Double balance;

 public Integer getAccountid() {
 return accountid;
 }

 public void setAccountid(Integer accountid) {
 this.accountid = accountid;
 }

 public String getAccountname() {
 return accountname;
 }

 public void setAccountname(String accountname) {
 this.accountname = accountname;
 }

 public Double getBalance() {
 return balance;
 }

 public void setBalance(Double balance) {
 this.balance = balance;
 }
}

實體類

1.2 建立Dao層

//查詢所有所有賬戶
public List<Account> getAllAccounts();

.3 建立Dao層實現類並繼承JdbcDaoSupport介面

public class AccountDaoImpl extends JdbcDaoSupport implements AccountDao {


 @Override
 public List<Account> getAllAccounts() {
 JdbcTemplate jdbcTemplate = getJdbcTemplate();
 String sql = "select * from accounts";

 //RowMapper:介面 封裝了記錄的行對映關係
 List<Account> lists = jdbcTemplate.query(sql,new RowMapper<Account>() {


  @Override
  public Account mapRow(ResultSet resultSet,int i) throws SQLException {
  //建立Account物件
  Account account = new Account();
  //從ResultSet中解資料保到Accounts物件中
  account.setAccountid(resultSet.getInt("accountid"));
  account.setAccountname(resultSet.getString("accountname"));
  account.setBalance(resultSet.getDouble("balance"));

  return account;
  }
 });

return account;

}

實現查詢方法

1.4建立Service層

//查詢所有所有賬戶
public List<Account> getAllAccounts();

1.5建立Service層實現類

AccountDao accountDao;
@Override
public List<Account> getAllAccounts() {
 List<Account> allAccounts = accountDao.getAllAccounts();
 return allAccounts;
}

1.6 編寫applicationContext.xml檔案

<!--識別到配置檔案-->
<context:property-placeholder location="classpath:jdbc.properties"/>
<!--配置資料來源-->
<!--spring內建的資料來源:提供連線的,不負責管理,使用連線池-->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
 <property name="driverClassName" value="${jdbc.driver}"></property>
 <property name="url" value="${jdbc.url}"></property>
 <property name="username" value="${jdbc.username}"></property>
 <property name="password" value="${jdbc.password}"></property>
</bean>
<!--構建jdbcTemplate-->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
 <property name="dataSource" ref="dataSource"></property>
</bean>

<bean id="accountDao" class="cn.spring.accounttest.dao.impl.AccountDaoImpl">
 <property name="jdbcTemplate" ref="jdbcTemplate"></property>
</bean>
<!--Service-->
<bean id="accountService" class="cn.spring.accounttest.service.impl.AccountServiceImpl">
 <property name="accountDao" ref="accountDao"></property>
</bean>

applicationContext.xml

1.7編寫測試類

@Test
public void getAllAccount(){
 ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
 //從spring容器中獲取Service物件
 AccountService accountService = (AccountService)context.getBean("accountService");
 List<Account> allAccounts = accountService.getAllAccounts();
 for (Account account:allAccounts) {
 System.out.println("賬戶名:"+account.getAccountname()+",餘額為:"+account.getBalance());
 }
}

查詢測試類

2. 使用註解方式實現

2.1 建立實體類

實體類

2.2 建立Dao層

查詢方法

2.3 建立Dao層實現類

@Repository
public class AccountDaoImpl implements AccountDao {

 @Autowired
 private JdbcTemplate jdbcTemplate;

 Account account = new Account();
 @Override
 public List<Account> getAllAccounts() {

  String sql = "select * from accounts";

  
  //自動對映
  RowMapper<Account> rowMapper = new BeanPropertyRowMapper<>(Account.class);
  List<Account> query = jdbcTemplate.query(sql,rowMapper);
  for (Account account : query) {
   System.out.println(account);
  }
  return query;
  }
 }

Dao實現類

2.4建立Service層

查詢方法

2.5建立Service層實現類

實現查詢方法

2.6編寫applicationContext.xml檔案

<!--掃描註解:包掃描器-->
<context:component-scan base-package="cn.spring"/>

<!--識別到配置檔案-->
<context:property-placeholder location="classpath:jdbc.properties"/>
<!--配置資料來源-->
<!--spring內建的資料來源:提供連線的,不負責管理,使用連線池-->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
 <property name="driverClassName" value="${jdbc.driver}"></property>
 <property name="url" value="${jdbc.url}"></property>
 <property name="username" value="${jdbc.username}"></property>
 <property name="password" value="${jdbc.password}"></property>
</bean>
<!--構建jdbcTemplate-->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
 <property name="dataSource" ref="dataSource"></property>
</bean>

applicationContext.xml

2.7編寫測試類

查詢測試類

JdbcTemplate實現增刪改操作

使用註解方式實現,配置式同新增操作

1.建立Dao層

//刪除賬戶
public int delAccount(int id);

//新增使用者
public int addAccount(Account account);

//修改賬戶
public int updaAccount(Account account);

增刪改方法

2.建立Dao曾實現類

@Override
 public int delAccount(int id) {

  String sql="delete from accounts where accountid=2";
  int count = jdbcTemplate.update(sql);
  return count;
 }

@Override
 public int addAccount(Account account) {
  String sql="insert into Accounts(accountname,balance) values(?,?)";
  int count = jdbcTemplate.update(sql,account.getAccountname(),account.getBalance());
  return count;
 }

 @Override
 public int updaAccount(Account account) {
  String sql="update accounts set accountname=?,balance=? where accountid=?";
  int count = jdbcTemplate.update(sql,account.getBalance(),account.getAccountid() );
  return count;
 }

增刪改方法實現類

3. 建立Service層

4. 建立Service層實現類

5. 編寫applicationContext.xml檔案

6. 編寫測試類

@Test
public void delAccount(){
 ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
 AccountService accountService =(AccountService) context.getBean("accountServiceImpl");
 int i = accountService.delAccount(2);
 if (i>0){
  System.out.println("刪除成功");
 }
}

@Test
public void addAccount(){
 ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
 AccountService accountServiceImpl = (AccountService) context.getBean("accountServiceImpl");
 Account account=new Account();
 account.setAccountname("劉磊");
 account.setBalance(Double.valueOf(784));
 int count = accountServiceImpl.addAccount(account);
 if (count>0){
  System.out.println("新增成功");
 }
}

@Test
public void updaAcccount(){
 ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
 AccountService accountServiceImpl = (AccountService) context.getBean("accountServiceImpl");
 Account account=new Account();
 account.setAccountid(10);
 account.setAccountname("劉磊");
 account.setBalance(Double.valueOf(784));
 int count = accountServiceImpl.updaAccount(account);
 if (count>0){
  System.out.println("修改成功");
 }
}

增刪改測試類

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對我們的支援。