spingboot打造教育平台(谷粒学院课程笔记)
第一单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打造教育平台(谷粒学院课程笔记)的更多相关文章
- Django+xadmin打造在线教育平台(六)
九.课程章节信息 9.1.模板和urls 拷贝course-comments.html 和 course-video.html放入 templates目录下 先改course-video.html,同 ...
- Django+xadmin打造在线教育平台(五)
目录 在线教育平台(一) 在线教育平台(二) 在线教育平台(三) 在线教育平台(四) 在线教育平台(五) 在线教育平台(六) 在线教育平台(七) 在线教育平台( ...
- 第三百七十六节,Django+Xadmin打造上线标准的在线教育平台—创建用户操作app,在models.py文件生成5张表,用户咨询表、课程评论表、用户收藏表、用户消息表、用户学习表
第三百七十六节,Django+Xadmin打造上线标准的在线教育平台—创建用户操作app,在models.py文件生成5张表,用户咨询表.课程评论表.用户收藏表.用户消息表.用户学习表 创建名称为ap ...
- 第三百七十五节,Django+Xadmin打造上线标准的在线教育平台—创建课程机构app,在models.py文件生成3张表,城市表、课程机构表、讲师表
第三百七十五节,Django+Xadmin打造上线标准的在线教育平台—创建课程机构app,在models.py文件生成3张表,城市表.课程机构表.讲师表 创建名称为app_organization的课 ...
- 第三百七十四节,Django+Xadmin打造上线标准的在线教育平台—创建课程app,在models.py文件生成4张表,课程表、课程章节表、课程视频表、课程资源表
第三百七十四节,Django+Xadmin打造上线标准的在线教育平台—创建课程app,在models.py文件生成4张表,课程表.课程章节表.课程视频表.课程资源表 创建名称为app_courses的 ...
- Django+xadmin打造在线教育平台(二)
三.xadmin后台管理 3.1.xadmin的安装 django2.0的安装(源码安装方式): https://github.com/sshwsfc/xadmin/tree/django2 把zip ...
- Django+xadmin打造在线教育平台(一)
目录 在线教育平台(一) 在线教育平台(二) 在线教育平台(三) 在线教育平台(四) 在线教育平台(五) 在线教育平台(六) 在线教育平台(七) 在线教育平台( ...
- 第三百九十六节,Django+Xadmin打造上线标准的在线教育平台—其他插件使用说,自定义列表页上传插件
第三百九十六节,Django+Xadmin打造上线标准的在线教育平台—其他插件使用说,自定义列表页上传插件 设置后台列表页面字段统计 在当前APP里的adminx.py文件里的数据表管理器里设置 ag ...
- 第三百九十五节,Django+Xadmin打造上线标准的在线教育平台—Xadmin集成富文本框
第三百九十五节,Django+Xadmin打造上线标准的在线教育平台—Xadmin集成富文本框 首先安装DjangoUeditor3模块 Ueditor HTML编辑器是百度开源的HTML编辑器 下载 ...
- 第三百九十四节,Django+Xadmin打造上线标准的在线教育平台—Xadmin后台进阶开发配置2,以及目录结构说明
第三百九十四节,Django+Xadmin打造上线标准的在线教育平台—Xadmin后台进阶开发配置2,以及目录结构说明 设置后台列表页面可以直接修改字段内容 在当前APP里的adminx.py文件里的 ...
随机推荐
- C#使用Elasticsearch入门
一.Elasticsearch 简介 Elasticsearch 是一个分布式.RESTful 风格的搜索和数据分析引擎,能够解决不断涌现出的各种用例.作为 Elastic Stack 的核心,它集中 ...
- python读取json格式文件大量数据,以及python字典和列表嵌套用法详解
1.Python读取JSON报错:JSONDecodeError:Extra data:line 2 column 1 错误原因: JSON数据中数据存在多行,在读取数据时,不能够单单用open(), ...
- 【一】AI Studio 项目详解【(一)VisualDL工具、环境使用说明、脚本任务、图形化任务、在线部署及预测】PARL
相关文章 [一]-环境配置+python入门教学 [二]-Parl基础命令 [三]-Notebook.&pdb.ipdb 调试 [四]-强化学习入门简介 [五]-Sarsa&Qlear ...
- OS X 下安装 pycurl
1 (venv) ➜ pythonProject4 find / -iname ssl.h 2 find: /usr/sbin/authserver: Permission denied 3 /usr ...
- Java实现将中缀表达式转换到后缀表达式
思路: 1.初始化两个栈 运算符栈 s1 和储存中间结果栈 s22. 从左到右扫描中缀表达式3. 遇到操作数时 压入s24. 遇到操作符 o1 时 比较其与 S1 栈顶运算符的优先级 1)如果s1为空 ...
- Node工程使用云服务器中的redis镜像做数据库
Redis镜像安装 在云服务器中执行指令 docker pull redis 添加redis镜像实例的配置 [root@VM-0-11-centos ~]# cd /home [root@VM-0 ...
- Excel快速调整单元格行高和列宽
之前使用的是鼠标双击的方法,但是只适用于少量调整时. 今天给同事编辑公众号文章,有一大篇表格在word中,直接从word中复制到公众号的话,格式会有一定程度的错位. 于是先粘贴到excel中处理,但到 ...
- MySQL主主+Keepalived架构安装部署
需求:根据当前客户的生产环境,模拟安装部署一套MySQL主主+Keepalived架构的测试环境,方便后续自己做一些功能性的测试. 1.准备工作 2.MySQL安装部署 3.MySQL主主配置 4.K ...
- Java 运算符 - 除法
1. 除法运算符 Java中的除法运算符是"/"符号,表示将左侧操作数除以右侧操作数. 2. 整数除法 在Java中,整数除法的结果是一个整数,即只保留除法的整数部分,舍去小数部分 ...
- 亚马逊Dynamo数据库解读(英文版)
最近看了亚麻的Dynamo,个人认为其中always writeable的业务目标,对于DHT,vector clock,merkel tree的应用,包括对于一致性和高可用的权衡(基于CAP猜想,实 ...
