第一单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. Unity字体和画面花屏处理

    字体花屏和相机渲染花屏,这两者的表现有明显的差异. 字体花屏 字体花屏是持续性的,直到组件被刷新,或字体图集被刷新.目前在我们项目中当游戏启动时,就会填充游戏用到的所有字符到贴图中,所以并没有遇到此问 ...

  2. nginx适配thinkphp3.2.3

    环境 centos7.9 nginx1.23.2 thinkphp3.2.3 PHP7.4.30 配置 配置nginx 默认位置在/usr/local/nginx/conf/nginx.conf主要配 ...

  3. 苹果新一代“超级芯片”曝光:M3 Ultra最高可达32核CPU

    近日,据外媒消息,苹果计划在2024年推出新一代"超级芯片"M3 Ultra. 据悉,M3 Ultra将大幅增加CPU核心数量,同时GPU核心数量也将适度增加. 具体来说,M3 U ...

  4. (Python)每日代码||2024.1.17||函数中给列表形参默认值时,该默认列表在函数中的改变会保留下来

    def f(x,li=[1]): print(id(li)) li.append(x) print(li) f('a')#第一次调用函数 print() f('b')#第二次调用函数 print() ...

  5. electron 开发 ,如何使用 第三方 库 进行typescript 开发,举例:jquery 其它的 应该也是一致。

    首先要弄明白一点,electron 开发 与 nodejs开发 基本一致. 要引入 jquery 实际上就是 nodejs 引入 jquery 第一步是 去 nmp中央仓库,查看,里面有详细的说明使用 ...

  6. 2021 ASP.NET Core 开发者路线图

    GitHub地址:https://github.com/MoienTajik/AspNetCore-Developer-Roadmap/blob/master/ReadMe.zh-Hans.md

  7. Java基础综合测试

    Java版基础练习题: 输入练习: [问题描述] 任务很简单: 给定若干个整数,请编程输出它们的和. [输入形式] 输入包含多组测试用例. 每组测试数据首先是一个正整数N,表示本组数据有N个整数. 请 ...

  8. wmctf的题解&blindless&exit_hook

    0x00 好久不见 2023.8.25 夜里 wmctf2023也是一个收获很大的比赛.只做了一个blindless,但是体会到了无泄露做出题来的奥妙.踩过的坑(学到的东西)包括但不限于 调试要用do ...

  9. Host跨网段的ARP request

    写得很清楚的文章:ARP协议在同网段及跨网段下的工作原理 对应的官方ARP文档:RFC 826 对文档的解读:详解RFC 826文档 ARP跨网段进行request包发送,需要先检测自身子网是否与对方 ...

  10. 开年喜报!Walrus成功入选CNCF云原生全景图

    近日,数澈软件 Seal (以下简称"Seal")旗下开源应用管理平台 Walrus 成功入选云原生计算基金会全景图(CNCF Landscape)并收录至 "App D ...