【Springboot+mybatisPlus+mysql+thymeleaf实现crud】
创始人
2025-05-30 22:21:19
0

Springboot+mybatisPlus+mysql+thymeleaf实现crud

文章目录

  • Springboot+mybatisPlus+mysql+thymeleaf实现crud
    • 简介
      • #特性
      • #支持数据库
      • #框架结构
    • Springboot+mybatisPlus+mysql+thymeleaf
      • pom.xml
      • application.yml
      • MybatisPlusConfig.java
      • User.java
      • UserService.java
      • UserServiceImpl.java
      • MyBatisPlusApplication.java
      • UserMapper.xml
      • add.html
      • login.html
      • modifie.html

代码链接-spring-boot-mybatis-plus
Springboot学习

Mybatis Plus

简介

MyBatis-Plus (opens new window)(简称 MP)是一个 MyBatis (opens new window)的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。

愿景

我们的愿景是成为 MyBatis 最好的搭档,就像 魂斗罗 中的 1P、2P,基友搭配,效率翻倍。

img

#特性

  • 无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑
  • 损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作
  • 强大的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求
  • 支持 Lambda 形式调用:通过 Lambda 表达式,方便的编写各类查询条件,无需再担心字段写错
  • 支持主键自动生成:支持多达 4 种主键策略(内含分布式唯一 ID 生成器 - Sequence),可自由配置,完美解决主键问题
  • 支持 ActiveRecord 模式:支持 ActiveRecord 形式调用,实体类只需继承 Model 类即可进行强大的 CRUD 操作
  • 支持自定义全局通用操作:支持全局通用方法注入( Write once, use anywhere )
  • 内置代码生成器:采用代码或者 Maven 插件可快速生成 Mapper 、 Model 、 Service 、 Controller 层代码,支持模板引擎,更有超多自定义配置等您来使用
  • 内置分页插件:基于 MyBatis 物理分页,开发者无需关心具体操作,配置好插件之后,写分页等同于普通 List 查询
  • 分页插件支持多种数据库:支持 MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、Postgre、SQLServer 等多种数据库
  • 内置性能分析插件:可输出 SQL 语句以及其执行时间,建议开发测试时启用该功能,能快速揪出慢查询
  • 内置全局拦截插件:提供全表 delete 、 update 操作智能分析阻断,也可自定义拦截规则,预防误操作

#支持数据库

任何能使用 MyBatis 进行 CRUD, 并且支持标准 SQL 的数据库,具体支持情况如下,如果不在下列表查看分页部分教程 PR 您的支持。

  • MySQL,Oracle,DB2,H2,HSQL,SQLite,PostgreSQL,SQLServer,Phoenix,Gauss ,ClickHouse,Sybase,OceanBase,Firebird,Cubrid,Goldilocks,csiidb,informix,TDengine,redshift
  • 达梦数据库,虚谷数据库,人大金仓数据库,南大通用(华库)数据库,南大通用数据库,神通数据库,瀚高数据库,优炫数据库

#框架结构

framework

Springboot+mybatisPlus+mysql+thymeleaf

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fK1TuygR-1679234128051)(image/image-20230319214436002.png)]

pom.xml

org.springframework.bootspring-boot-starter-parent2.5.4UTF-8UTF-81.8org.springframework.bootspring-boot-starter-weborg.projectlomboklomboktruecom.baomidoumybatis-plus-boot-starter3.5.1com.baomidoumybatis-plus-extension3.5.1org.projectlomboklomboktrueorg.springframework.bootspring-boot-starter-testtestmysqlmysql-connector-java8.0.16com.alibabadruid1.1.21org.freemarkerfreemarker2.3.30testorg.springframework.bootspring-boot-starter-thymeleaforg.springframework.bootspring-boot-maven-plugin2.5.4

application.yml

server:port: 8080
# DataSource Config
spring:application:name: userthymeleaf:cache: falsedatasource:url: jdbc:mysql://localhost:3306/test?characterEncoding=utf8&useSSL=false&serverTimezone=UTCusername: rootpassword: rootdriver-class-name: com.mysql.cj.jdbc.Drivermybatis-plus:# mapper配置文件。可能有多个,所以Mapper.xml结尾的都添加进来mapper-locations: classpath:mapper/*Mapper.xmlconfiguration:# 类属性与表字段的驼峰映射,mybatis plus默认true开启,mybatis需要手动配置,且config-location和configuration不能同时出现map-underscore-to-camel-case: true# 配置日志输出log-impl: org.apache.ibatis.logging.stdout.StdOutImpl# Logger Config
logging:level:com.neo: debug

MybatisPlusConfig.java

import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
@MapperScan("com.neo.mapper")
public class MybatisPlusConfig {@Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor() {MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor();mybatisPlusInterceptor.addInnerInterceptor(paginationInnerInterceptor);return mybatisPlusInterceptor;}}

User.java

package com.neo.model;import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;@TableName(value = "t_user")
public class User {/*** 用户表主键Id*/@TableIdprivate String userId;/*** 用户姓名*/private String userName;/*** 用户年龄*/private String userAge;/*** 用户住址*/private String userAddr;/*** 用户性别*/private String userSex;/*** 用户电话号码*/private String userPhone;public String getUserId() {return userId;}public void setUserId(String userId) {this.userId = userId;}public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public String getUserAge() {return userAge;}public void setUserAge(String userAge) {this.userAge = userAge;}public String getUserAddr() {return userAddr;}public void setUserAddr(String userAddr) {this.userAddr = userAddr;}public String getUserSex() {return userSex;}public void setUserSex(String userSex) {this.userSex = userSex;}public String getUserPhone() {return userPhone;}public void setUserPhone(String userPhone) {this.userPhone = userPhone;}
}

UserService.java

package com.neo.service;import com.baomidou.mybatisplus.extension.service.IService;
import com.neo.model.User;import java.util.List;public interface UserService extends IService {List getUserByUserAge(String userAge);
}

UserServiceImpl.java

package com.neo.service.impl;import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.neo.mapper.UserMapper;
import com.neo.model.User;
import com.neo.service.UserService;
import org.springframework.stereotype.Service;import java.util.List;@Service
public class UserServiceImpl extends ServiceImpl implements UserService {@Overridepublic List getUserByUserAge(String userAge) {return this.baseMapper.getUserByUserAge(userAge);}
}

MyBatisPlusApplication.java

package com.neo;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;/*** http://localhost:8080/api/v1/user/list*/
@SpringBootApplication
public class MyBatisPlusApplication {public static void main(String[] args) {SpringApplication.run(MyBatisPlusApplication.class, args);}
}

UserMapper.xml




add.html



添加用户
姓 名:
年 龄:
住 址:
性 别:
电话号码:

login.html



用户列表

用户管理系统

姓名年龄住址性别电话号码
'/api/v1/user/updatePage/'+${user.userId}}">更改'/api/v1/user/delete/'+${user.userId}}">删除
当前 [[${page.current}]]页,总[[${page.pages }]]页,总[[ ${page.total }]] 条记录

modifie.html



修改用户

姓 名:
年 龄:
住 址:
性 别:
电话号码:

在这里插入图片描述
启动效果

相关内容

热门资讯

最新或2023(历届)秋天的怀... 第1篇:秋天的怀念读后感300字  读了《秋天的怀念》后,我深深地体会到了妈妈的爱比天空的太阳还要灿...
秋天的怀念读后感400字 秋天...  【1】秋天的怀念读后感400字  读了《秋天的怀念》后,我深深地体会到了妈妈的爱比天空的太阳还要灿...
最新或2023(历届)秋天的怀...   秋天的怀念读后感600字第一篇:  这是一个感人肺腑的故事,文中写了一个重病缠身的母亲,为了儿子...
秋天的怀念读后感500字 秋天...   秋天的怀念读后感500字【1】  我曾读过一篇文章——《秋天的怀念》,这篇文章使我体会到了浓浓的...
最新或2023(历届)秋天的怀...   秋天的怀念读后感作文600字篇一:  作为小树应该感谢土地,因为土地养育了它;作为小鱼应该感谢大...
JAVASE(3.18) 目录 ​编辑 1.抽象类和抽象方法 2.接口 3.比较自定义类型 学习不要眼高手低,...
HashMap源码分析 Java源码系列:下方连接 http://t.csdn.cn/Nwzed 文章目录...
route-resource-... route-resource-preload 🚀 专注于提升应用首屏加载速度...
房地产合同管理台账范本 房地产... 合同管理台账范本:   某房地产开发有限公司合同管理台账
关于房地产合同专员职责范本 房...  合同管理专员的岗位职责:  职责1  协助采购价格和合同管理体系的建立、完善和更新工作  职责2 ...
秋天的怀念读后感800字 多篇...   秋天的怀念读后感800字篇一:  《秋天的怀念》,讲述的是一个身患重病的母亲无微不至地关照着双腿...
关于技术改造合同范本2篇 设备...  技术改造合同范本一  技术改造借款合同  借款单位:_______________  地址:___...
关于房地产投资合同范文 房地产...  房地产投资合同范文一  甲 方:**公司  法定代表人:_____________________...
使用自签名证书的SSL (li... 配置服务器端mkdir -p /u01/app/oracle/walletorapki wallet...
Java设计模式 -05适配器... 适配器模式 一、现实生活中的适配器例子 泰国插座用的是两孔的(欧标)&#...
国际技术服务合同模板范本 技术... 国际技术服务合同模板一  甲方:________________  地址:_____________...
房地产合同管理台账范本 房地产... 合同管理台账范本:   某房地产开发有限公司合同管理台账
房地产顾问合同_房地产顾问合同... 房地产顾问合同范文1  根据《中华人民共和国律师暂行条例》第二条第一款的规定,______(简称甲方...
房地产项目合同_房地产项目合同... 房地产项目合同范文1  委托方:_______(以下简称甲方)  地址:_________  居间方...
房地产合作开发合同_房地产合作...  房地产合作开发合同范文1  甲方:   乙方:  根据《中华人名共和国合同法》及其他有关法律、法规...