范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

SpringBoot搭建SSM项目的完整过程!

  01、新建一个springboot项目
  选择依赖和版本
  SpringBoot整合lombok
  lombok是一个快速生成javabean的一个工具工程和生成日志的工具。未来给我们提供了很大的遍历。
  需要在idea中安装插件和pom.xml中进行依赖才可以使用生效:
  pom.xml依赖如下:     org.projectlombok     lombok     true  复制代码SpringBoot在依赖的过程,为什么有的要加版本号,有的不加?     org.springframework.boot     spring-boot-starter-web        mysql     mysql-connector-java     8.0.27        com.baomidou     mybatis-plus-boot-starter     3.5.2        org.projectlombok     lombok     true  复制代码mysqlmybatis-plus 都不属于springboot父工程管理,自然必须把自己的version加上去!SpringBoot整合Mybatis-Plus和数据源
  1、在pom.xml中依赖如下:     mysql     mysql-connector-java     8.0.27        com.baomidou     mybatis-plus-boot-starter     3.5.2  复制代码
  2、准备一个数据库表kss_userCREATE TABLE `kss_user` (   `id` int NOT NULL AUTO_INCREMENT,   `user_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,   `password` varchar(255) DEFAULT NULL,   `real_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,   `gender` int DEFAULT NULL,   `birthday` date DEFAULT NULL,   `create_time` datetime DEFAULT NULL,   `update_time` datetime DEFAULT NULL,   PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; 复制代码
  3、配置数据源和mybatis配置
  在项目的resource目录下的application.yaml配置如下:server:   port: 8080  # 数据源配置 spring:   application:     name: pug-springboot-ssm   datasource:     type: com.zaxxer.hikari.HikariDataSource     driver-class-name: com.mysql.cj.jdbc.Driver     url: jdbc:mysql://127.0.0.1:3306/ssm_db?serverTimezone=GMT%2b8&useUnicode=true&useSSL=false&characterEncoding=UTF-8     username: root     password: 123456     hikari:       connection-timeout: 60000       validation-timeout: 3000       idle-timeout: 60000       login-timeout: 5       max-lifetime: 60000       maximum-pool-size: 30       minimum-idle: 10       read-only: false   # mybatis-plus配置 mybatis-plus:   configuration:     log-impl: org.apache.ibatis.logging.stdout.StdOutImpl   mapper-locations:     - classpath*:/mapper/*.xml 复制代码
  4、在resource新建一个mapper文件用来存放mybatis的xml文件
  5、springboot整合mybatis-pluspackage com.ksd.pug;  import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;  @SpringBootApplication @MapperScan("com.ksd.pug.mapper") public class PugSpringbootSsmApplication {      public static void main(String[] args) {         SpringApplication.run(PugSpringbootSsmApplication.class, args);     }  } 复制代码SpringBoot实现对用户表的CRUD操作
  01、pojopackage com.ksd.pug.pojo;  import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import lombok.ToString;  import java.io.Serializable; import java.util.Date;  @Data @AllArgsConstructor @NoArgsConstructor @ToString @TableName("kss_user") public class User implements Serializable {      @TableId(type = IdType.AUTO)     private Integer id;     private String username;     private String password;     private String realName;     private Integer gender;     private Date birthday;  } 复制代码
  02、mapperpackage com.ksd.pug.mapper;  import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ksd.pug.pojo.User;  public interface UserMapper extends BaseMapper { } 复制代码
  03、service和serviceImplpackage com.ksd.pug.service;  import com.baomidou.mybatisplus.extension.service.IService; import com.ksd.pug.pojo.User;  public interface IUserService extends IService { } 复制代码package com.ksd.pug.service;  import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ksd.pug.mapper.UserMapper; import com.ksd.pug.pojo.User; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service;  @Slf4j @Service public class IUserServiceImpl extends ServiceImpl implements IUserService { } 复制代码
  04、controllerpackage com.ksd.pug.controller;   import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ksd.pug.config.exception.BusinessException; import com.ksd.pug.config.results.Code; import com.ksd.pug.config.results.Result; import com.ksd.pug.pojo.User; import com.ksd.pug.service.IUserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*;  @RestController @RequestMapping("/user") public class UserController {      @Autowired     private IUserService userService;      @PostMapping     public Result save(User user){         boolean flag = userService.saveOrUpdate(user);         return new Result(flag ? Code.SAVE_OK:Code.SAVE_ERROR);     }      @PutMapping     public Result update(User user){         boolean flag = userService.updateById(user);         return new Result(flag ? Code.UPDATE_OK:Code.UPDATE_ERROR);     }      @DeleteMapping("/{id}")     public Result delete(Integer id){         boolean flag = userService.removeById(id);         return new Result(flag ? Code.DELETE_OK:Code.DELETE_ERROR);     }      @GetMapping("/{id}")     public Result get(@PathVariable("id")Integer id) throws BusinessException {         User user = userService.getById(id);         // 模拟出现异常,使用条件控制,便于测试结果         if (id == 10) {             throw new BusinessException("查询出错了,请重试!",Code.GET_ERROR);         }         return new Result(null != user ? Code.GET_OK :Code.GET_ERROR,user);     }      @GetMapping("/{pageNo}/{pageSize}")     public Result getAll(@PathVariable Integer pageNo,@PathVariable Integer pageSize){         // 1、设置分页         Page page = new Page<>(pageNo,pageSize);         // 2、设置条件         LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>();         // 3、查询分页返回         IPage page1 = userService.page(page, lambdaQueryWrapper);         return new Result(null != page1 ? Code.GET_OK :Code.GET_ERROR,page1);     }   } 复制代码Mybatis-Plus的分页失效问题@Configuration public class MybatisPlusConfig {      /**      * 新的分页插件,一缓和二缓遵循mybatis的规则,需要设置 MybatisConfiguration#useDeprecatedExecutor = false 避免缓存出现问题(该属性会在旧插件移除后一同移除)      */      @Bean     public MybatisPlusInterceptor mybatisPlusInterceptor() {         MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();         interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));         return interceptor;     }  } 复制代码Mybatis-Plus的创建时间和更新时间回填问题定义个回填配置类@Slf4j @Component  public class MyMetaObjectHandler implements MetaObjectHandler {      @Override     public void insertFill(MetaObject metaObject) {         log.info("start insert fill...");         //default MetaObjectHandler setFieldValByName(String fieldName, Object fieldVal, MetaObject metaObject)         this.setFieldValByName("createTime",new Date(),metaObject);         this.setFieldValByName("updateTime",new Date(),metaObject);      }      @Override     public void updateFill(MetaObject metaObject) {         this.setFieldValByName("updateTime",new Date(),metaObject);     } } 复制代码在pojo中使用@TableFiled(fill=xxx)指定回填触发方法package com.ksd.pug.pojo;  import com.baomidou.mybatisplus.annotation.*; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import lombok.ToString;  import java.io.Serializable; import java.util.Date;  @Data @AllArgsConstructor @NoArgsConstructor @ToString @TableName("kss_user") public class User implements Serializable {      @TableId(type = IdType.AUTO)     private Integer id;     private String userName;     private String password;     private String realName;     private Integer gender;     private Date birthday;     @TableField(fill = FieldFill.INSERT)     private Date createTime;     @TableField(fill = FieldFill.INSERT_UPDATE)     private Date updateTime;  } 复制代码
  数据库级别的解决方案
  首先将字段设置为timestamp,然后设置不是null,根据当前时间戳更新,在这里注意我们的create_time是不根据当前时间戳更新的!这种方式虽然可以但是不建议!
  在mysql低版本的时候可能会出现一个问题,你的sql语句无法导入,而导致这个的原因是有的他只可以设置一个timestamp(在这里提示:mysql5.7 、mysql8.0是可以的!)Mybatis-Plus是怎么做到不写sql但是可以实现CRUD操作背后绝对是拼接SQL语句,然后调用mybatis底层执行sql。
  具体需要学习mp!
  作者:Nakano_May
  链接:https://juejin.cn/post/7183739358883610680

关于我一点点,把能记住的写下来,哪天忘了,可以翻出来看看,美好简单的东西,永远都不过时。她,是我认识的第一个她,留下美好的她,简单的她,仙女的她,自然的她。一年级不重要,重要的是,我已经不想,不等,不期待阅读本文前,点击上方卡片一键关注Episode02334慢慢的,不问,不闹,不奢望,不想,不等,不期待,看透了许多,也看淡了许多,想说的话越来越少,放心里的事越来越多。这世上到处都城楼上的一块砖,为什么500年没人敢动?给大家讲述一个嘉峪关比较有趣的故事去嘉峪关旅游人的可能都看见了,观察嘉峪关城楼墙边外侧发现那里多出来了一块砖,很特别,这是为什么呢?为什么没人把它取掉呢?这里面就有一个比较有趣的故国庆特别策划凭实力出圈,科学城的小众打卡地大有耍事放假来来去去都是逛景点?NO!今天是国庆小长假第三天,如果你还没有想好去哪里,那就来科学城的这些小众打卡点吧莫看小众,但是大有耍事。尤其是屏幕前的年轻崽儿们,一定码住了,收藏走一波女玩家和国服露娜奔现,第2天被删好友,才发现有多名受害者前言各位小伙伴大家好,这里是不仅游戏打得6,长得还很帅的熊猫哥哥王者荣耀中网恋处cp是再常见不过的事,有很多玩家都想找一个人和自已一起玩,甜蜜双排,岂不乐哉,也的确有不少玩家在王者20句睿智走心的阳光短句,送给身处迷茫的你1生活是自己的,你选择怎样的生活,就会成就怎样的你。2越用心的东西,越能长久,因为,用多长时间学会,就得多长时间遗忘。3要学会做一只菜鸟,为了有一天能成为凤凰,努力修炼自身,才会有蓝牙耳机啥牌子好?测评员总结五大口碑蓝牙耳机推荐蓝牙耳机是我们日常生活不可缺少的一部分,无论是听歌追剧玩游戏运动健身都少不了它。蓝牙耳机的价格跨度大,品牌多难免让大家不知道蓝牙耳机啥牌子好,今天李楠就详细聊聊这个话题,分享五款目南卡小音舱,引领潮流,带你探索音乐的快乐星球什么是快乐星球?小时候看的快乐星球至今还能想起当中的点点滴滴,只需要使用吊坠在空格键上点一下就能够来到遥远的快乐星球,在那里没有烦恼,只有永恒的快乐。而长大工作后似乎只有每日通勤时芯片之母被美封锁,我国芯片如何突围这几年,有一个非常先进的设备映入了大家眼帘光刻机。虽然大家没有在生活中见过光刻机,可这并不影响大家知道光刻机的作用。光刻机嘛,就是拿来造芯片的设备,没有了它就造不出芯片。之所以知道十年生死两茫茫,不思量自难忘今天在网上看到一个问题,如果给你一次机会,你最想回到哪一年,我写的是,2016年不认识一个朋友,我就不至于落魄到现在的地步,2016年我和她还有她弟弟十一同游白云山,在缆车上因为高马云说对了!电商终将被淘汰,新购物模式已经在全国崛起,望周知说到马云这位大企业家,大家对他的印象一定都是,特别有钱,并且对未来的行业发展,把控的十分精准。在马云还没有成功的时候,大家都不会觉得他说的话有什么分量和准确性。但是当他打造了阿里巴
紧急求助!考上民办二本,想以大学新生身份参军,在部队有前途吗?我的视野中就有类似这样的一个例子。他是五年前考上的一个专科学校,这时呢,家长感觉专科毕业后工作难找,愿意让他参军并提出了建议,他报名体验合格后就入伍了。现在呢,他成为了一期士官,之一般公司中,女性当领导的,都是什么样的?第一次遇到的公司女性领导,是我工作的第一家销售型公司。当时老板代理的一款产品销售很火爆,年利润在千万以上,于是老板让他的老婆崔老师辞掉原来的工作,来公司任财务总监,我们都称呼崔老师请问女性超过50周岁,还能自己交社保吗?完全可以,但只建议你就居民社保!为什么这么说呢?你母亲已经57岁了,就算你经济条件好,交职工社保已经来不及了,因为职工社保女性是55周岁退休,不允许补缴,如果继续买满15年她就到7山东科技大学和青岛科技大学哪个学校更好些?论综合实力的话山科要好于青科(博士,硕士点,重点实验室,院士数量)山科的优势专业是采矿,计算机,机械青科的化工类很不错。山科往年的高考分数要比青科高一点,不过不会差太多地理位置都差公司新人进来工资却比老员工高,作为老员工,你会怎么办?很多企业都是新员工的工资高于老员工的工资,也造就了想拿高薪就必须跳槽,不跳槽就不能拿高薪的怪圈。原因如下1物价上涨,导致很多企业都在调整薪酬,但却没有给老员工跳槽薪酬,即使调整,但做保险销售有什么方法寻找客户资源?保险业务员的获客渠道其实有很多的,主要是看你自己适合哪个渠道。简单的说一些获客渠道吧。第一缘故市场这个是很多保险销售起步的地方,因为现在买保险的人很多,卖保险的人也很多,而中国人又什么工作单位的食堂几乎是免费的?国家机关各单位都不可以享受免费的一日三餐。象征性的的收费,是一种腐败行为。纪检监察机关不可视而不见。落实廉政八项规定,这个问题应当着手解决。大型国有企业行政事业单位,他们的食堂基本半路出家的会计,做了5年,还是很难找到工作是为啥?年龄大的问题吗?感谢悟空邀请我是郑老师,一名从事财务和审计工作22年的老兵!2004年通过注册会计师,从2005年开始从事会计师事务所审计工作至今。喜欢研究财务审计和税务!半路出家的会计,做了5年国家电网面向社会招聘吗?中公电网新媒体专员为您回答国家电网是大型国有企业,许多同学想要在大学毕业进入工作,不过阴差阳错机缘巧合,可能就没能如愿以偿,又听说国家电网的统招只要应届毕业生,那么,国家电网面向社如果每天有稳定的300元收入,让你不上班你愿意吗?那可不行哦!上有老下有小的,今后60岁退休咋办啊?除非退休有保障差不多哦愿意。这大概就是所谓的睡后收入吧,也是大多数人想要实现的一种生活。不上班,不代表没有事做,相反可以有更多的时为什么现在很多男孩子找不到对象?男多姑娘少,媳妇不好找,如果都平衡,妻子向家跑。谢邀。有好多男生找不到女朋友,这几乎是个怪圈。你说,工资低没楼没车的男生找女朋友困难,但有些高薪有楼有车的男生照样找不到女朋友,你说