整合JDBC
1.配置application.yml文件
server:
port: 8080
spring:
application:
name: springboot-jdbc
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver #有两个Driver选项,数据库8.0以上选目前这个,以下选另一个
password: root
url: jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC&Unicode=true&characterEncoding=utf-8
username: root
2.测试类中链接数据源
class SpringbootJdbcApplicationTests {
@Autowired
private DataSource dataSource; //数据源
@Test
void contextLoads() {
//查看默认的数据源 hikari (最快数据源)
System.out.println(dataSource.getClass()); //class com.zaxxer.hikari.HikariDataSource
}
}
hikari:最快数据源,(连接池)不需要依赖,已经在springBoot中包含了 :
DataSource
3.测试好后,开始写代码(增删改查)
先创建一个Controller包,在其中创建一个类
JdbcTemplate :是数据库的模板
它里面封装了好多方法(增删改查等)
@RestController //不需要页面所以用这个
public class JDBCController {
@Autowired
private JdbcTemplate jdbcTemplate; //简化jdbc的 数据库模板
//查询
@GetMapping("/userList")
public List<Map<String,Object>> mapList(){ //不需要实体类直接查
String sql = "select * from user";
List<Map<String, Object>> maps = jdbcTemplate.queryForList(sql);
return maps; //前端返回的就是JSON
}
//新增
@GetMapping("/addUser")
public String addUser(){
String sql = "insert into user(id,name,pwd) values (5,'风暴豹','999')";
jdbcTemplate.update(sql);
return "OK";
}
//修改
@GetMapping("/updateUser/{id}")
public String updateUser(@PathVariable("id") Integer id){
String sql = "update user set name=?,pwd=? where id ="+id;
//封装
Object[] obj = new Object[2];
obj[0] = "冯宝宝一号";
obj[1] = "zz";
jdbcTemplate.update(sql,obj);
return "OK";
}
//删除
@GetMapping("/deleteUser/{id}")
public String deleteUser(@PathVariable("id") Integer id){
String sql = "delete from user where id = ?";
jdbcTemplate.update(sql,id);
return "OK";
}
}
整合jpa (通过代码在指定的数据库中新建表)
jpa是能让对象快速映射到关系型数据库的技术规范,可以用代码生成数据库中的表
1.创建项目,勾选依赖
2. 配置application.yml文件
server:
port: 8080
spring:
application:
name: springboot-jpa
devtools:
restart:
enabled: false
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/test?serverTimezone=UTC
hikari: # 最快数据源
username: root
password: root
jpa:
hibernate:
ddl-auto: update # 第一次创建表 后面update 每次重启项目都会新建表
show-sql: true
3.创建一个pojo包,写一个实体类User
@Entity //该注解声明一个实体类 与数据库的表对应
4.创建一个mapper包,创建实体类的接口
去继承 JpaRepository<User,Long>这个接口(只有继承它,才能在数据库中建立表)
5.创建service层,写服务层的接口
在写它的实现类
6.创建controller包,新建一个controller类
点击运行以后可以在指定的数据库中创建一个表
整合mybatis
1.创建项目,勾选依赖
2.pojo中创建实体类
3.配置application.yml文件
4.在mapper中新建一个接口(链接数据库)
@Mapper注解: 使用:直接在接口类上使用,包是:org.apache.ibatis.annotations.Mapper 作用:为有此注解的接口生成动态代理类,并且注入到spring容器中。 @MapperScan注解: 使用:在启动类上配置,配置的是持久层接口的包路径,标注批量生成此包下的接口的动态代理类,并且注入到容器中。
他俩一起使用;
1、只使用@Mapper注解,不使用@MapperScan注解。会扫描@Mapper注解所在接口,生成动态代理类,注入到Spring容器中。
2、只使用@MapperScan注解,不使用@Mapper注解。会扫描@MapperScan注解配置的包下面的接口生成动态代理类,注入到Spring容器中。
3、@Mapper、@MapperScan注解都使用,@Mapper接口,在@MapperScan注解中有配置包路径,那么可以正常使用。
4、@Mapper、@MapperScan注解都使用,@Mapper接口,在@MapperScan注解中没有配置包路径,那么会报错,解决办法,就是在@MapperScan注解中配置正确路径下的包即可。
@Repository //交给spring管理装配
5.写实现语句或xml文件
两种方式
1.
2.
注意:pom.xml文件中要加入两个依赖
<!--外部数据源-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.8</version>
</dependency>
<!--springboot mybatis-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.2</version>
</dependency>
6.正常写服务层的接口和实现类
7.写controller层
注意:在主启动程序中添加 @MapperScan注解(扫描@mapper注解所在的路径)