Network Security Internet Technology Development Database Servers Mobile Phone Android Software Apple Software Computer Software News IT Information

In addition to Weibo, there is also WeChat

Please pay attention

WeChat public account

Shulou

Case Analysis of SpringBoot2 Database

2025-01-18 Update From: SLTechnology News&Howtos shulou NAV: SLTechnology News&Howtos > Development >

Share

Shulou(Shulou.com)06/01 Report--

这篇文章主要介绍"SpringBoot2数据库实例分析",在日常操作中,相信很多人在SpringBoot2数据库实例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"SpringBoot2数据库实例分析"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

1 数据库连接1.1 配置数据库连接信息

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

org.springframework.boot spring-boot-starter-jdbc

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

mysql mysql-connector-java 5.1.32

第三步: 配置数据库连接的配置文件

# 设置数据库spring: datasource: driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://localhost:3306/test username: root password: "123456"1.2 整合Druid数据源

  SpringBoot框架中默认使用的是Hikari数据源,这也就意味着如果要是想要修改数据源的话,无非就是两种方法:自定义配置类、引入相应的启动器依赖再配置配置文件

第一步: 引入Druid的启动器依赖

com.alibaba druid-spring-boot-starter 1.1.17

第二步: 配置配置文件(选学,框架一般都有默认的配置)

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: false2 SpringBoot整合MyBatis

  mybatis开发的时候有两种开发模式:使用配置文件进行开发、纯注解开发,二者各有优点。使用配置文件进行开发在处理更加复杂的SQL语句的时候逻辑更加清晰,纯注解开发比较适合简单的SQL语句,于是我们可以在开发的时候混合使用两种方法,这样可以大大提升开发效率。

2.1 配置文件开发

第一步: 引入启动器依赖 小知识:SpringBoot官方的所有技术启动器的命名都是spring-boot-starter-xxx而第三方技术的启动器命名则是xxx-spring-boot-starter。值得注意的是:MyBatis的启动器内部引用了dbc开发的启动场景,所以无需重复引用

org.mybatis.spring.boot mybatis-spring-boot-starter 2.1.4

第二步: 编写mapper接口并标注@Mapper注解

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

第三步: 编写映射文件并绑定mapper接口

select * from stu where sid=#{sid}

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

# mybatis的所有配置

mybatis:

mapper-locations: classpath:com.xiaochen.mapper/*.xml

# 所有的全局配置文件的配置项在这下面配置

configuration:

# 开启驼峰命名数据库中字段值的下划线'_'加字母会被认为是大写

map-underscore-to-camel-case: true

2.2 纯注解开发

第一步: 引入启动器依赖

org.mybatis.spring.boot mybatis-spring-boot-starter 2.1.4

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

@Mapperpublic interface StuMapper { @Select("select * from stu where sid=#{sid}") Stu queryBySid(int sid);}3 SpringBoot整合MyBatis-Plus3.1 普通的CRUD方法

  MyBatis-plus的启动器内部不止引用了dbc开发的启动场景,还导入了MyBatis的启动器,所以这两个都无需再重复引用 第一步: 引入启动器依赖

com.baomidou mybatis-plus-boot-starter 3.4.1

mapper层:

  编写mapper接口标注@Mapper注解,并继承BaseMapper类。这是MyBatis-plus的独有方式,这样做的好处是继承之后直接使用父类中已经写好的简单CRUD方法,但是一些复杂的SQL业务还是需要使用映射文件来实现的,进一步提高了代码开发的效率

@Mapperpublic interface StuMapper extends BaseMapper {}

  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;}

  编写映射文件并绑定mapper接口(如果有的话)。MyBatis-plus自动配置好了默认的mapper-locations,也就是映射文件的存放位置为classpath:/mapper/**/*.xml,于是我们就按照它的默认规则在静态资源路径下mapper文件夹下。本案例中没有映射文件,于是就不创建

  如果有需要的话,还可以在配置文件中指定MyBatis-plus配置文件的各种信息

service层:

service接口继承IService类

public interface StuService extends IService {}

  service的实现类先是继承ServiceImpl并传两个泛型(mapper接口,实体类),然后实现service接口

@Servicepublic class StuServiceImpl extends ServiceImpl implements StuService { }

controller层: 直接使用service继承类的简单方法

@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表进行展示 List list = stuService.list(); model.addAttribute("stus", list); return "/table/dynamic_table"; }}3.2 MyBatis-plus的分页实现

  MyBatis-plus的分页功能实现需要先自定义一个配置类,向容器中注册一个Interceptor

@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操作一样,直接使用service继承类的分页的相关方法即可

@GetMapping("/dynamic_table")public String dynamic_table(@RequestParam(value = "pn", defaultValue = "1")Integer pn, Model model) { // 分页从数据库中查出stu表的所有数据,当前页、总页数、总条数…… Page stuPage = new Page(pn, 1); Page page = stuService.page(stuPage); model.addAttribute("page", page); return "/table/dynamic_table";}到此,关于"SpringBoot2数据库实例分析"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

Welcome to subscribe "Shulou Technology Information " to get latest news, interesting things and hot topics in the IT industry, and controls the hottest and latest Internet news, technology news and IT industry trends.

Views: 0

*The comments in the above article only represent the author's personal views and do not represent the views and positions of this website. If you have more insights, please feel free to contribute and share.

Share To

Development

Wechat

© 2024 shulou.com SLNews company. All rights reserved.

12
Report