SpringBoot03

编程

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;

}

}

 

以上是 SpringBoot03 的全部内容, 来源链接: utcz.com/z/511415.html

回到顶部