使用Spring JDBC連接數據庫(以SQL Server為例)


一、配置Spring JDBC

1.導入相關jar包

(略)

2.配置文件applicationContext.xml

<?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">

    <!-- 配置數據源 -->
    <bean id="dataSource"
        class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="com.microsoft.sqlserver.jdbc.SQLServerDriver" />
        <!-- 驅動類名 -->
        <property name="url" value="jdbc:sqlserver://127.0.0.1:1433;databaseName=news" />
<!-- url訪問地址 --> <property name="username" value="sa" /><!-- 鏈接數據庫的用戶名 --> <property name="password" value="12345yehuan" /><!-- 鏈接數據庫的密碼 --> </bean>
<!-- 配置Jdbc模板 --> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <!-- 默認必須使用數據源注入值 --> <property name="dataSource" ref="dataSource"></property> </bean> <!-- 配置id為userDAO的Bena --> <bean id="userDAO" class="com.springmvc.controller.UserDAOImpl"> <!-- 將jdbcTemplate實例注入到userDAO的實例中來 --> <property name="jdbcTemplate" ref="jdbcTemplate"></property> </bean> </beans>

定義JdbcTemplate時,需要將dataSource注入到JdbcTemplate中,對於其他需要使用JdbcTemplate的Bean,也需要將JdbcTemplate注入到該Bean中(通常注入到數據訪問層Dao類中,在Dao中進行與數據庫相關的操作,如上方配置中的userDAO Bean)。

3.操作示例

用戶(老師)類:

package com.springmvc.controller;

public class User {
    private int id;            //用戶id
    private String userName;    //用戶名
    private String password;    //用戶密碼
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    //重寫toString方法
    @Override
    public String toString() {
        return "User對象:"+id+" --- " +userName+" -- "+password;
    }
    
}

 

UserDAOImpl類:

主要進行對數據庫的相關操作。

package com.springmvc.controller;

import java.util.List;

import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;

public class UserDAOImpl {

    // 聲明JdbcTemplate屬性及其setter方法
    private JdbcTemplate jdbcTemplate;

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

    // 添加用戶的實現方法
    public int addUser(User user) {
        String sql = "insert into teacher(userName,password) values(?,?)";
        // 使用數組來存儲SQL語句中的參數
        Object[] object = new Object[] { user.getUserName(), user.getPassword() };
        // 執行添加操作,返回的是受影響的記錄條數
        int result = jdbcTemplate.update(sql, object);
        return result;
    }

    // 修改用戶的實現方法
    public int updateUser(User user) {
        String sql = "update teacher set userName=?,password=? where id=?";
        // 使用數組來存儲SQL語句中的參數
        Object[] params = new Object[] { user.getUserName(), user.getPassword(), user.getId() };
        // 執行修改操作,返回的是受影響的記錄條數
        int result = jdbcTemplate.update(sql, params);
        return result;
    }

    // 刪除用戶的實現方法
    public int deleteUser(int id) {
        String sql = "delete from teacher where id=?";
        // 執行刪除操作,返回的是受影響的記錄條數
        int result = jdbcTemplate.update(sql, id);
        return result;
    }

    // 通過id查詢單個用戶的實現方法
    public User findUserById(int id) {
        // 定義單個查詢的SQL語句
        String sql = "select * from teacher where id=?";
        // 創建一個新的BeanPropertyRowMapper對象,將結果集通過Java的反射機制映射到Java對象中
        RowMapper<User> rowMapper = new BeanPropertyRowMapper<User>(User.class);
        // 將id綁定到SQL語句中,並通過RowMapper返回一個Object類型的對象
        return this.jdbcTemplate.queryForObject(sql, rowMapper, id);
    }

    // 查詢所有用戶的實現方法
    public List<User> findAllUser() {
        // 查詢所有用戶的SQL語句
        String sql = "select * from teacher";
        // 創建一個新的BeanPropertyRowMapper對象
        RowMapper<User> rowMapper = new BeanPropertyRowMapper<User>(User.class);
        // 執行靜態的SQL查詢,並通過RowMapper返回List集合類型的結果
        return this.jdbcTemplate.query(sql, rowMapper);
    }

}

 

測試類:

這里通過JUnit測試。

package com.ssm.test;

import java.util.List;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.jdbc.core.JdbcTemplate;

import com.springmvc.controller.UserDAOImpl;
import com.springmvc.controller.User;

public class TestJdbcTemplate {
    public static void main(String[] args) {
        //初始化Spring容器,加載applicationContext.xml文件
        ApplicationContext ctx= new ClassPathXmlApplicationContext("applicationContext.xml");
        //通過容器獲取JdbcTemplate的實例
        JdbcTemplate jdbcTemplate=(JdbcTemplate) ctx.getBean("jdbcTemplate");
        //定義SQL語句
        String sql="create table user(id int primary key auto_increment, userName varchar(20),password varchar(32))";
        //使用execute()方法執行SQL語句創建一個user用戶表
        jdbcTemplate.execute(sql);
        System.out.println("用戶表user創建成功!");
    }
    
    @Test
    public void addUserTest() {
        //初始化Spring容器,加載applicationContext.xml文件
        ApplicationContext ctx= new ClassPathXmlApplicationContext("applicationContext.xml");
        //通過容器獲取UserDAOImpl的實例
        UserDAOImpl UserDAOImpl=(UserDAOImpl) ctx.getBean("UserDAOImpl");
        //創建User對象,並向user中添加數據
        User user=new User();
        user.setUserName("yzpc");
        user.setPassword("yzpc");
        //執行addUser方法,並獲取返回結果
        int result=UserDAOImpl.addUser(user);
        if (result>0) {
            System.out.println("成功向數據表中插入了 "+result+" 條記錄!");
        }else {
            System.out.println("往數據表中插入數據失敗!");
        }
    }
    
    @Test
    public void updateUserTest() {
        //初始化Spring容器,加載applicationContext.xml文件
        ApplicationContext ctx= new ClassPathXmlApplicationContext("applicationContext.xml");
        //通過容器獲取UserDAOImpl的實例
        UserDAOImpl UserDAOImpl=(UserDAOImpl) ctx.getBean("UserDAOImpl");
        //創建User對象,並向user中添加數據
        User user=new User();
        user.setId(1);
        user.setUserName("yzpc");
        user.setPassword("123456");
        //執行updateUser方法,並獲取返回結果
        int result=UserDAOImpl.updateUser(user);
        if (result>0) {
            System.out.println("成功修改了 "+result+" 條記錄!");
        }else {
            System.out.println("修改操作執行失敗!");
        }
    }
    
    @Test
    public void deleteUserTest() {
        //初始化Spring容器,加載applicationContext.xml文件
        ApplicationContext ctx= new ClassPathXmlApplicationContext("applicationContext.xml");
        //通過容器獲取UserDAOImpl的實例
        UserDAOImpl UserDAOImpl=(UserDAOImpl) ctx.getBean("UserDAOImpl");
        //執行deleteUser方法,並獲取返回結果
        int result=UserDAOImpl.deleteUser(1);
        if (result>0) {
            System.out.println("成功刪除了 "+result+" 條記錄!");
        }else {
            System.out.println("刪除操作執行失敗!");
        }
    }
    
    @Test
    public void findUserByIdTest() {
        //初始化Spring容器,加載applicationContext.xml文件
        ApplicationContext ctx= new ClassPathXmlApplicationContext("applicationContext.xml");
        //通過容器獲取UserDAOImpl的實例
        UserDAOImpl UserDAOImpl=(UserDAOImpl) ctx.getBean("UserDAOImpl");
        //執行findUserById方法,獲取User對象
        User user=UserDAOImpl.findUserById(1);
        System.out.println(user);
    }
    
    @Test
    public void findAllUserTest() {
        //初始化Spring容器,加載applicationContext.xml文件
        ApplicationContext ctx= new ClassPathXmlApplicationContext("applicationContext.xml");
        //通過容器獲取UserDAOImpl的實例
        UserDAOImpl UserDAOImpl=(UserDAOImpl) ctx.getBean("UserDAOImpl");
        //執行findAllUser方法,獲取User對象的集合
        List<User> users=UserDAOImpl.findAllUser();
        //循環輸出集合中的對象
        for (User user : users) {
            System.out.println(user);
        }
    }
    
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM