运维开发网

基础到精通数据库专题讲座

运维开发网 https://www.qedev.com 2022-05-19 17:20 出处:网络
SpringBoot是一种整合Spring技术栈的方式(或者说是框架),同时也是简化Spring的一种快速开发的脚手架,本篇我们来学习如何连接数据库进行操作

SpringBoot是一种整合Spring技术栈的方式(或者说是框架),同时也是简化Spring的一种快速开发的脚手架,本篇我们来学习如何连接数据库进行操作


1 数据库连接


1.1 配置数据库连接信息

emspemsp如果要使用数据库连接池连接数据库进行SQL操作,需要在SpringBoot中经历以下三个步骤:第一步:导入jdbc开发的启动场景。

lt;dependencygt; lt;groupIdgt;org.springframework.bootlt;/groupIdgt; lt;artifactIdgt;spring-boot-starter-jdbclt;/artifactIdgt;lt;/dependencygt;

第二步:导入数据库驱动之所以框架底层没有自动导入数据库的驱动,是因为不同的数据库使用不同的驱动,需要用户根据自己的需求进行选择。虽然框架不会自动导入指定的数据库驱动,但是会对不同数据库驱动的版本进行仲裁,也就是说我们可以直接导入,不需要定义版本号。当然,你也可以自定义版本号。maven会根据自己的邻近依赖原则导入定制版本。

lt;dependencygt; lt;groupIdgt;mysqllt;/groupIdgt; lt;artifactIdgt;mysql-connector-javalt;/artifactIdgt; lt;versiongt;5.1.32lt;/versiongt;lt;/dependencygt;

步骤3:配置数据库连接的概要文件。

#设置数据库
Spring:
data source:
Driver-class-name:com . MySQL . JDBC . Driver
URL:JDBC:MySQL://localhost:306/test
用户名:123456quot


1.2 整合Druid数据源

emspemspSpringBoot框架中默认使用光数据源,这意味着如果你想修改数据源,只有两种方法:定制配置类和引入相应的启动器依赖重新配置配置文件。

步骤1:介绍Druid的发起者依赖。

lt;dependencygt; lt;groupIdgt;com.alibabalt;/groupIdgt; lt;artifactIdgt;druid-spring-boot-starterlt;/artifactIdgt; lt;versiongt;1.1.17lt;/versiongt;lt;/dependencygt;

第二步:配置配置文件(参加课程,框架一般有默认配置)

spring: datasource: url: jdbc:mysql://localhost:3306/db_account username: root password: 123456 driver-class-name: com.mysql.jdbc.Driver druid: aop-patterns: com.atguigu.admin.* #监控SpringBean filters: stat,wall # 底层开启功能,stat(sql监控),wall(防火墙) stat-view-servlet: # 配置监控页功能 enabled: true login-username: admin login-password: admin resetEnable: false 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: false


2 SpringBoot整合MyBatis

emspemspmybatis开发时有两种开发模式:使用配置文件进行开发和纯注释开发,两者各有优势。在使用配置文件进行开发时,在处理更复杂的SQL语句时,逻辑更加清晰。纯注释开发更适合简单的SQL语句,所以我们可以在开发中混合使用两种方法,这样可以大大提高开发效率。


2.1 配置文件开发

第一步:介绍启动器依赖的小知识:官方的SpringBoot技术启动器全部命名为spring-boot-starter-xxx,第三方技术启动器命名为xxx-spring-boot-starter。值得注意的是,MyBatis的启动器内部引用的是dbc开发的启动场景,无需重复引用。

lt;dependencygt; lt;groupIdgt;org.mybatis.spring.bootlt;/groupIdgt; lt;artifactIdgt;mybatis-spring-boot-starterlt;/artifactIdgt; lt;versiongt;2.1.4lt;/versiongt;lt;/dependencygt;

第2步:编写映射器接口并注释@Mapper。

@Mapperpublic interface StuMapper { Stu queryBySid(int sid);}

步骤3:编写映射文件,绑定映射器接口。

lt;?xml version="1.0" encoding="UTF-8" ?gt;lt;!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"gt;lt;mapper namespace="com.xiaochen.mapper.StuMapper"gt; lt;select id="queryBySid" resultType="com.xiaochen.domain.Stu"gt; select * from stu where sid=#{sid} lt;/selectgt;lt;/mappergt;

第四步:在配置文件中指定以前的MyBatis配置文件的各种信息。

# mybatis的所有配置
mybatis:
mapper-locations:class path:com.xiaochen.mapper/*. XML
#所有全局配置文件的配置项都在这里配置
配置:
#打开驼峰命名。_ rsquo添加字母将被视为大写
map-underline-to-camel-case:true


2.2 纯注解开发

步骤1:引入发起者依赖性。

lt;dependencygt; lt;groupIdgt;org.mybatis.spring.bootlt;/groupIdgt; lt;artifactIdgt;mybatis-spring-boot-starterlt;/artifactIdgt; lt;versiongt;2.1.4lt;/versiongt;lt;/dependencygt;

第二步:编写mapper接口并标记@Mapper注释,使用对应的注释操作SQL语句。

@Mapperpublic interface StuMapper { @Select("select * from stu where sid=#{sid}") Stu queryBySid(int sid);}


3 SpringBoot整合MyBatis-Plus


3.1 普通的CRUD方法

emspemspMyBatis-plus的launcher不仅参考了dbc开发的启动场景,还引入了MyBatis的launcher,所以不需要重复参考第一步:为两者引入launcher依赖。

lt;dependencygt; lt;groupIdgt;com.baomidoult;/groupIdgt; lt;artifactIdgt;mybatis-plus-boot-starterlt;/artifactIdgt; lt;versiongt;3.4.1lt;/versiongt;lt;/dependencygt;

映射器层:

emspemsp编写映射器接口批注@Mapper批注并继承BaseMapper类。这是MyBatis-plus特有的方式,优点是继承后直接使用父类中编写的简单CRUD方法。但是,一些复杂的SQL业务仍然需要通过映射文件来实现,这进一步提高了代码开发的效率。

@Mapperpublic interface StuMapper extends BaseMapperlt;Stugt; {}

emspemsp当MyBatis-plus添加、删除和更改数据库表时,默认情况下,继承BaseMapper类时传递的通用名称将用作查找该表的表名。如果类名与数据库中的表名不对应,可以通过实体类中的注释来识别。此外,注释还可以用于标识主键和非表字段属性。

@NoArgsConstructor@AllArgsConstructor@Data@TableName("stu")public class Stu { // 表名该字段是定义的临时变量,并不存在于数据库的表中 @TableField(exist = false) private String gender; // 标明表的主键 @TableId private int sid; private String sname; private String age; private String course; private int cardid;}

emspemsp编写映射文件并绑定映射器接口(如果有)。MyBatis-plus已经自动配置了默认的mapper-locations,即映射文件的位置是classpath:/mapper/**/*。xml,所以我们将遵循静态资源路径下的mapper文件夹中的默认规则。在这种情况下,没有映射文件,因此不会创建它。

emspemsp如果需要,还可以在概要文件中指定MyBatis-plus概要文件的各种信息。

服务层:

服务接口继承IService类。

public interface StuService extends IServicelt;Stugt; {}

emspemsp服务的实现类首先继承ServiceImpl并传递两个泛型(mapper接口,entity类),然后实现服务接口。

@Servicepublic class StuServiceImpl extends ServiceImpllt;StuMapper, Stugt; implements StuService { }

控制器层:直接使用服务继承类的简单方法

@Controllerpublic class TableController { @Autowired StuServiceImpl stuService; /** * 点击Advanced table按钮,进行页面转发,并携带一个表格数据 * @param model 用于存储数据 * @return 页面转发forward 到 /table/dynamic_table.html */ @GetMapping("/dynamic_table") public String dynamic_table(Model model) { // 从数据库中查出user表进行展示 Listlt;Stugt; list = stuService.list(); model.addAttribute("stus", list); return "/table/dynamic_table"; }}


3.2 MyBatis-plus的分页实现

emspemsp要实现MyBatis-plus的分页功能,首先需要定制一个配置类,并在容器中注册一个拦截器。

@Configurationpublic class MyBatisConfig { @Bean public MybatisPlusInterceptor mybatisPlusInterceptor() { MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor(); paginationInnerInterceptor.setOverflow(true); paginationInnerInterceptor.setMaxLimit(500L); interceptor.addInnerInterceptor(paginationInnerInterceptor); return interceptor; }}

然后,就像普通的CRUD操作一样,可以直接使用服务继承类的分页相关方法。

@GetMapping("/dynamic_table")public String dynamic_table(@RequestParam(value = "pn", defaultValue = "1")Integer pn, Model model) { // 分页从数据库中查出stu表的所有数据,当前页、总页数、总条数…… Pagelt;Stugt; stuPage = new Pagelt;gt;(pn, 1); Pagelt;Stugt; page = stuService.page(stuPage); model.addAttribute("page", page); return "/table/dynamic_table";}

关于SpringBoot2从零基础到熟练的数据库这篇文章到此为止。关于SpringBoot2数据库的更多信息,请搜索源搜网之前的文章或者继续浏览下面的相关文章。

0

精彩评论

暂无评论...
验证码 换一张
取 消