19°

SpringBoot-03

SpringBoot数据访问

关系型数据库访问

1.连接池

dbcp2、c3p0、druid、HikariCP、proxool等

  1. 依赖连接池jar包、驱动的jar包
  2. spring-boot-starter-jdbc默认会追加连接池(1.x tomcat-jdbc 2.x hikaricp)
  3. application.properties或者application.yml中配置 数据库连接参数
  4. 在启动类开启自动配置@SpringBootApplication

DataSourceAutoConfiguration自动配置组件规则:

  • 默认按创建Hikari,然后tomcat,dbcp2顺序执行
  • 如果需要创建指定类型连接池,可以采用下面配置 spring.datasource.type=xxx,或者从jdbc中把hikaricpjar包删除调
  •   <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-jdbc</artifactId>
                <exclusions>
                    <exclusion>
                        <groupId>com.zaxxer</groupId>
                        <artifactId>HikariCP</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

     

2.Spring DAO(JdbcTemplate)

JdbcTemplateAutoConfiguration自动配置组件创建JdbcTemplate对象,使用时直接注入应用。

  1. 创建连接池对象(参考上述过程)
  2. 根据表定义实体类
  3. 定义Dao接口
  4. 编写Dao实现类,注入JdbcTemplate

spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.url=jdbc:mysql://localhost:3306/myemployees?useUnicode=true&characterEncoding=utf-8&useSSL=false
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
@Repository
public class BankInfoImpl implements BankInfo {
    @Autowired
    JdbcTemplate jdbcTemplate;
    @Override
    public List<Bank> findAll() {
        String sql = "select * from bank";
        RowMapper<Bank> bankRowMapper = new BeanPropertyRowMapper<>(Bank.class);
        List<Bank> bankList = jdbcTemplate.query(sql, bankRowMapper);
        return bankList;
    }
}

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

引jar包:

<dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.1.1</version>
        </dependency>
  • 自动检测现有的DataSource
  • 将创建并注册SqlSessionFactory的实例,该实例使用SqlSessionFactoryBean将该DataSource作为输入进行传递
  • 将创建并注册从SqlSessionFactory中获取的SqlSessionTemplate的实例。
  • 自动扫描您的mappers,将它们链接到SqlSessionTemplate并将其注册到Spring上下文,以便将它们注入到您的bean中。

在启动类配置@MapperScan注解,然后就可以使用SqlSessionTemplate来获取注解的sql

mapper映射文件可以通过2中方式来做:1.直接通过注解方式来2.通过xml配置文件来映射

public interface BankMapper {
    @Select("select * from bank where id=#{id}")
    List<Bank> findAll(@Param("id") int id);
}

2着区别是:前者快速、简洁,后者可以动态生成sql,还可以配置mybatis逆向插件生成代码。

4.Spring+JPA(hibernate)

引jar包:

 <!--JPA-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>

使用jpa:

@Repository
public interface AccountRepository extends JpaRepository<Account,Integer> {
    List<Account> findAll();
}
@Entity
@Table(name = "bank")
public class Account implements Serializable {
    @Id
    @Column(name="id")
    private int id;
@Column(name = "name")
private String name;

@Column(name = "money")
private Double money;

public int getId() {
    return id;
}

public void setId(int id) {
    this.id = id;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public Double getMoney() {
    return money;
}

public void setMoney(Double money) {
    this.money = money;
}

}

 

本文由【android-key】发布于开源中国,原文链接:https://my.oschina.net/quguangle/blog/3136577

全部评论: 0

    我有话说: