Spring 中 JdbcTemplate 使用

JdbcTemplate 的使用

一、添加 Maven 依賴

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>5.1.5.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
    <version>5.1.5.RELEASE</version>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.6</version>
</dependency>

二、創建數據庫 SQL

CREATE TABLE user(id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(29), sex VARCHAR(1), age INT);

三、創建 Spring 配置文件

<?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.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

    <!-- 配置一個數據庫的操作模板:JdbcTemplate -->
    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource" ref="dataSource"/>
    </bean>

    <!-- Spring 內置數據源 -->
    <bean  id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql:///test"/>
        <property name="username" value="root"/>
        <property name="password" value="123456"/>
    </bean>
    
</beans>

四、使用 JdbcTemplate 進行保存、更新、刪除操作

// 保存數據
public void inster() {
    ApplicationContext applicationContext = new ClassPathXmlApplicationContext("Application.xml");
    JdbcTemplate jdbcTemplate = (JdbcTemplate) applicationContext.getBean("jdbcTemplate");
    jdbcTemplate.update("insert into user(name,sex,age)values(?,?,?)","小明","男",15);
}
// 更新數據
public void update() {
    ApplicationContext applicationContext = new ClassPathXmlApplicationContext("Application.xml");
    JdbcTemplate jdbcTemplate = (JdbcTemplate) applicationContext.getBean("jdbcTemplate");
    jdbcTemplate.update("update user set age = ? where id = ?",18,1);
}
// 刪除操作
public void delete() {
    ApplicationContext applicationContext = new ClassPathXmlApplicationContext("Application.xml");
    JdbcTemplate jdbcTemplate = (JdbcTemplate) applicationContext.getBean("jdbcTemplate");
    jdbcTemplate.update("delete from user where id = ?",1);
}

五、使用 JdbcTemplate 進行查詢操作

      創建與數據庫表對應的 Bean

public class User {
    private int id;
    private String name;
    private String sex;
    private int age;
	// 省略 Set、Get 方法
}

      創建映射類

public class UserRowMapper implements RowMapper<User> {

    public User mapRow(ResultSet resultSet, int i) throws SQLException {
        User user = new User();
        user.setId(resultSet.getInt("id"));
        user.setName(resultSet.getString("name"));
        user.setSex(resultSet.getString("sex"));
        user.setAge(resultSet.getInt("age"));
        return user;
    }
}

      查詢操作

public void query() {
    ApplicationContext applicationContext = new ClassPathXmlApplicationContext("Application.xml");
    JdbcTemplate jdbcTemplate = (JdbcTemplate) applicationContext.getBean("jdbcTemplate");
    List<User> userList = jdbcTemplate.query("select * from user where age > ? ", new UserRowMapper(), 10);
}

在 Dao 層中使用 JdbcTemplate

一、創建 Dao 層接口

public interface IUserDao {

    void inster();
}

二、創建 Dao 層實現類

public class UserDaoImpl implements IUserDao {
    private JdbcTemplate jdbcTemplate;


    public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
        this.jdbcTemplate = jdbcTemplate;
    }

    public void inster() {
        jdbcTemplate.update("insert into user(name,sex,age)values(?,?,?)","小明4","男",15);
    }
}

三、Spring 配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
                http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

    <bean id="userDao" class="chu.yi.bo.UserDaoImpl">
        <property name="jdbcTemplate" ref="jdbcTemplate"/>
    </bean>

    <!-- 配置一個數據庫的操作模板:JdbcTemplate -->
    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource" ref="dataSource"/>
    </bean>

    <!-- Spring 內置數據源 -->
    <bean  id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql:///test"/>
        <property name="username" value="root"/>
        <property name="password" value="123456"/>
    </bean>

</beans>

四、測試

public class TestSpring {

    public static void main(String[] args) {
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("Application.xml");
        UserDaoImpl userDao = (UserDaoImpl) applicationContext.getBean("userDao");
        userDao.inster();
    }
}

Dao 層繼承 JdbcDaoSupport 抽象類

      每個 Dao 層實現類都需要手動依賴注入 JdbcTemplate 屬性,爲了省略這些重複操作,Spring 提供了 JdbcDaoSupport 抽象類,Dao 層實現類繼承該抽象類後,就無需再手動的依賴注入 JdbcTemplate 屬性,而是調用 getJdbcTemplate() 方法來獲取 JdbcTemplate 實例。

一、Dao 層接口

public interface IUserDao {

    void inster();
}

二、Dao 層實現類

public class UserDaoImpl extends JdbcDaoSupport implements IUserDao {

    public void inster() {
        getJdbcTemplate().update("insert into user(name,sex,age)values(?,?,?)","小明4","男",15);
    }
}

三、Spring 配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
                http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

    <bean id="userDao" class="chu.yi.bo.UserDaoImpl">
        <property name="dataSource" ref="dataSource"/>
    </bean>

    <!-- Spring 內置數據源 -->
    <bean  id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql:///test"/>
        <property name="username" value="root"/>
        <property name="password" value="123456"/>
    </bean>

</beans>

四、測試

public class TestSpring {

    public static void main(String[] args) {
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("Application.xml");
        UserDaoImpl userDao = (UserDaoImpl) applicationContext.getBean("userDao");
        userDao.inster();
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章