SpringBoot03

SpringBoot数据访问
关系型数据库访问
1.连接池
dbcp2、c3p0、druid、HikariCP、proxool等
- 依赖连接池jar包、驱动的jar包
 - spring-boot-starter-jdbc默认会追加连接池(1.x tomcat-jdbc 2.x hikaricp)
 - application.properties或者application.yml中配置 数据库连接参数
 - 在启动类开启自动配置@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对象,使用时直接注入应用。
- 创建连接池对象(参考上述过程)
 - 根据表定义实体类
 - 定义Dao接口
 编写Dao实现类,注入JdbcTemplate
spring.datasource.username=rootspring.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
@Repositorypublic 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:
@Repositorypublic 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;
    }
}
以上是 SpringBoot03 的全部内容, 来源链接: utcz.com/z/511415.html
