Spring整合JDBCTemplate

  1. 什麼是JDBCTemplate?

    1. Spring框架對JDBC進行封裝,使用JDBCTemplate方便實現對數據的操作
  2. 準備工作

    1. 引入相關的依賴

    2. 在Spring配置文件配置數據庫連接池

      <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close">
          <property name="url" value="jdbc:mysql://localhost:3306"/>
          <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
          <property name="username" value="root"/>
          <property name="password" value="154269564"/>
      </bean>
      
    3. 配置JDBCTemplate對象,注入dataSource

      <!--    jdbcTemplate對象-->
          <bean id="JdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
      <!--        注入dataSource-->
      <!--        JdbcTemplate源碼中,使用的set注入-->
              <property name="dataSource" value="dataSource"/>
          </bean>
      
    4. 創建service類,創建dao類,在dao注入jdbcTemplate對象

      1. application.xml配置文件

        <!--    開啓組件掃描-->
            <context:component-scan base-package="com.qi"></context:component-scan>
        
      2. Dao

        public interface BookDao {
        
        }
        
        @Repository
        public class BookDaoImpl implements BookDao{
            //注入jdbcTemplate
            @Autowired
            JdbcTemplate jdbcTemplate;
        }
        
      3. Service

        @Service
        public class BookService {
            //注入Dao
            @Autowired
            BookDao bookDo;
        }
        

    JDBCTempl操作數據庫(添加)

    1. 對應數據庫創建實體類

      @Data
      @AllArgsConstructor
      @NoArgsConstructor
      public class User {
          private int userId;
          private String username;
          private String ustatus;
      }
      
    2. 編寫Service和Dao

      1. 在dao進行數據庫添加操作

      2. 調用JDBCTemplate對象中的update方法實現添加操作
        在這裏插入圖片描述

        • 有兩個參數
        • 第一個參數,sql語句
        • 第二個參數:可變參數,設置sql語句值
      public interface UserDao {
          public void add(User user);
      }
      
      @Repository
      public class UserDaoImpl implements UserDao {
          //注入jdbcTemplate
          @Autowired
          JdbcTemplate jdbcTemplate;
      
          public void add(User user) {
              //創建sql語句
              String string = "insert into t_user values(?,?,?)";
      //        //調用方法實現
              Object[] args = {user.getUserId(),user.getUsername(),user.getUstatus()};//可變參數
              int update = jdbcTemplate.update(string, args);
      
              System.out.println(update);
          }
      
      }
      
      public interface UserService {
          public void add(User user);
      }
      
      @Service("UserService")//變爲一個UserService的bean
      public class UserServiceImpl implements UserService{
      
          @Autowired
          UserDao userDao;
      
          public void add(User user) {
              userDao.add(user);
          }
      }
      
    3. 測試類

      public class TestDemo {
          @Test
          public void TestUser(){
              ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
              UserServiceImpl userService = context.getBean("UserService", UserServiceImpl.class);
              User user = new User();
              user.setUserId(Integer.parseInt("3"));
              user.setUsername("zhangsan");
              user.setUstatus("a");
              userService.add(user);
          }
      }
      

    JDBCTempl操作數據庫(添加)

    public void update(User user) {//修改
        //創建sql語句
        String string = "update t_user set username=?,ustatus=? where user_id=?";
        //調用方法實現
        Object[] args = {user.getUsername(),user.getUstatus(),user.getUserId()};//可變參數
        int update = jdbcTemplate.update(string, args);
        System.out.println(update);
    }
    
    public void delete(int id) {//刪除
        //創建sql語句
        String string = "delete from t_user where user_id=?";
        //調用方法實現
        int delete = jdbcTemplate.update(string, id);
        System.out.println(delete);
    }
    

    測試類:

    @Test
    public void Test_Update(){
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        UserServiceImpl userService = context.getBean("UserService", UserServiceImpl.class);
        User user = new User();
        user.setUserId(Integer.parseInt("3"));
        user.setUsername("lisi");
        user.setUstatus("b");
        userService.update(user);
    }
    @Test
    public void Test_Delete(){
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        UserServiceImpl userService = context.getBean("UserService", UserServiceImpl.class);
        userService.delete(2);
    }
    

    JDBCTempl操作數據庫(查詢返回某個值)

    [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-FyTxchjw-1593745790603)(Spring.assets/image-20200703004159898.png)]

    • 兩個參數
    • 參數1:sql語句
    • 參數2:返回類型Class
    //查詢表中的記錄數
    public int selectCount() {
        String sql = "select count(*) from t_user";
        Integer query = jdbcTemplate.queryForObject(sql, Integer.class);
        return query;
    }
    
    @Test
    public void Test_Query(){
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        UserServiceImpl userService = context.getBean("UserService", UserServiceImpl.class);
        int count = userService.selectCount();
        System.out.println(count);
    }
    

    JDBCTempl操作數據庫(查詢返回對象)

    1. 場景:查詢圖書詳情(返回一個Book對象)
    2. JDBCTempl實現查詢返回對象

在這裏插入圖片描述

  • 三個參數
  • 參數1:sql語句
  • 參數2:RowMapper,是一個接口,返回不同類型數據,時用這個接口裏面實現類完成數據的封裝
  • 參數3:可變參數,sql語句值
public User findUser(int id) {
    String sql = "select * from t_user where user_id=?";
    User user = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<User>(User.class), id);
    return user;
}
@Test
public void Test_findUser(){
    ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
    UserServiceImpl userService = context.getBean("UserService", UserServiceImpl.class);
    User user = userService.findUser(1);
    System.out.println(user);
}

JDBCTempl操作數據庫(查詢返回集合)

  1. 場景:查詢圖書列表分頁

  2. JDBCTempl實現查詢返回集合

    [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-KwhwZNeo-1593745790611)(Spring.assets/image-20200703005748274.png)]

    • 三個參數:
    • 參數1:sql語句
    • 參數2:RowMapper,是一個接口,返回不同類型數據,時用這個接口裏面實現類完成數據的封裝
    • 參數3;sql語句值,可以省略不寫
public List<User> findAllUser() {
    String sql = "select * from t_user";
    List<User> query = jdbcTemplate.query(sql, new BeanPropertyRowMapper<User>(User.class));
    return query;
}
@Test
public void Test_findAllUser(){
    ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
    UserServiceImpl userService = context.getBean("UserService", UserServiceImpl.class);
    List<User> allUser = userService.findAllUser();
    System.out.println(allUser);
}

JdbcTemplate 操作數據庫(批量操作)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章