1,JDBC
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency>
server:
port: 8083
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
username: root
password: 123.abc
url: jdbc:mysql://192.168.254.129:3306/testdb
initialization-mode: always //在程序自动执行sql脚本时,需要将这个属性设置为always,否则不执行。脚本创建ok,需要去掉这个属性或设置为never
效果:
默认的是class com.zaxxer.hikari.HikariDataSource作为数据源
数据源的相关配置都在DataSourceProperties里面
自动配置原理
org.springframework.boot.autoconfigure.jdbc
1)参考DataSourceConfiguration,根据配置创建数据源,默认使用HikariDataSource连接池,可以使用spring.datasource.type指定自定义的数据源类型。
2)SpringBoot默认可以支持
org.apache.tomcat.jdbc.pool.DataSource、HikariDataSource、BasicDataSource
3)自定义数据源类型
@Configuration( proxyBeanMethods = false ) @ConditionalOnMissingBean({DataSource.class}) @ConditionalOnProperty( name = {"spring.datasource.type"} ) static class Generic { Generic() { } @Bean DataSource dataSource(DataSourceProperties properties) { //使用DataSourceBuilder创建数据源,利用反射创建响应type的数据源,并且绑定相关属性 return properties.initializeDataSourceBuilder().build(); } }
4)DataSourceInitializer:
作用:
- runSchemaScripts();运行创建表语句
- runDataScripts()运行插入数据的sql语句
默认只需要将文件命名为:
1,schema‐*.sql、data‐*.sql
默认规则:schema.sql,schema‐all.sql;
2,可以使用spring.datasource.schema
schema:
‐ classpath:department.sql
指定位置
5)操作数据库:自动配置了JdbcTemplate操作数据库
2,整合Druid数据源
1)引入依赖
<dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.10</version> </dependency>
2)配置连接参数
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
username: root
password: 123.abc
url: jdbc:mysql://192.168.254.129:3306/testdb
initialization-mode: never
type: com.alibaba.druid.pool.DruidDataSource
#以下属性配置在DataSourceProperties没有的,因此没有办法绑定,需要单独处理
#初始化链接数量
initialSize: 5
#最小空闲链接数
minIdle: 5
#最大并发连接数
maxActive: 10
#获取链接等待超时的时间
maxWait: 60000
#配置间隔多久才进行一次检测,检测需要关闭的空闲链接,单位是毫秒
timeBetweenEvictionRunsMillis: 60000
3)定义DruidDataSouce,绑定连接池属性。另外设置druid的web监控
@Configuration public class DruidConfig { @ConfigurationProperties(prefix = "spring.datasource") @Bean public DruidDataSource druid(){ return new DruidDataSource(); } //配置druid的监控 //1,配置一个管理后台的servlet @Bean public ServletRegistrationBean statViewServlet(){ ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*"); Map<String,String> initparams=new HashMap<>(); initparams.put("loginUsername","admin"); initparams.put("loginPassword","123456"); initparams.put("allow",""); //默认就是允许所有访问 //initparams.put("deny","192.168.254.129");//禁止访问 servletRegistrationBean.setInitParameters(initparams); return servletRegistrationBean; } // 2,配置一个web监控的filter @Bean public FilterRegistrationBean webStatFilter(){ FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(); filterRegistrationBean.setFilter(new WebStatFilter()); Map<String,String> initParams=new HashMap<>(); initParams.put("exclusions","*.js,*.css,/druid/*"); filterRegistrationBean.setInitParameters(initParams); filterRegistrationBean.setUrlPatterns(Arrays.asList("/*")); return filterRegistrationBean; } }
4)通过http://localhost:8083/druid/访问
3,整合mybatis
1)引入依赖
<dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.3.1</version> </dependency>

步骤:
- 配置数据源相关属性
- 给数据库建表
- 创建JavaBean
2)注解版
//操作数据库的mapper @Mapper public interface DepartmentMapper { @Select("select * from department where id=#{id}") public Department getDeptById(Integer id); @Delete("delete from department where id=#{id}") public int deleteDeptById(Integer id); @Options(useGeneratedKeys = true,keyProperty = "id") @Insert("insert into department(name) values(#{name})") public int insertDept(Department department); @Update("update department set name=#{name} where id=#{id}") public int updateDept(Department department); @Select("select * from department") public List<Department> getDepts(); }
使用MapperScan批量扫描mapper接口
//使用MapperScan批量扫描所有的Mapper接口; @MapperScan(value = "com.atguigu.springboot.mapper") @SpringBootApplication public class SpringBoot06DataMybatisApplication { public static void main(String[] args) { SpringApplication.run(SpringBoot06DataMybatisApplication.class, args); } }
自定义设置Mybatis规则,给容器中添加一个ConfigurationCustomizer。
@org.springframework.context.annotation.Configuration public class MyBatisConfig { @Bean public ConfigurationCustomizer configurationCustomizer(){ return new ConfigurationCustomizer(){ @Override public void customize(Configuration configuration) { configuration.setMapUnderscoreToCamelCase(true); } }; } }
在yml或xml文件中设置
mybatis: configuration: map-underscore-to-camel-case: true
3)配置文件版
springboot全局配置文件中设置mybatis的属性
mybatis: config‐location: classpath:mybatis/mybatis‐config.xml //指定全局配置文件的位置 mapper‐locations: classpath:mybatis/mapper/*.xml //指定sql映射文件的位置
mapper的xml配置文件
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.company.springbootjdbc.mapper.DepartmentMapper"> <select id="getDeptById" resultType="com.company.springbootjdbc.pojo.Department" parameterType="Integer"> select * from department where id=#{id} </select> </mapper>
4,整合SprigData JPA
SpringData 简介

整合SpringData JPA
JPA:ORM(Object Relational Mapping)
1)编写一个实体类(bean)和数据表进行映射,并且配置好映射关系
//使用JPA注解配置映射关系 @Entity //告诉JPA这是一个实体类(和数据表映射的类) @Table(name="tbl_user") //@Table来指定和哪个数据表对相应,如果省略默认表名就是user @JsonIgnoreProperties(value = { "hibernateLazyInitializer", "handler" }) //标记不生成json对象的属性,一定要有该注解处理,否则会报错 public class User { @Id //这是一个主键 @GeneratedValue(strategy = GenerationType.IDENTITY) //自增主键 private Integer id; @Column(name="LastName",length = 50) // 这是和数据表对应的一个列,省略name值,默认列名就是属性名 private String lastName; @Column(name="Email") private String email;
2)编写一个Dao接口来操作实体类对应的数据表(Repository)
//继承JpaRepository来完成对数据库的操作 public interface UserRepository extends JpaRepository<User,Integer> { }
3)基本的配置JPAProperties
spring: jpa: hibernate: # 更新或者创建数据表结构 ddl‐auto: update # 控制台显示SQL show‐sql: true
4)controller处理请求
@RestController public class UserController { @Autowired public UserRepository userRepository; @GetMapping("/user/{id}") public User getUserById(@PathVariable("id") Integer id){ // User user = userRepository.getOne(id); User user = userRepository.findById(id).orElse(null); return user; } @GetMapping("/user") public User addUser(User user){ User save = userRepository.save(user); return save; } }
posted on
浙公网安备 33010602011771号