当前位置:网站首页>EASYCODE template
EASYCODE template
2022-06-12 17:43:00 【*Night Star River】
1 Mybatis
1.1 controller.java.vm
## Define the initial variable
#set($tableName = $tool.append($tableInfo.name, "Controller"))
## Set callback
$!callback.setFileName($tool.append($tableName, ".java"))
$!callback.setSavePath($tool.append($tableInfo.savePath, "/controller"))
## Get the primary key
#if(!$tableInfo.pkColumn.isEmpty())
#set($pk = $tableInfo.pkColumn.get(0))
#end
#if($tableInfo.savePackageName)package $!{
tableInfo.savePackageName}.#{
end}controller;
import $!{
tableInfo.savePackageName}.entity.$!{
tableInfo.name};
import $!{
tableInfo.savePackageName}.service.$!{
tableInfo.name}Service;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import javax.annotation.Resource;
/** * $!{tableInfo.comment}($!{tableInfo.name}) Table control layer * * @author $!author * @since $!time.currTime() */
@RestController
@RequestMapping("$!tool.firstLowerCase($tableInfo.name)")
public class $!{
tableName} {
/** * service object */
@Resource
private $!{
tableInfo.name}Service $!tool.firstLowerCase($tableInfo.name)Service;
/** * Query all the data * * @return Instance object collection */
@GetMapping("/queryAll")
public ResponseEntity<List> queryAll() {
return ResponseEntity.ok(this.$!{
tool.firstLowerCase($tableInfo.name)}Service.queryAll());
}
/** * Query single data through primary key * * @param id Primary key * @return A single data */
@GetMapping("{id}")
public ResponseEntity<$!{
tableInfo.name}> queryById(@PathVariable("id") $!pk.shortType id) {
return ResponseEntity.ok(this.$!{
tool.firstLowerCase($tableInfo.name)}Service.queryById(id));
}
/** * Query specified row data * * @return Instance object collection */
@GetMapping("/queryAllByLimit")
public ResponseEntity<$!{
tableInfo.name}> queryAllByLimit(Integer page, Integer pageSize) {
return ResponseEntity.ok(this.$!{
tool.firstLowerCase($tableInfo.name)}Service.queryAllByLimit(page, pageSize));
}
/** * The new data * * @param $!{tool.firstLowerCase($tableInfo.name)} Entity * @return New results */
@PostMapping("/add")
public ResponseEntity<$!{
tableInfo.name}> add($!{
tableInfo.name} $!{
tool.firstLowerCase($tableInfo.name)}) {
return ResponseEntity.ok(this.$!{
tool.firstLowerCase($tableInfo.name)}Service.insert($!{
tool.firstLowerCase($tableInfo.name)}));
}
/** * Edit the data * * @param $!{tool.firstLowerCase($tableInfo.name)} Entity * @return Edit the results */
@PutMapping("/edit")
public ResponseEntity<$!{
tableInfo.name}> edit($!{
tableInfo.name} $!{
tool.firstLowerCase($tableInfo.name)}) {
return ResponseEntity.ok(this.$!{
tool.firstLowerCase($tableInfo.name)}Service.update($!{
tool.firstLowerCase($tableInfo.name)}));
}
/** * Delete data * * @param id Primary key * @return Delete successful */
@DeleteMapping("/deleteById")
public ResponseEntity<Boolean> deleteById($!pk.shortType id) {
return ResponseEntity.ok(this.$!{
tool.firstLowerCase($tableInfo.name)}Service.deleteById(id));
}
}
1.2 serviceImpl.java.vm
## Define the initial variable
#set($tableName = $tool.append($tableInfo.name, "ServiceImpl"))
## Set callback
$!callback.setFileName($tool.append($tableName, ".java"))
$!callback.setSavePath($tool.append($tableInfo.savePath, "/service/impl"))
## Get the primary key
#if(!$tableInfo.pkColumn.isEmpty())
#set($pk = $tableInfo.pkColumn.get(0))
#end
#if($tableInfo.savePackageName)package $!{
tableInfo.savePackageName}.#{
end}service.impl;
import $!{
tableInfo.savePackageName}.entity.$!{
tableInfo.name};
import $!{
tableInfo.savePackageName}.dao.$!{
tableInfo.name}Dao;
import $!{
tableInfo.savePackageName}.service.$!{
tableInfo.name}Service;
import org.springframework.stereotype.Service;
import java.util.List;
import javax.annotation.Resource;
/** * $!{tableInfo.comment}($!{tableInfo.name}) Table service implementation class * * @author $!author * @since $!time.currTime() */
@Service("$!tool.firstLowerCase($!{tableInfo.name})Service")
public class $!{
tableName} implements $!{
tableInfo.name}Service {
@Resource
private $!{
tableInfo.name}Dao $!tool.firstLowerCase($!{
tableInfo.name})Dao;
/** * Query all the data * * @return Instance object collection */
@Override
public List<$!{
tableInfo.name}> queryAll() {
return this.$!{
tool.firstLowerCase($!{
tableInfo.name})}Dao.queryAll();
}
/** * adopt ID Query single data * * @param $!pk.name Primary key * @return Instance object */
@Override
public $!{
tableInfo.name} queryById($!pk.shortType $!pk.name) {
return this.$!{
tool.firstLowerCase($!{
tableInfo.name})}Dao.queryById($!pk.name);
}
/** * Query specified row data * * @return Instance object collection */
@Override
public $!{
tableInfo.name} queryAllByLimit(Integer page, Integer pageSize) {
return this.$!{
tool.firstLowerCase($!{
tableInfo.name})}Dao.queryAllByLimit(page, pageSize);
}
/** * The new data * * @param $!tool.firstLowerCase($!{tableInfo.name}) Instance object * @return Instance object */
@Override
public $!{
tableInfo.name} insert($!{
tableInfo.name} $!tool.firstLowerCase($!{
tableInfo.name})) {
this.$!{
tool.firstLowerCase($!{
tableInfo.name})}Dao.insert($!tool.firstLowerCase($!{
tableInfo.name}));
return $!tool.firstLowerCase($!{
tableInfo.name});
}
/** * Modifying data * * @param $!tool.firstLowerCase($!{tableInfo.name}) Instance object * @return Instance object */
@Override
public $!{
tableInfo.name} update($!{
tableInfo.name} $!tool.firstLowerCase($!{
tableInfo.name})) {
this.$!{
tool.firstLowerCase($!{
tableInfo.name})}Dao.update($!tool.firstLowerCase($!{
tableInfo.name}));
return this.queryById($!{
tool.firstLowerCase($!{
tableInfo.name})}.get$!tool.firstUpperCase($pk.name)());
}
/** * Delete data through primary key * * @param $!pk.name Primary key * @return The success of */
@Override
public boolean deleteById($!pk.shortType $!pk.name) {
return this.$!{
tool.firstLowerCase($!{
tableInfo.name})}Dao.deleteById($!pk.name) > 0;
}
}
1.3 service.java.vm
## Define the initial variable
#set($tableName = $tool.append($tableInfo.name, "Service"))
## Set callback
$!callback.setFileName($tool.append($tableName, ".java"))
$!callback.setSavePath($tool.append($tableInfo.savePath, "/service"))
## Get the primary key
#if(!$tableInfo.pkColumn.isEmpty())
#set($pk = $tableInfo.pkColumn.get(0))
#end
#if($tableInfo.savePackageName)package $!{
tableInfo.savePackageName}.#{
end}service;
import $!{
tableInfo.savePackageName}.entity.$!{
tableInfo.name};
import java.util.List;
/** * $!{tableInfo.comment}($!{tableInfo.name}) Table service interface * * @author $!author * @since $!time.currTime() */
public interface $!{
tableName} {
/** * Query all the data * * @return Instance object collection */
List<$!{
tableInfo.name}> queryAll();
/** * adopt ID Query single data * * @param $!pk.name Primary key * @return Instance object */
$!{
tableInfo.name} queryById($!pk.shortType $!pk.name);
/** * Query specified row data * * @return Instance object collection */
$!{
tableInfo.name} queryAllByLimit(Integer page, Integer pageSize);
/** * The new data * * @param $!tool.firstLowerCase($!{tableInfo.name}) Instance object * @return Instance object */
$!{
tableInfo.name} insert($!{
tableInfo.name} $!tool.firstLowerCase($!{
tableInfo.name}));
/** * Modifying data * * @param $!tool.firstLowerCase($!{tableInfo.name}) Instance object * @return Instance object */
$!{
tableInfo.name} update($!{
tableInfo.name} $!tool.firstLowerCase($!{
tableInfo.name}));
/** * Delete data through primary key * * @param $!pk.name Primary key * @return The success of */
boolean deleteById($!pk.shortType $!pk.name);
}
1.4 dao.java.vm
## Define the initial variable
#set($tableName = $tool.append($tableInfo.name, "Dao"))
## Set callback
$!callback.setFileName($tool.append($tableName, ".java"))
$!callback.setSavePath($tool.append($tableInfo.savePath, "/dao"))
## Get the primary key
#if(!$tableInfo.pkColumn.isEmpty())
#set($pk = $tableInfo.pkColumn.get(0))
#end
#if($tableInfo.savePackageName)package $!{
tableInfo.savePackageName}.#{
end}dao;
import $!{
tableInfo.savePackageName}.entity.$!{
tableInfo.name};
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/** * $!{tableInfo.comment}($!{tableInfo.name}) Table database access layer * * @author $!author * @since $!time.currTime() */
@Mapper
public interface $!{
tableName} {
/** * Query all the data * * @return Instance object collection */
List<$!{
tableInfo.name}> queryAll();
/** * adopt ID Query single data * * @param $!pk.name Primary key * @return Instance object */
$!{
tableInfo.name} queryById($!pk.shortType $!pk.name);
/** * Query specified row data * * @return Instance object collection */
$!{
tableInfo.name} queryAllByLimit(@Param("page") Integer page, @Param("pageSize") Integer pageSize);
/** * Total number of Statistics * * @param $!tool.firstLowerCase($!{tableInfo.name}) Query criteria * @return Total number of lines */
long count($!{
tableInfo.name} $!tool.firstLowerCase($!{
tableInfo.name}));
/** * The new data * * @param $!tool.firstLowerCase($!{tableInfo.name}) Instance object * @return Number of rows affected */
int insert($!{
tableInfo.name} $!tool.firstLowerCase($!{
tableInfo.name}));
/** * Batch new data (MyBatis Native foreach Method ) * * @param entities List<$!{tableInfo.name}> Instance object list * @return Number of rows affected */
int insertBatch(@Param("entities") List<$!{
tableInfo.name}> entities);
/** * Batch add or update data by primary key (MyBatis Native foreach Method ) * * @param entities List<$!{tableInfo.name}> Instance object list * @return Number of rows affected * @throws org.springframework.jdbc.BadSqlGrammarException The input parameter is empty List When you are young, you will throw SQL Statement error exception , Please check the input parameters by yourself */
int insertOrUpdateBatch(@Param("entities") List<$!{
tableInfo.name}> entities);
/** * Modifying data * * @param $!tool.firstLowerCase($!{tableInfo.name}) Instance object * @return Number of rows affected */
int update($!{
tableInfo.name} $!tool.firstLowerCase($!{
tableInfo.name}));
/** * Delete data through primary key * * @param $!pk.name Primary key * @return Number of rows affected */
int deleteById($!pk.shortType $!pk.name);
}
1.5 entity.java.vm
## Introduce macro definition
$!{
define.vm}
## Use macro definition to set callback ( Save location and file suffix )
#save("/entity", ".java")
## Use macro definition to set package suffix
#setPackageSuffix("entity")
## Use global variables to implement the default package import
$!{
autoImport.vm}
import java.io.Serializable;
## Use macro definition to implement class annotation information
#tableComment(" Entity class ")
public class $!{
tableInfo.name} implements Serializable {
private static final long serialVersionUID = $!tool.serial();
#foreach($column in $tableInfo.fullColumn)
#if(${
column.comment})/** * ${column.comment} */#end
private $!{
tool.getClsNameByFullName($column.type)} $!{
column.name};
#end
#foreach($column in $tableInfo.fullColumn)
## Use macro definitions to implement get,set Method
#getSetMethod($column)
#end
}
1.6 mapper.xml.vm
## introduce mybatis Support
$!{
mybatisSupport.vm}
## Set save name and save location
$!callback.setFileName($tool.append($!{
tableInfo.name}, "Mapper.xml"))
$!callback.setSavePath($tool.append($modulePath, "/src/main/resources/mapper"))
## Get the primary key
#if(!$tableInfo.pkColumn.isEmpty())
#set($pk = $tableInfo.pkColumn.get(0))
#end
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="$!{tableInfo.savePackageName}.dao.$!{tableInfo.name}Dao">
<resultMap type="$!{tableInfo.savePackageName}.entity.$!{tableInfo.name}" id="$!{tableInfo.name}Map">
#foreach($column in $tableInfo.fullColumn)
<result property="$!column.name" column="$!column.obj.name" jdbcType="$!column.ext.jdbcType"/>
#end
</resultMap>
<!-- Query all -->
<select id="queryAll" resultMap="$!{tableInfo.name}Map">
select
#allSqlColumn()
from $!tableInfo.obj.name
</select>
<!-- Query individual -->
<select id="queryById" resultMap="$!{tableInfo.name}Map">
select
#allSqlColumn()
from $!tableInfo.obj.name
where $!pk.obj.name = #{
$!pk.name}
</select>
<!-- Query specified row data -->
<select id="queryAllByLimit" resultMap="$!{tableInfo.name}Map">
select
#allSqlColumn()
from $!tableInfo.obj.name
limit #{
page}, #{
pageSize}
</select>
<!-- Total number of Statistics -->
<select id="count" resultType="java.lang.Long">
select count(1)
from $!tableInfo.obj.name
<where>
#foreach($column in $tableInfo.fullColumn)
<if test="$!column.name != null#if($column.type.equals("java.lang.String")) and $!column.name != ''#end">
and $!column.obj.name = #{
$!column.name}
</if>
#end
</where>
</select>
<!-- Add all columns -->
<insert id="insert" keyProperty="$!pk.name" useGeneratedKeys="true">
insert into $!{
tableInfo.obj.name}(#foreach($column in $tableInfo.otherColumn)$!column.obj.name#if($velocityHasNext), #end#end)
values (#foreach($column in $tableInfo.otherColumn)#{
$!{
column.name}}#if($velocityHasNext), #end#end)
</insert>
<insert id="insertBatch" keyProperty="$!pk.name" useGeneratedKeys="true">
insert into $!{
tableInfo.obj.name}(#foreach($column in $tableInfo.otherColumn)$!column.obj.name#if($velocityHasNext), #end#end)
values
<foreach collection="entities" item="entity" separator=",">
(#foreach($column in $tableInfo.otherColumn)#{
entity.$!{
column.name}}#if($velocityHasNext), #end#end)
</foreach>
</insert>
<insert id="insertOrUpdateBatch" keyProperty="$!pk.name" useGeneratedKeys="true">
insert into $!{
tableInfo.obj.name}(#foreach($column in $tableInfo.otherColumn)$!column.obj.name#if($velocityHasNext), #end#end)
values
<foreach collection="entities" item="entity" separator=",">
(#foreach($column in $tableInfo.otherColumn)#{
entity.$!{
column.name}}#if($velocityHasNext), #end#end)
</foreach>
on duplicate key update
#foreach($column in $tableInfo.otherColumn)$!column.obj.name = values($!column.obj.name)#if($velocityHasNext),
#end#end
</insert>
<!-- Modify data through primary key -->
<update id="update">
update $!{
tableInfo.obj.name}
<set>
#foreach($column in $tableInfo.otherColumn)
<if test="$!column.name != null#if($column.type.equals("java.lang.String")) and $!column.name != ''#end">
$!column.obj.name = #{
$!column.name},
</if>
#end
</set>
where $!pk.obj.name = #{
$!pk.name}
</update>
<!-- Delete... By primary key -->
<delete id="deleteById">
delete from $!{
tableInfo.obj.name} where $!pk.obj.name = #{
$!pk.name}
</delete>
</mapper>
2 Mybatis-Puls
2.1 controller.java.vm
## Import macro definition
$!{
define.vm}
## Set table suffix ( Macro definition )
#setTableSuffix("Controller")
## Save the file ( Macro definition )
#save("/controller", "Controller.java")
## Package path ( Macro definition )
#setPackageSuffix("controller")
## Define service name
#set($serviceName = $!tool.append($!tool.firstLowerCase($!tableInfo.name), "Service"))
## Define entity object name
#set($entityName = $!tool.firstLowerCase($!tableInfo.name))
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.api.R;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import $!{
tableInfo.savePackageName}.entity.$!tableInfo.name;
import $!{
tableInfo.savePackageName}.service.$!{
tableInfo.name}Service;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.io.Serializable;
import java.util.List;
## Table annotation ( Macro definition )
#tableComment(" Table control layer ")
@Slf4j
@RestController
@RequestMapping("$!tool.firstLowerCase($!tableInfo.name)")
public class $!{
tableName} {
/** * service object */
@Resource
private $!{
tableInfo.name}Service $!{
serviceName};
/** * Paging all data * * @param page Paging object * @param $!entityName Query entities * @return All the data */
@GetMapping("/queryAll")
public R selectAll(Page<$!tableInfo.name> page, $!tableInfo.name $!entityName) {
log.info(" Successful operation !!!!");
return R.ok(this.$!{
serviceName}.page(page, new QueryWrapper<>($!entityName)));
}
/** * Query single data through primary key * * @param id Primary key * @return A single data */
@GetMapping("{id}")
public R selectOne(@PathVariable Serializable id) {
return R.ok(this.$!{
serviceName}.getById(id));
}
/** * The new data * * @param $!entityName Entity object * @return New results */
@PostMapping("/add")
public R insert(@RequestBody $!tableInfo.name $!entityName) {
return R.ok(this.$!{
serviceName}.save($!entityName));
}
/** * Modifying data * * @param $!entityName Entity object * @return Modify the result */
@PutMapping("/edit")
public R update(@RequestBody $!tableInfo.name $!entityName) {
return R.ok(this.$!{
serviceName}.updateById($!entityName));
}
/** * Delete data * * @param idList Primary key combination * @return Delete result */
@DeleteMapping("/delete")
public R delete(@RequestParam("idList") List<Long> idList) {
return R.ok(this.$!{
serviceName}.removeByIds(idList));
}
}
2.2 serviceImpl.java.vm
## Define the initial variable
#set($tableName = $tool.append($tableInfo.name, "ServiceImpl"))
## Set callback
$!callback.setFileName($tool.append($tableName, ".java"))
$!callback.setSavePath($tool.append($tableInfo.savePath, "/service/impl"))
## Get the primary key
#if(!$tableInfo.pkColumn.isEmpty())
#set($pk = $tableInfo.pkColumn.get(0))
#end
#if($tableInfo.savePackageName)package $!{
tableInfo.savePackageName}.#{
end}service.impl;
import $!{
tableInfo.savePackageName}.entity.$!{
tableInfo.name};
import $!{
tableInfo.savePackageName}.service.$!{
tableInfo.name}Service;
import $!{
tableInfo.savePackageName}.dao.$!{
tableInfo.name}Dao;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/** * $!{tableInfo.comment}($!{tableInfo.name}) Table service implementation class * * @author $!author * @since $!time.currTime() */
@Service("$!tool.firstLowerCase($!{tableInfo.name})Service")
public class $!{
tableName} extends ServiceImpl<$!{
tableInfo.name}Dao, $!{
tableInfo.name}> implements $!{
tableInfo.name}Service {
}
2.3 service.java.vm
## Define the initial variable
#set($tableName = $tool.append($tableInfo.name, "Service"))
## Set callback
$!callback.setFileName($tool.append($tableName, ".java"))
$!callback.setSavePath($tool.append($tableInfo.savePath, "/service"))
## Get the primary key
#if(!$tableInfo.pkColumn.isEmpty())
#set($pk = $tableInfo.pkColumn.get(0))
#end
#if($tableInfo.savePackageName)package $!{
tableInfo.savePackageName}.#{
end}service;
import $!{
tableInfo.savePackageName}.entity.$!{
tableInfo.name};
import com.baomidou.mybatisplus.extension.service.IService;
/** * $!{tableInfo.comment}($!{tableInfo.name}) Table service interface * * @author $!author * @since $!time.currTime() */
public interface $!{
tableName} extends IService<$!{
tableInfo.name}> {
}
2.4 dao.java.vm
## Define the initial variable
#set($tableName = $tool.append($tableInfo.name, "Dao"))
## Set callback
$!callback.setFileName($tool.append($tableName, ".java"))
$!callback.setSavePath($tool.append($tableInfo.savePath, "/dao"))
## Get the primary key
#if(!$tableInfo.pkColumn.isEmpty())
#set($pk = $tableInfo.pkColumn.get(0))
#end
#if($tableInfo.savePackageName)package $!{
tableInfo.savePackageName}.#{
end}dao;
import $!{
tableInfo.savePackageName}.entity.$!{
tableInfo.name};
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/** * $!{tableInfo.comment}($!{tableInfo.name}) Table database access layer * * @author $!author * @since $!time.currTime() */
public interface $!{
tableName} extends BaseMapper<$!{
tableInfo.name}> {
}
2.5 entity.java.vm
## Introduce macro definition
$!{
define.vm}
## Use macro definition to set callback ( Save location and file suffix )
#save("/entity", ".java")
## Use macro definition to set package suffix
#setPackageSuffix("entity")
## Use global variables to implement the default package import
$!{
autoImport.vm}
import java.io.Serializable;
import lombok.Data;
import lombok.ToString;
## Use macro definition to implement class annotation information
#tableComment(" Entity class ")
@Data
@ToString
public class $!{
tableInfo.name} implements Serializable {
private static final long serialVersionUID = $!tool.serial();
#foreach($column in $tableInfo.fullColumn)
#if(${
column.comment})/** * ${column.comment} */#end
private $!{
tool.getClsNameByFullName($column.type)} $!{
column.name};
#end
}
2.6 mapper.xml.vm
## introduce mybatis Support
$!{
mybatisSupport.vm}
## Set save name and save location
$!callback.setFileName($tool.append($!{
tableInfo.name}, "Mapper.xml"))
$!callback.setSavePath($tool.append($modulePath, "/src/main/resources/mapper"))
## Get the primary key
#if(!$tableInfo.pkColumn.isEmpty())
#set($pk = $tableInfo.pkColumn.get(0))
#end
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="$!{tableInfo.savePackageName}.dao.$!{tableInfo.name}Dao">
<resultMap type="$!{tableInfo.savePackageName}.entity.$!{tableInfo.name}" id="$!{tableInfo.name}Map">
#foreach($column in $tableInfo.fullColumn)
<result property="$!column.name" column="$!column.obj.name" jdbcType="$!column.ext.jdbcType"/>
#end
</resultMap>
</mapper>
边栏推荐
猜你喜欢
消息队列实战之队列优先级
Kill program errors in the cradle with spotbugs
Cesium抛物线方程
vant3+ts 封装uploader上传图片组件
Unprecedented analysis of Milvus source code architecture
vant3+ts DropdownMenu 下拉菜单,数据多能滚动加载
Tutoriel de démarrage rapide JDBC
How to change Golan back to the English version when it becomes the Chinese version
Introduction to several common functions of fiddler packet capturing (stop packet capturing, clear session window contents, filter requests, decode, set breakpoints...)
Goframe gredis configuration management | comparison of configuration files and configuration methods
随机推荐
php 实现无限极分类树(递归及其优化)
vant3+ts DropdownMenu 下拉菜单,数据多能滚动加载
JDBC快速入門教程
电控学习 第二周
淘宝Native研发模式的演进与思考 | DX研发模式
一物一码追踪溯源系统介绍
全局锁、表锁、行锁
The significance of writing technology blog
Cesium parabolic equation
Introduction of one object one code tracing system
Are Huishang futures accounts reliable? Is the fund safe?
字节飞书人力资源套件三面
Project training of Software College of Shandong University - Innovation Training - network attack and defense shooting range experimental platform of Software College of Shandong University (XXV) - p
Original error interface
bug记录:更新数据库时报错:Data truncation: Incorrect datetime value:
Authorization in Golang ProjectUseing Casbin
qemu+gdb小节
grpc-swift入门
MIPS 通用寄存器 + 指令
Soringboot下RestTemplateConfig 配置打印请求响应日志