【SpringBoot2】(十)数据库相关

更新时间:2023-05-16 04:10:35 阅读: 评论:0

【SpringBoot2】(⼗)数据库相关
写在前⾯
更多知识总结见
本篇知识点总结⾃尚硅⾕雷神的视频
介绍一种事物作文400
博主对于该知识尚在学习阶段
如果发现存在问题请毫不吝啬的指出
秋天四字词语⽂章⽬录
1 数据库连接
1.1 配置数据库连接信息
  如果想要使⽤数据库连接池连接数据库进⾏SQL操作的话,在SpringBoot中需要经过如下三个步骤:
第⼀步: 导⼊jdbc开发的启动场景
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
第⼆步: 导⼊数据库驱动
  之所以框架底层没有⾃动导⼊数据库的驱动,是因为不同的数据库使⽤的驱动不同,这需要⽤户根据⾃⼰的需要来进⾏选择。虽然框架没有对指定数据库驱动进⾏⾃动导⼊,但是对不同数据库驱动的版本都进⾏了版本仲裁,也就是说我们可以直接导⼊⽆需定义版本号。当然也可以⾃定义版本号,maven会根据⾃⾝的就近依赖原则导⼊⾃定义的版本
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.32</version>
</dependency>
第三步: 配置数据库连接的配置⽂件
# 设置数据库
spring:
datasource:
driver-class-name: sql.jdbc.Driver
url: jdbc:mysql://localhost:3306/test
urname: root
password:"123456"
1.2 整合Druid数据源
  SpringBoot框架中默认使⽤的是Hikari数据源,这也就意味着如果要是想要修改数据源的话,⽆⾮就是两种⽅法:⾃定义配置类、引⼊相应的启动器依赖再配置配置⽂件
第⼀步: 引⼊Druid的启动器依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.17</version>
</dependency>
第⼆步: 配置配置⽂件(选学,框架⼀般都有默认的配置)
spring:
datasource:
url: jdbc:mysql://localhost:3306/db_account
urname: root
password:123456
driver-class-name: sql.jdbc.Driver
druid:
陈丹青经典语录aop-patterns: com.atguigu.admin.*  #监控SpringBean
filters: stat,wall    # 底层开启功能,stat(sql监控),wall(防⽕墙)
stat-view-rvlet:# 配置监控页功能
enabled:true
login-urname: admin
login-password: admin
retEnable:fal
web-stat-filter:# 监控web
enabled:true
urlPattern: /*
exclusions:'*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*'
filter:
stat:# 对上⾯filters⾥⾯的stat的详细配置
slow-sql-millis:1000
logSlowSql:true
enabled:true
wall:
enabled:true
config:
drop-table-allow:fal
2 SpringBoot整合MyBatis
  mybatis开发的时候有两种开发模式:使⽤配置⽂件进⾏开发、纯注解开发,⼆者各有优点。使⽤配置⽂件进⾏开发在处理更加复杂的SQL语句的时候逻辑更加清晰,纯注解开发⽐较适合简单的SQL语句,于是我们可以在开发的时候混合使⽤两种⽅法,这样可以⼤⼤提升开发效率。
2.1 配置⽂件开发
第⼀步: 引⼊启动器依赖
  ⼩知识:SpringBoot官⽅的所有技术启动器的命名都是spring-boot-starter-xxx⽽第三⽅技术的启动器命名则是xxx-spring-boot-starter。值得注意的是:MyBatis的启动器内部引⽤了dbc开发的启动场景,所以⽆需重复引⽤销售人才
<dependency>
<groupId&batis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.4</version>
</dependency>
第⼆步: 编写mapper接⼝并标注@Mapper注解
@Mapper
public interface StuMapper {
Stu queryBySid(int sid);
}
第三步: 编写映射⽂件并绑定mapper接⼝
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-////DTD Mapper 3.0//EN"
"/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.xiaochen.mapper.StuMapper">
注意的反义词
<lect id="queryBySid" resultType="com.xiaochen.domain.Stu">
lect * from stu where sid=#{sid}
</lect>
</mapper>
第四步: 在配置⽂件中指定之前MyBatis配置⽂件的各种信息
# mybatis的所有配置
mybatis:
mapper-locations: classpath:com.xiaochen.mapper/*.xml
# 所有的全局配置⽂件的配置项在这下⾯配置
configuration:
# 开启驼峰命名数据库中字段值的下划线‘_’加字母会被认为是⼤写
map-underscore-to-camel-ca: true
2.2 纯注解开发
第⼀步: 引⼊启动器依赖
<dependency>
<groupId&batis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.4</version>
</dependency>
第⼆步: 编写mapper接⼝并标注@Mapper注解,使⽤对应的注解进⾏SQL语句操作
@Mapper
public interface StuMapper {
@Select("lect * from stu where sid=#{sid}")
Stu queryBySid(int sid);
}
3 SpringBoot整合MyBatis-Plus
鸽子炖天麻的功效
3.1 普通的CRUD⽅法
  MyBatis-plus的启动器内部不⽌引⽤了dbc开发的启动场景,还导⼊了MyBatis的启动器,所以这两个都⽆需再重复引⽤
第⼀步: 引⼊启动器依赖
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.1</version>
</dependency>
mapper层:
  编写mapper接⼝标注@Mapper注解,并继承BaMapper类。这是MyBatis-plus的独有⽅式,这样做的好处是继承之后直接使⽤⽗类中已经写好的简单CRUD⽅法,但是⼀些复杂的SQL业务还是需要使⽤映射⽂件来实现的,进⼀步提⾼了代码开发的效率久久鬼
@Mapper
public interface StuMapper extends BaMapper<Stu>{
}
  MyBatis-plus进⾏数据库表的增删改查的时候,默认把继承BaMapper类时传进去的泛型名称当做表名去查找,如果泛型与数据库中的表名不对应的话,可以在实体类使⽤注解标识,除此之外注解还可以⽤来标识主键和⾮表中字段属性
@NoArgsConstructor
@AllArgsConstructor
@Data
@TableName("stu")
public class Stu {
// 表名该字段是定义的临时变量,并不存在于数据库的表中
@TableField(exist =fal)
private String gender;
// 标明表的主键
@TableId
private int sid;
private String sname;
private String age;
private String cour;
private int cardid;
}
  编写映射⽂件并绑定mapper接⼝(如果有的话)。MyBatis-plus⾃动配置好了默认的mapper-locations,也就是映射⽂件的存放位置
为classpath:/mapper/**/*.xml,于是我们就按照它的默认规则在静态资源路径下mapper⽂件夹下。本案例中没有映射⽂件,于是就不创建
  如果有需要的话,还可以在配置⽂件中指定MyBatis-plus配置⽂件的各种信息
rvice层:
  rvice接⼝继承IService类
public interface StuService extends IService<Stu>{
}
  rvice的实现类先是继承ServiceImpl并传两个泛型(mapper接⼝,实体类),然后实现rvice接⼝
@Service
public class StuServiceImpl extends ServiceImpl<StuMapper, Stu>implements StuService {
}
controller层: 直接使⽤rvice继承类的简单⽅法
@Controller
public class TableController {
@Autowired
StuServiceImpl stuService;
/**
* 点击Advanced table按钮,进⾏页⾯转发,并携带⼀个表格数据
* @param model ⽤于存储数据父亲丧事对联大全
* @return 页⾯转发forward 到 /table/dynamic_table.html
*/
@GetMapping("/dynamic_table")
public String dynamic_table(Model model){
// 从数据库中查出ur表进⾏展⽰
List<Stu> list = stuService.list();
model.addAttribute("stus", list);
return"/table/dynamic_table";
}
}
3.2 MyBatis-plus的分页实现
  MyBatis-plus的分页功能实现需要先⾃定义⼀个配置类,向容器中注册⼀个Interceptor
@Configuration
public class MyBatisConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor(){
MybatisPlusInterceptor interceptor =new MybatisPlusInterceptor();
PaginationInnerInterceptor paginationInnerInterceptor =new PaginationInnerInterceptor();
paginationInnerInterceptor.tOverflow(true);
paginationInnerInterceptor.tMaxLimit(500L);
interceptor.addInnerInterceptor(paginationInnerInterceptor);
return interceptor;
}
}
然后就可以像普通的CRUD操作⼀样,直接使⽤rvice继承类的分页的相关⽅法即可
@GetMapping("/dynamic_table")
public String dynamic_table(@RequestParam(value ="pn", defaultValue ="1")Integer pn,  Model model){
// 分页从数据库中查出stu表的所有数据,当前页、总页数、总条数……
Page<Stu> stuPage =new Page<>(pn,1);
Page<Stu> page = stuService.page(stuPage);
model.addAttribute("page", page);
return"/table/dynamic_table";
}

本文发布于:2023-05-16 04:10:35,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/649403.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:数据库   配置   开发
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图