数据库 表listen java_还不会做数据处理?带给你一份数据处理详细教程

SpringBoot与数据访问

SpringBoot的数据处理

JDBC

MyBatis

JPA(Java Persistence API)

Spring Data

JPA与Spring Data

整合JPA

e82a999e844aba79566fb77ff2eb70e7.png

SpringBoot的数据处理

在数据访问层,无论SQL还是NOSQL,SpringBoot默认采用整合Spring Data的方式进行统一处理.添加大量自动配置,屏蔽很多设置.

引入xxxTemplate,xxxRepository来简化我们对数据的访问操作

JDBC

引入starter

spring-boot-starter-jdbc

org.springframework.bootgroupId> spring-boot-starter-jdbcartifactId> dependency> mysqlgroupId> mysql-connector-javaartifactId> runtimescope> dependency>

配置application.yml

spring: datasource: username: root password: 123456 url: jdbc:mysql://192.168.32.251:3306/jdbc driver-class-name: com.mysql.cj.jdbc.Driver

默认使用org.apache.tomcat.jdbc.pool.DataSource作为数据源

数据源的相关配置都在DataSourceProperties里面

自动配置原理

org.springframework.boot.autoconfigure.jdbc1.DataSourceConfiguration,根据配置创建数据源,默认使用tomcat连接池,可以使用spring.datasource.type指定自定义的数据源类型

2.SpringBoot默认支持:org.apache.tomcat.jdbc.pool.DataSource,HikaraDataSource,org.apache.commons.dbcp.BasicDataSource,org.apache.commons.dbcp2.BasicDataSource

3.自定义数据源类型

@Configuration @ConditionalOnMissingBean({DataSource.class}) @ConditionalOnProperty( name = {"spring.datasource.type"} ) static class Generic { Generic() { } @Bean public DataSource dataSource(DataSourceProperties properties) { // 使用DataSourceBuilder创建数据源,利用反射创建相应type的数据源,并且绑定相关属性 return properties.initializeDataSourceBuilder().build(); } }

4.DataSourceInitializerInvoker继承自ApplicationListener :

作用:

4.1:创建建表语句

4.2:运行插入数据的语句sql语句

默认只需要将文件命名为:

schema-*.sqldata-*.sql建表语句默认规则:schema.sql,schema-all.sql 可以指定位置,这样就不需要使用文件命名规则也可以运行 schema: - classpath:department.sql

5.操作数据库

SpringBoot自动配置了JdbcTemplate操作数据库

高级配置:使用druid数据源

1.引入druid依赖

2.配置属性

配置druid数据源监控

/** * @Description :Druid配置类,整合Druid数据源 * @Author :Chova * @Date :Created 10:21 2019/8/9 */@Configurationpublic class DruidConfig { @ConfigurationProperties(prefix = "spring.datasource") @Bean public DataSource druid(){ return new DruidDataSource(); } // 配置druid监控 // 1.配置后台管理Servlet @Bean public ServletRegistrationBean statViewServlet(){ ServletRegistrationBean bean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*"); Map

initParameters=new HashMap<>(); initParameters.put("loginUsername","admin"); initParameters.put("loginPassword","123456"); initParameters.put("allow",""); //默认允许所有访问 bean.setInitParameters(initParameters); return bean; } // 2.配置一个filter @Bean public RegistrationBean webStatFilter(){ FilterRegistrationBean bean = new FilterRegistrationBean(); bean.setFilter(new WebStatFilter()); Map

initParams=new HashMap<>(); initParams.put("exclusions","*.js,*.css,/druid/*"); bean.setInitParameters(initParams); bean.setUrlPatterns(Arrays.asList("/*")); return bean; }}

3c802726dea0559150b3e6389aa21987.png

MyBatis

引入mybatis-starter

mybatis-spring-boot-starter1.配置MyBatis数据源相关属性2.给数据库建表3.创建Java Bean

注解模式

@Mapper@Select@Delete@Insert@Update

自定义MyBatis配置规则,给容器中添加一个ConfigurationCustomer

使用MapperScan批量扫描包下所有Mappper接口:

@MapperScan(value="com.web.springbootmybatis.mapper")

配置文件模式

mybatis config-location: classpath:mybatis/mybatis-config.xml 指定全局配置文件位置 mapper-locations: classpath:mybatis/mapper.xml 指定sql映射文件位置

a9b463f83ab0f5cbae0d58f727e2c7f3.png

JPA(Java Persistence API)

引入spring-boot-starter-data-jpa

配置文件打印SQL语句

创建Entity标注JPA注解

创建Repository接口继承JpaRepository

Spring Data

Spring Data是为了简化构建基于Spring框架应用的数据访问技术,包括非关系数据库,Map-Reduce框架,云数据服务;也包含对关系数据库的访问支持

特点

1.Spring Data提供使用统一的API来对数据访问层进行操作,主要是通过Spring Data Commons项目来实现的.2.Spring Data Commons使得在使用关系型数据库或非关系型数据库访问技术时都基于Spring提供的统一标准,包含CRUD,查询,排序和分页的相关操作

统一的Repository接口

1.Repository

:统一接口2.RevisionRepository

:基于乐观锁机制3.CrudRepository

:基本CRUD操作4.PagingAndSortingRepository

:基本CRUD及分页

提供数据访问模板类 XXXTemplate:MongoTemplate,RedisTemplate

JPA与Spring Data

JpaRepository基本功能:编写接口继承JpaRepository既有crud及分页基本功能

定义符合规范的方法命名:在接口中只需要声明符合规范的方法,即拥有对应的功能

@Query 自定义查询,定制SQL

Specification查询(Spring Data JPA支持JPA2.0的Criteria查询)

整合JPA

JPA 基于ORM(Object Relational Mapping)

1.编写一个实体类(bean)和数据表进行映射,并且配置好映射关系

// 使用JPA注解配置映射关系@Entity // 标注类是一个实体类,即是和数据表映射类@Table(name="tb_user") // @Table用来定义表的名称和index规则用来指定和哪个数据表对应.如果省略,则默认的表名就是user,即类名小写public class User { @Id // 表示这是一个主键 @GeneratedValue(strategy = GenerationType.IDENTITY) //表示这是一个自增主键 private Integer id; @Column(name="lastName",length = 100) // 表示这是对应数据表中的列,可以指定名称,字段长度 private String lastName; @Column // 省略默认列名就是属性名 private String email; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; }}

2.编写一个Dao接口来操作实体类对应的数据表(Repository)

// 继承JpaRespository来完成对数据库的操作public interface UserRepository extends JpaRepository {}

3.在application.yml中对JPA进行配置JpaRepository

spring: datasource: url: jdbc:mysql://192.168.32.228/jpa username: root password: 123456 driver-class-name: com.mysql.jdbc.Driver jpa: hibernate: # 更新或者创建数据表结构 ddl-auto: update # 在控制台显示sql show-sql: true

f1b14834bf4937571529d15015896b63.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值