1、整合JDBC
①引入Jar包
<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>
②配置application.yml
spring:
datasource:
username: root
password: 123456
url: jdbc:mysql://47.104.95.243:3306/jdbc
driver-class-name: com.mysql.jdbc.Driver
默认执行sql语句只需要在resources目录下新建文件
schema-.sql、data-.sql
默认规则:schema.sql,schema-all.sql;
可以使用下面的语言指定位置
schema:
classpath:department.sql
2、整合Druid数据源(先引入jar包)
导入druid数据源
@Configuration
public 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<String,String> initParams = new HashMap<>();
initParams.put("loginUsername","admin");
initParams.put("loginPassword","123456");
initParams.put("allow","");//默认就是允许所有访问
initParams.put("deny","192.168.15.21");
bean.setInitParameters(initParams);
return bean;
}
//2、配置一个web监控的filter
@Bean
public FilterRegistrationBean webStatFilter(){
FilterRegistrationBean bean = new FilterRegistrationBean();
bean.setFilter(new WebStatFilter());
Map<String,String> initParams = new HashMap<>();
initParams.put("exclusions","*.js,*.css,/druid/*");
bean.setInitParameters(initParams);
bean.setUrlPatterns(Arrays.asList("/*"));
return bean;
}
}
2.整合MyBatis
环境配置
1.创建项目时选择JDBC MyBatis Mysql
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.3</version>
</dependency>
步骤:
1)、配置数据源相关属性(见上一节Druid)
2)、给数据库建表
3)、创建JavaBean
4)、注解版整合Mybatis
//指定这是一个操作数据库的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(departmentName) values(#{departmentName})")
public int insertDept(Department department);
@Update("update department set departmentName=#{departmentName} where id=#{id}")
public int updateDept(Department department);
}
自定义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);
}
};
}
}
使用MapperScan批量扫描所有的Mapper接口;
@MapperScan(value = "com.atguigu.springboot.mapper")
@SpringBootApplication
public class SpringBoot06DataMybatisApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBoot06DataMybatisApplication.class, args);
}
}
5)、配置文件版
1.在resources目录下创建mybatis文件夹存放mapper相关配置
1.1.创建mybatis/mybatis-config.xml文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<settings>
<!--适配驼峰命名法-->
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
</configuration>
2.创建Mapper接口
package com.rao.springboot.mapper;
import com.rao.springboot.bean.Employee;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Component;
//使用@Mapper 或者 @MapperScan将接口扫描装配到容器中
@Component
@Mapper
public interface EmployeeMapper {
public Employee getEmployeeById(Integer id);
public void insertEmp(Employee employee);
}
3.创建Mapper映射文件 mybatis/mapper/EmployeeMapper.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.rao.springboot.mapper.EmployeeMapper">
<select id="getEmployeeById" resultType="com.rao.springboot.bean.Employee">
SELECT * FROM employee WHERE id=#{id}
</select>
<insert id="insertEmp">
INSERT into employee(lastName,email,gender,d_id) VALUE (#{lastName},#{email},#{gender},#{d_id})
</insert>
</mapper>
4.在application.yml文件中注册配置文件及映射文件的位置
mybatis:
指定mybatis的全局配置文件位置
config-location: classpath:mybatis/mybatis-config.xml
指定mapper文件的位置
mapper-locations: classpath:mybatis/mapper/*.xml
3、整合SpringData JPA
1)、SpringData简介
SpringData为我们提供使用统一的API来对数据访问层进行操作;这主要是Spring Data
Commons项目来实现的。Spring Data Commons让我们在使用关系型或者非关系型数据访问
技术时都基于Spring提供的统一标准,标准包含了CRUD(创建、获取、更新、删除)、查询、
排序和分页的相关操作。
2、统一的Repository接口
RevisionRepository<T, ID extends Serializable, N extends Number & Comparable>:基于乐观
锁机制
CrudRepository<T, ID extends Serializable>:基本CRUD操作
PagingAndSortingRepository<T, ID extends Serializable>:基本CRUD及分页
3、提供数据访问模板类 xxxTemplate;
如:MongoTemplate、RedisTemplate等
4、JPA与Spring Data
1)、JpaRepository基本功能
编写接口继承JpaRepository既有crud及分页等基本功能
2)、定义符合规范的方法命名
在接口中只需要声明符合规范的方法,即拥有对应的功能
3)、@Query自定义查询,定制查询SQL
4)、Specifications查询(Spring Data JPA支持JPA2.0的Criteria查询)
步骤
定义数据源application.yml
spring:
datasource:
url: jdbc:mysql://47.104.95.243/jpa
username: root
password: 123456
driver-class-name: com.mysql.jdbc.Driver
JPA:ORM(Object Relational Mapping)
1.编写一个实体类(Bean)和数据表进行映射,并配置好映射关系
//使用JPA注解配置映射关系
@Entity //告诉jap这是一个实体类(和数据表映射的类)
@Table(name = "tbl_user") //指定和那个数据表进行对应,可以省略。默认是和类名的首字母小写对应
public class User {
@Id //这是一个主键
@GeneratedValue(strategy = GenerationType.IDENTITY) //自增主键
private Integer id;
@Column(name = "last_name",length = 50) //这是和数据表对应的一个列,指定列名和长度
private String lastName;
@Column //省略默认列名 就是属性名
private String email;
- 编写一个Dao接口 来操作实体类对应的数据表(Reponsitory)
//继承JpaRepository来完成对数据库的操作 JpaRepository的两个泛型 1.要操作的对象;2.对象中的主键的类型
public interface UserRepostery extends JpaRepository<User,Integer>{
}
3.在application.yml中配置jpa相关属性
spring:
datasource:
url: jdbc:mysql://47.104.95.243/jpa
username: root
password: 123456
driver-class-name: com.mysql.jdbc.Driver
jpa:
hibernate:
# 更新或创建数据表结构
ddl-auto: update
# 在控制台中显示SQL
show-sql: true
4.编写Controller 直接调用接口中的方式实现CRUD
@RestController
public class UserController {
@Autowired
UserRepostery userRepostery;
@GetMapping("/user/{id}")
public User getUserById(@PathVariable("id") Integer id){
//userRepostery 继承了JpaRepository 中的方法 直接调用即可
User one = userRepostery.getOne(id);
return one;
}
@GetMapping("/user")
public User insertUser(User user){
// 插入一个用户数据
User save = userRepostery.save(user);
return save;
}
}