SpringBoot学习总结02

Spring 管理bean的优势

使用计算机的目的时进行高效且低耗的计算。
对于面向对象语言来说解决问题,需要科学的运用对象,使之在内存中高效低耗的运行,要达成这样的目的需要一定的经验,所以我们需要借助有经验的设计框架,如spring框架。spring框架睁开眼在多个对象协同作用时,低耦合的方式提高其拓展性。

@Qualifier

在接口实现类存在多个的时候,在注入@Autowired的同时加上@Qualifier注解指定其注入哪个。

DataSource

在java中所有连接池必须遵守datasource规范,可以通过DataSource或缺具体链接池对象。

数据链接池的优点

1.资源的重用
大大减少连接创建和关闭的时候的成本
2.连接管理更加的自由
用户可以自己根据需要调整,自己所需要的连接配置
3.大大的减少系统反应时间
减少创建连接的时间,从减少整体的系统能够反应时间。

案例

SpringBoot学习总结02_第1张图片

接口的定义

package com.cy.pj.goods.dao;
import java.util.List;
import java.util.Map;
public interface GoodsDao {
    List> findGoods();
}

实现类()
finally里代码为关闭conn,stat,rs。
未写出可以自己封装引用。

package com.cy.pj.goods.dao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import javax.sql.DataSource;
import java.sql.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Repository
public class DefaultGoodsDao implements GoodsDao{
   @Autowired
 private DataSource dataSource;
    @Override
 public List> findGoods() {
        Connection conn=null;
        Statement stat=null;
        ResultSet rs=null;
        String sql="select * from tb_goods";
        List> list=new ArrayList<>();
        try{
            conn=dataSource.getConnection();
            stat=conn.createStatement();
            rs=stat.executeQuery(sql);
            ResultSetMetaData rsmd= rs.getMetaData();
            while (rs.next()) {
                list.add(rowsmap(rsmd, rs));
            }
            
            return list;
        }catch (SQLException e){
            e.printStackTrace();
            return null;
            
        }finally{
        }
        
    }
    private Map rowsmap(ResultSetMetaData rsmd,ResultSet rs) throws SQLException{
        int columnCount = rsmd.getColumnCount();
        Map map=new HashMap<>();
        for (int i=1;i<=columnCount;i++){
            map.put(rsmd.getColumnLabel(i),rs.getObject(i));
        }
        return map;
    }
}

测试类

package com.cy.pj.goods.dao;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.List;
import java.util.Map;
@SpringBootTest
public class GoodsDaoTest {
    @Autowired
 private GoodsDao goodsDao;
    @Test
 void testGoodsDao(){
        List> list=goodsDao.findGoods();
        for (Map map:list){
            System.out.println(map);
        }
    }
}

你可能感兴趣的:(SpringBoot学习总结02)