天天看点

Spring框架(十五)SpringBoot框架+SpringBoot数据访问

目录

SpringBoot数据访问

关系型数据库访问

非关系型数据库访问

SpringBoot数据访问

关系型数据库访问

1.连接池DataSource

Oracle、MySQL、DB2等

dbcp2、c3p0、druid、HikariCP、proxool等
    连接池jar包、驱动包
    spring-boot-starter-jdbc引入会默认追加连接池(1.x tomcat-jdbc连接池、2.x hikari连接池)
    在application.properties定义连接参数
    在启动类开启自动配置@SpringBootApplication

DataSourceAutoConfiguration自动配置组件规则:
    默认按创建Hikari,然后tomcat,dbcp2顺序执行

    如果需要创建指定类型连接池,可以采用下面配置

    spring.datasource.type=xxx 

2.Spring DAO(JdbcTemplate)

JdbcTemplateAutoConfiguration自动配置组件创建JdbcTemplate对象,使用时直接注入应用。
    创建连接池对象(参考上述过程)
    根据表定义实体类
    定义Dao接口

    编写Dao实现类,注入JdbcTemplate

    @Repository public class JdbcDeptDao implements DeptDao {      @Autowired     private JdbcTemplate jdbcTemplate;      public List<Dept> findAll() {         String sql = "select deptno,dname name,loc from dept";         RowMapper<Dept> rowMapper =              new BeanPropertyRowMapper<Dept>(Dept.class);         return jdbcTemplate.query(sql, rowMapper);     }  } 

3.Spring+MyBatis(mybatis-spring整合包)

<dependency>     <groupId>org.mybatis.spring.boot</groupId>     <artifactId>mybatis-spring-boot-starter</artifactId>     <version>1.3.2</version> </dependency> 

    创建连接池对象(参考上述过程)
    根据表定义实体类

    定义Mapper接口+SQL定义

    public interface EmpMapper {     @Select("select * from emp")     public List<Emp> findAll(); } 

    在启动类前加@MapperScan标记扫描Mapper接口

    @SpringBootApplication @MapperScan(basePackages={"cn.xdl.mapper"})//扫描指定包接口产生Mapper对象放到Spring容器 public class RunBoot {     //... ... } 

4.Spring+JPA(hibernate)

<dependency>     <groupId>org.mybatis.spring.boot</groupId>     <artifactId>spring-boot-starter-data-jpa</artifactId>     <version>1.3.2</version> </dependency> 

    创建连接池对象(参考上述过程)

    根据表定义实体类,追加与表映射信息

    @Entity @Table(name="xdl_receive_address") public class Address implements Serializable{      @Id     @Column(name="id")     private Integer id;      @Column(name="user_id")     private Integer userId;      @Column(name="receive_name")     private String  receiveName;      @Column(name="province")     private String  province;      @Column(name="address")     private String  address;      //... ... } 

    定义Repository接口,可以选择继承JpaRepository、PagingAndSortingRepository、CrudRepository等父接口

    public interface AddressRepository extends JpaRepository<Address, Integer>{ } 

    获取Spring容器调用
           

-5.Spring+Hibernate(以后讲)

非关系型数据库访问

Redis、MongoDB

    1.Spring+Redis(RedisTemplate)

    2.Spring+MongoDB(MongoTemplate)
           

继续阅读