第一单fqb  申明,项目的框架技术架构,前端运行时node   后端框架spring  开发前准备:mysbatis官网随时看文档,IDEa 202编释器2  环境配置,idea配置一下mavem路径,配置文件编码,配置编释器版本1.8.

初始化项目,使用sping Initializr,初始化spring Boot工程, 相关信息为:Group: com.atguigu  Artifact: mybatis_plus    版本2.2.1.RELEASE

注意引用MyBatis_plus之后不要再次引用MyBatis,避免版本差异带来的新问题。

版本选择主版本

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.1.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>

第一个demo 先让程 序跑起来,

先安装依赖:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.1.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>demo1</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo1</name>
<description>demo1</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency> <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
<scope>test</scope>
</dependency> <dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.3.1</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
</dependencies> <build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>3.0.1</version>
</plugin>
</plugins>
</build> </project>

  

再配置 数据库

spring.datasource.driver-class-name = com.mysql.cj.jdbc.Driver

spring.datasource.url = jdbc:mysql://192.168.3.138:3306/xsy_test?characterEncoding=utf-8&useSSL=false

#带时区写法

#spring.datasource.driver-class-name = com.mysql.cj.jdbc.Driver

#另一种 简写

#spring.datasource.url = jdbc:mysql://192.168.3.138:3306/xsy_test?serverTimezone = GMT%2B8

spring.datasource.username= xsy
spring.datasource.password = 3RSG1v7Sz,iv

spring.datasource.username= xsyspring.datasource.password = 3RSG1v7Sz,iv
由于用到springboot 需要进行包扫描,在入口文件配置上mapper包的路径
@SpringBootApplication
@MapperScan("com.atguigu.mybatis_plus.mapper")
public class MybatisPlusApplication {

public static void main(String[] args) {
SpringApplication.run(MybatisPlusApplication.class, args);
}

}


实现第一个demo 很简音,先写一个对应表的实体结构对象,第二步,mapper类继承一个mybits的类,将泛型指向这个类就好,这样这个mapper 类就有好了很多方法
第一步,实现实体表的对应对象:

第二步,新建mapper文件,

第三步的话时候mapper就有好多功能了,可以在测试中试用一下方法:新方法: usr.forEach(System.out::printLn)

为了查看sql语名,应 在配置 文 件中增加一句

mybatis-plus.configuration.log-impl = org.apache.ibatis.logging.stdout.StdOutImpl
这个在mybatis也有这个配置,只是做了升级。

控制台输出执行SQL语句

mybatis的配置文件----mybatis-config.xml如下:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<settings>
<!-- 打印sql日志 -->
<setting name="logImpl" value="STDOUT_LOGGING" />
</settings>
</configuration>

  

增加一条记录示例:

在增l加对象的时候,如果没有的手工增加Id ,mybatis_plus 也会生成id ,但是Id号为内部实现的随机雪花算法,所以如果需要,我们使用以下方法产生自己想要的格式Id

如果要使用自增id  需要数据库配置 为id自增, 然后增加以下注解,

 @TableId(type = IdType.AUTO)
public class User {
@TableId(type = IdType.ASSIGN_ID)
//注意是Long而不是long
//若使用long 将无法随机生成id(仅生成0)
private long id;
以上注解代码可以不写反正是默认,如果可以换成自增才需要使用自增ID注解
public class User {
// 以下注解会主健自增
@TableId(type = IdType.AUTO)
// 如果没有写默认会是雪花算法生成id
private Long id;
private String name;
private Integer age;
private String email;
}
组件自增从多少开始增,在数据库存的配置高级中可以设置,但是我的工具没有找到这个配置



如果每个实体都要上自增ID的注解,可以用配置 来解决,配置 文 件中加入

#全局设置主健生成策略,
mybatis-plus.global-config.db-config.id-type=auto

按id更新   注意那个id 写法(1L)指id为1的长整型

在规划中每一条数据都要记录更新时间,操作时间,所以得需要在表中建相关字段create_time,(类型 datetime)

update_time,
然后在java结构体中也增加privte Date createTime private Date updateTimeo
数据库表中有下划线,但是结构体中可以不写,但是下划线后面的单司首字线是大写可以了

然后每次插入,删除,或更新字段时手动更新关于时间的字段,这儿自导包的包是Utle工具类的包

user.setCreateTime(new Date())

user.setUpdateTime(new Date())

关于时间的字段可以优化,解决方案有通过数据库设置默认值,但不推荐,建议在业务层解决

通过new Date()  取值放放太麻烦,所以mybatis-puls 帮我提供了插件 可以成,新建一个配置类,内容为:

package com.example.demo.handler;

import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component; import java.util.Date; @Component
public class MyMetaObjectHandler implements MetaObjectHandler {
@Override
public void insertFill(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);
}
}

然后在结构体上增加自增注解:

   @TableField(fill = FieldFill.INSERT)
private Date createTime;
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateTime;

 以下为图片记录:先是配置类

然后结构体对应表

乐观锁内容笔记

在练习sql 锁之前,得准备一张数据库表:使用以下sql语句创建表:
CREATE TABLE product ( id BIGINT(20) NOT NULL COMMENT '主键id', name VARCHAR(30) NULL DEFAULT NULL COMMENT '商品名称', price INT(11) DEFAULT 0 COMMENT '价格', version INT(11) DEFAULT 0 COMMENT '乐观锁版本', PRIMARY KEY(id) );

乐观锁是一种 配置,需要新建配置类,加上配置注解,然后在使用的地方加上乐观锁的注解。

项是中肯定有事务,需要加上事务标记

乐观锁处理,

查询多条的的方法:

条件查询and

 



spingboot打造教育平台(谷粒学院课程笔记)的更多相关文章

  1. Django+xadmin打造在线教育平台(六)

    九.课程章节信息 9.1.模板和urls 拷贝course-comments.html 和 course-video.html放入 templates目录下 先改course-video.html,同 ...

  2. Django+xadmin打造在线教育平台(五)

    目录 在线教育平台(一)      在线教育平台(二) 在线教育平台(三)      在线教育平台(四) 在线教育平台(五)      在线教育平台(六) 在线教育平台(七)      在线教育平台( ...

  3. 第三百七十六节,Django+Xadmin打造上线标准的在线教育平台—创建用户操作app,在models.py文件生成5张表,用户咨询表、课程评论表、用户收藏表、用户消息表、用户学习表

    第三百七十六节,Django+Xadmin打造上线标准的在线教育平台—创建用户操作app,在models.py文件生成5张表,用户咨询表.课程评论表.用户收藏表.用户消息表.用户学习表 创建名称为ap ...

  4. 第三百七十五节,Django+Xadmin打造上线标准的在线教育平台—创建课程机构app,在models.py文件生成3张表,城市表、课程机构表、讲师表

    第三百七十五节,Django+Xadmin打造上线标准的在线教育平台—创建课程机构app,在models.py文件生成3张表,城市表.课程机构表.讲师表 创建名称为app_organization的课 ...

  5. 第三百七十四节,Django+Xadmin打造上线标准的在线教育平台—创建课程app,在models.py文件生成4张表,课程表、课程章节表、课程视频表、课程资源表

    第三百七十四节,Django+Xadmin打造上线标准的在线教育平台—创建课程app,在models.py文件生成4张表,课程表.课程章节表.课程视频表.课程资源表 创建名称为app_courses的 ...

  6. Django+xadmin打造在线教育平台(二)

    三.xadmin后台管理 3.1.xadmin的安装 django2.0的安装(源码安装方式): https://github.com/sshwsfc/xadmin/tree/django2 把zip ...

  7. Django+xadmin打造在线教育平台(一)

    目录 在线教育平台(一)      在线教育平台(二) 在线教育平台(三)      在线教育平台(四) 在线教育平台(五)      在线教育平台(六) 在线教育平台(七)      在线教育平台( ...

  8. 第三百九十六节,Django+Xadmin打造上线标准的在线教育平台—其他插件使用说,自定义列表页上传插件

    第三百九十六节,Django+Xadmin打造上线标准的在线教育平台—其他插件使用说,自定义列表页上传插件 设置后台列表页面字段统计 在当前APP里的adminx.py文件里的数据表管理器里设置 ag ...

  9. 第三百九十五节,Django+Xadmin打造上线标准的在线教育平台—Xadmin集成富文本框

    第三百九十五节,Django+Xadmin打造上线标准的在线教育平台—Xadmin集成富文本框 首先安装DjangoUeditor3模块 Ueditor HTML编辑器是百度开源的HTML编辑器 下载 ...

  10. 第三百九十四节,Django+Xadmin打造上线标准的在线教育平台—Xadmin后台进阶开发配置2,以及目录结构说明

    第三百九十四节,Django+Xadmin打造上线标准的在线教育平台—Xadmin后台进阶开发配置2,以及目录结构说明 设置后台列表页面可以直接修改字段内容 在当前APP里的adminx.py文件里的 ...

随机推荐

  1. # 再次推荐github 6.7k star开源IM项目OpenIM性能测试及消息可靠性测试报告

    本报告主要分为两部分,性能测试和消息可靠性测试.前者主要关注吞吐,延时,同时在线用户等,即通常所说的性能指标.后者主要模拟真实环境(比如离线,在线,弱网)消息通道的可靠性. 先说结论,对于容量和性能: ...

  2. 从 WebStorm 转到 VSCode!使用一周体验报告

    前言 最近我的 Jetbrains 开源项目授权到期了,想要续订的时候发现 Jetbrains 提高了开源项目申请门槛,我的 StarBlog 项目因为名字里包含 blog 这个词无法申请,虽然我在 ...

  3. go中bufio使用小结

    bufio 前言 例子 bufio 源码解析 Reader对象 实例化 ReadSlice ReadString ReadLine Peek Scanner Give me more data Err ...

  4. pandas读取txt---按行输入按行输出

    1.pandas读取txt---按行输入按行输出 import pandas as pd # 我们的需求是 取出所有的姓名 # test1的内容 ''' id name score 1 张三 100 ...

  5. Spring自带的这11个工具类,真香!

    前言 最近有些小伙伴,希望我分享一些好用的工具类,帮他们提升开发效率. 今天这篇文章专门跟大家一起总结一下,Spring框架本身自带的一些好用的工具类,希望对你会有所帮助. 1 Assert 很多时候 ...

  6. 【双指针】双指针算法详解两道经典OJ【力扣27,力扣26,力扣38】超详细算法教程

    [双指针]双指针算法详解两道经典OJ[力扣27,力扣26,力扣38]超详细算法教程 今天又又到了我们刷力扣题的时间啦! 今天博主给大家带来的三道题是: 27. 移除元素 26. 删除有序数组中的重复项 ...

  7. 【奶奶看了都会】Meta开源大模型LLama2部署使用教程,附模型对话效果

    1.写在前面 就在7月19日,MetaAI开源了LLama2大模型,Meta 首席科学家.图灵奖获得者 Yann LeCun在推特上表示Meta 此举可能将改变大模型行业的竞争格局.一夜之间,大模型格 ...

  8. navicat破解(15以前的版本)

    navicat破解各种不成功,很耽误事.所以,再次整理一个相对省事有效的办法.内容如下: 一:下载此激活工具 二:按下图生成激活码 1. 2. 点击手动激活 3. 将请求码按图粘贴,按图点击操作便可激 ...

  9. 轻松玩转makefile | 变量与模式

    前言 本文通过简单的几个示例,以及对同一个Makefile进行几个版本的迭代,帮助快速的理解变量和模式规则的使用. 1.回顾 在上一篇文章中,我们使用Makefile编译fun.c和main.c这两个 ...

  10. STM32F103C8T6与W5500的运行示例

    模块说明 W5500的厂商是韩国WIZnet, 特性如下 全硬件TCP/IP协议栈: TCP,UDP,ICMP,IPv4,ARP,IGMP,PPPoE -- 注意只有IPv4 支持SPI模式0,3, ...