<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # Spring JDBC 簡介 > 原文: [https://javatutorial.net/introduction-to-jdbc-in-spring](https://javatutorial.net/introduction-to-jdbc-in-spring) 在本教程中,您將學習什么是 JDBC 模塊,并希望在閱讀完之后可以找到用例。 ![java-featured-image](https://img.kancloud.cn/05/3e/053ee0bb59842d92359246c98f815e0c_780x330.jpg) 現在,讓我們創建一個代表員工的非常簡單的表。 ```java CREATE TABLE Employee ( ID INT NOT NULL AUTO_INCREMENT, NAME VARCHAR(20) NOT NULL, AGE INT NOT NULL, DEPARTMENT VARCHAR(20) NOT NULL, PRIMARY KEY(ID) ); ``` Spring JDBC Frameworks 處理底層細節,例如初始化連接,執行 SQL 查詢,關閉連接等,因此為我們節省了很多時間和精力。在這種情況下,您可能想知道為我們保留的內容 去做。 好了,我們必須定義連接參數,并指定要執行的 SQL 查詢,最后,我們必須在從數據庫中獲取數據的同時編寫所有迭代的邏輯。 有許多方法和已經編寫好的類可以幫助我們實現 JDBC。 在我們的例子中,我們將堅持經典的 JDBC 模板類。 它將管理所有數據庫通信。 您需要了解有關 JDBC 模板類的哪些知識? 簡而言之,它可以捕獲 JDBC 異常,執行 SQL 查詢和更新語句。 還需要注意的是,JDBC 模板類的所有實例都是線程安全的,這意味著我們可以配置 JDBC 模板類的實例,并將其作為共享引用安全地注入到多個 DAO 中。 如果您不熟悉什么是 DAO,則可以查看[我關于該主題的文章](https://javatutorial.net/what-is-dao-and-how-to-use-it)。 現在到有趣的部分。 讓我們來看看如何實現所有理論。 我們將使用該教程開頭顯示的表格。 `EmployeeDAO.java` ```java package com.tutorialnet; import java.util.List; import javax.sql.DataSource; public interface EmployeeDAO { public void setDataSource(DataSource ds); public void create(String name, Integer age, String department); public Employee getEmployee(Integer id); public List<Employee> getEmployees(); public void delete(Integer id); public void update(Integer id, Integer age, String department); } ``` 這是我們的 DAO 界面。 它包含所有方法聲明,并且所有這些方法聲明都與 CRUD 功能有關。 1. `setDataSource()`:建立數據庫連接。 2. `create()`:將用于在數據庫中創建新的`Employee`條目。 3. `getEmployee()`:將根據提供的 ID 返回一名員工。 4. `getEmployees()`:將返回數據庫中所有雇員的列表。 5. `delete()`:將根據提供的 ID 刪除員工。 6. `update()`:將更新現有員工。 `Employee.java` ```java package com.javatutorial; public class Employee { private Integer id; private String name; private Integer age; private String department; public void setId(Integer id) { this.id = id; } public void setAge(Integer age) { this.age = age; } public void setName(String name) { this.name = name; } public void setDepartment(String department) { this.department = department; } public Integer getId() { return this.id; } public Integer getAge() { return this.age; } public String getName() { return this.name; } public String getDepartment() { return this.department; } } ``` `EmployeeMapper.java` ```java package com.javatutorial; import java.sql.ResultSet; import java.sql.SQLException; import org.springframework.jdbc.core.RowMapper; public class EmployeeMapper implements RowMapper<Employee> { public Employee mapRow(ResultSet rs, int rowNum) throws SQLException { Employee employee = new Employee(); employee.setId(rs.getInt("id")); employee.setName(rs.getString("name")); employee.setAge(rs.getInt("age")); employee.setDepartment(rs.getString("department")); return employee; } } ``` `EmployeeJDBCTemplate.java` ```java package com.javatutorial; import java.util.List; import javax.sql.DataSource; import org.springframework.jdbc.core.JdbcTemplate; public class EmployeeJDBCTemplate implements EmployeeDAO { private DataSource dataSource; private JdbcTemplate jdbcTemplateObject; public void setDataSource(DataSource dataSource) { this.dataSource = dataSource; this.jdbcTemplateObject = new JdbcTemplate(dataSource); } public void create(String name, Integer age, String department) { String SQL = "insert into Employee (name, age, department) values (?, ?)"; jdbcTemplateObject.update( SQL, name, age, department); } public Employee getEmployee(Integer id) { String SQL = "select * from Employee where id = ?"; Employee employee = jdbcTemplateObject.queryForObject(SQL, new Object[]{id}, new EmployeeMapper()); return employee; } public List<Employee> getEmployees() { String SQL = "select * from Employee"; List <Employee> employees = jdbcTemplateObject.query(SQL, new EmployeeMapper()); return employees; } public void delete(Integer id) { String SQL = "delete from Employee where id = ?"; jdbcTemplateObject.update(SQL, id); System.out.println("Deleted Record with ID = " + id ); } public void update(Integer id, Integer age){ String SQL = "update Employee set age = ? where id = ?"; jdbcTemplateObject.update(SQL, age, id); } } ``` JDBC 類定義了我們在上面定義的接口中的所有方法聲明。 `Main.java` ```java package com.javatutorial; import java.util.List; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.tutorialspoint.EmployeeJDBCTemplate; public class Main { public static void main(String[] args) { ApplicationContext context = new ClassPathXmlApplicationContext("Beans.xml"); EmployeeJDBCTemplate employeeJDBCTemplate = (EmployeeJDBCTemplate)context.getBean("employeeJDBCTemplate"); System.out.println("Creating records..." ); employeeJDBCTemplate.create("Jack", 11, "Software engineering"); employeeJDBCTemplate.create("Joanna", 2, "Finance"); employeeJDBCTemplate.create("Derek", 15, "Hardware engineering"); System.out.println("Listing employee entries from the database.."); List<Employee> employees = employeeJDBCTemplate.getEmployees(); for (Employee employee : employees) { System.out.print("ID: " + employee.getId()); System.out.print("Name: " + employee.getName()); System.out.println("Age: " + employee.getAge()); System.out.println("Age: " + employee.getDepartment()); } System.out.println("Updating a record with an id of 1"); employeeJDBCTemplate.update(1, 29, "Marketing"); System.out.println("Displaying information about record with an id of 1"); Employee employee = employeeJDBCTemplate.getEmployee(1); System.out.print("ID: " + employee.getId()); System.out.print("Name : " + employee.getName() ); System.out.println("Age : " + employee.getAge()); ystem.out.println("Department : " + employee.getDepartment()); } } ``` 在這里,我們將調用在接口中定義的所有方法。 `Beans.xml`的配置文件: ```java <?xml version = "1.0" encoding = "UTF-8"?> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd "> <bean id="dataSource" class = "org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name = "driverClassName" value = "com.mysql.jdbc.Driver"/> <property name = "url" value = "jdbc:mysql://localhost:3306/DEMO"/> <property name = "username" value = "root"/> <property name = "password" value = "admin123"/> </bean> <bean id = "employeeJDBCTemplate" class = "com.javatutorial.EmployeeJDBCTemplate"> <property name = "dataSource" ref = "dataSource" /> </bean> </beans> ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看