Skip to content
Permalink
Browse files

feat: 0515 updated

  • Loading branch information...
alterhu2020 committed May 15, 2019
1 parent da7709a commit 8a05f78e63f5fbb70513b8097b37e202f5bfbe8e
@@ -122,7 +122,7 @@ module.exports = {
}],
['@vuepress/back-to-top', true],
['@vssue/vuepress-plugin-vssue', {
locale: 'zh',
// locale: 'en',
platform: 'github',
owner: 'alterhu2020',
repo: 'alterhu2020.github.io',
@@ -140,10 +140,10 @@ module.exports = {
sidebarDepth: 2, // 侧边栏目录对应的 Markdown 标题,从二级标题开始显示两级。
editLinks: true,
editLinkText: '发现错误?想参与编辑?在 GitHub 上编辑此页',
lastUpdated: '上次更新',
lastUpdated: 'Last update',
nav: [
{
text: '我的博客',
text: 'My Blog',
link: '/blog/'
},
{
@@ -155,11 +155,11 @@ module.exports = {
link: 'https://pingbook.top/ionic-vue'
},
{
text: '更新日志',
text: 'CHANGE LOG',
link: '/CHANGELOG.html'
},
{
text: '留言板',
text: 'COMMENTS',
link: '/contact-me/'
}
],
@@ -12,6 +12,7 @@ module.exports ={
title: '2019年',
collapsable: false,
children: [
'2019/05-14-what',
'2019/05-11-what',
'2019/05-10-what',
'2019/05-09-what',
@@ -48,6 +49,7 @@ module.exports ={
title: '友情链接',
collapsable: false,
children: [
['https://mybatis.plus/','Mybatis Plus'],
['http://www.ruanyifeng.com/blog/','阮一峰博客-前端'],
['https://www.jianshu.com/u/4ca93d60a9fe', 'IT晴天-前端'],
['https://github.com/vuejs/awesome-vue','awesome vue'],
@@ -2,7 +2,7 @@
home: true
heroImage: /hero.png
heroText: 胡左胡右
actionText: 我的博客
actionText: My Blog
actionLink: /blog/
footer: Copyright © 2019 胡左胡右
---
@@ -0,0 +1,246 @@
---
title: 5月14日整理
---

## 通用MYSQL建表字段模板

```
--
-- Set character set the client will use to send SQL statements to the server
--
SET NAMES 'utf8';
--
-- 创建新表的模板,所有的表创建需要已此为模板
-- Create table 新表名称
--
CREATE TABLE 新表名称 (
-- 必须字段 id, uuid, active,version, gmt_create,gmt_modified, create_by, modified_by
id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键',
uuid varchar(500) NOT NULL COMMENT '该记录唯一识别码,用于区别主键',
-- 其他的字段
-- 以下为必须添加的额外保留字段
active tinyint(1) UNSIGNED NOT NULL DEFAULT 1 COMMENT '对应该条记录是否可用,1可用,0不可用',
version int(20) UNSIGNED NOT NULL COMMENT '对应乐观锁的版本号',
gmt_create datetime NOT NULL COMMENT '对应记录的创建时间',
gmt_modified datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '对应记录的修改时间',
create_by varchar(250) NOT NULL COMMENT '对应添加记录的人',
modified_by varchar(250) NOT NULL COMMENT '对应最后一次修改记录的',
PRIMARY KEY (id)
)
ENGINE = INNODB,
CHARACTER SET utf8mb4,
COLLATE utf8mb4_general_ci,
COMMENT = '新表说明';
```

## `PageHelper` return `PageInfo` total =-1

> Found that the `PageInfo` always return the `total` field as -1, and the select count(*) sql not run
* The reason is as below:
```yml
pagehelper:
default-count: false
```
* The sql used here is:
```java
Page<Object> page = PageHelper.startPage(pageNum, pageSize);
List<PermissionActionResponse> permissionActions = authMapper.getPermissionActions();
PageInfo<PermissionActionResponse> pageInfo = new PageInfo<>(permissionActions);
```
## mybatis-plus 重要坑记录
- 数据库表的字段为数据库关键字,采用如下声明:
```
1. 关键字数据表: @TableName("[user]")
2. 关键字数据表字段: @TableField("`desc`")
```
- 配置 MapperScan 注解
> 提到需要写上`@MapperScan("com.baomidou.mybatisplus.samples.quickstart.mapper")`,可以在mapper类上采用注解`@Mapper`达到同样的效果
参考代码: [github 代码段](https://github.com/baomidou/mybatis-plus-samples/blob/master/mybatis-plus-sample-auto-fill-metainfo/src/main/java/com/baomidou/samples/metainfo/mapper/UserMapper.java)
-- 注解 annotation
1. `@TableName`
2. `@TableId`
3. `@TableField`
4. `@Version`
- 分页
```
// 不进行 count sql 优化,解决 MP 无法自动优化 SQL 问题,这时候你需要自己查询 count 部分
// page.setOptimizeCountSql(false);
// 当 total 为非 0 时(默认为 0),分页插件不会进行 count 查询
// 要点!! 分页返回的对象与传入的对象是同一个
```
- 常见问题整理
[FAQ](https://mybatis.plus/guide/faq.html)
- mybatis plus 详细配置产生实体类及其相关代码
```
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.po.TableFill;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import com.google.common.collect.Lists;
import java.util.Scanner;
public class MybatisCodeGenerator {
public static String scanner(String tip){
Scanner scanner = new Scanner(System.in);
StringBuilder help = new StringBuilder();
help.append("请输入: "+tip+": ");
System.out.println(help.toString());
if(scanner.hasNext()){
String inputTip = scanner.next();
if(StrUtil.isNotEmpty(inputTip)){
return inputTip;
}
}
throw new MybatisPlusException("请输入正确的"+tip+"!");
}
public static void main(String[] args) {
// 配置信息
String url ="jdbc:mysql://192.168.1.108:3306/vrpano?useUnicode=true&useSSL=false&characterEncoding=utf8";
String username ="yanzhi";
String passwd="yanzhi123!@#";
String packageName ="generator";
// 代码生成器
AutoGenerator mpg = new AutoGenerator();
// 数据源配置
DataSourceConfig dsc = new DataSourceConfig();
// 必须
dsc.setDbType(DbType.MYSQL);
dsc.setUrl(url);
dsc.setDriverName("com.mysql.cj.jdbc.Driver");
dsc.setUsername(username);
dsc.setPassword(passwd);
mpg.setDataSource(dsc);
// 全局配置
GlobalConfig gc = new GlobalConfig();
String currentFilePath =MybatisCodeGenerator.class.getClassLoader().getResource("").getPath();
String projectPath = FileUtil.getParent(currentFilePath, 2);
gc.setOutputDir(projectPath + "/src/main/java");
gc.setFileOverride(true);
gc.setOpen(true);
// 是否在xml中添加二级缓存
gc.setEnableCache(false);
gc.setAuthor("Walter Hu");
gc.setKotlin(false);
gc.setSwagger2(false);
gc.setActiveRecord(false);
// xml中添加返回结果的基本类型
gc.setBaseResultMap(true);
// xml中添加基本的数据列
gc.setBaseColumnList(true);
// java8 时间映射,所有的时间映射被LocalDate,LocalDateTime类型
gc.setDateType(DateType.TIME_PACK);
gc.setEntityName("%sEntity");
gc.setMapperName("%sMapper");
gc.setXmlName("%sMapper");
gc.setIdType(IdType.AUTO);
mpg.setGlobalConfig(gc);
//数据库表配置 策略配置
StrategyConfig strategy = new StrategyConfig();
// 表名是否大写
strategy.setCapitalMode(false);
strategy.setSkipView(true);
// 表名到实体类的映射关系
strategy.setNaming(NamingStrategy.underline_to_camel);
// 数据库表字段映射到实体的命名策略, 未指定按照 naming 执行
strategy.setColumnNaming(NamingStrategy.underline_to_camel);
String tables = scanner("表名,多个英文逗号分割");
if(!tables.contains("a")){
// 全部的表
String[] parseTables = tables.split(",");
strategy.setInclude(parseTables);
}
// 实体类设置
// 初始化字段值
strategy.setEntityColumnConstant(false);
// lombok类型
strategy.setEntityLombokModel(true);
// 将boolean类型的字段去掉前面的is字段
strategy.setEntityBooleanColumnRemoveIsPrefix(true);
//
strategy.setEntitySerialVersionUID(true);
// 乐观锁字段
strategy.setVersionFieldName("version");
// 默认字段
strategy.setTableFillList(Lists.newArrayList(
new TableFill("gmt_create", FieldFill.INSERT),
new TableFill("gmt_modified",FieldFill.INSERT_UPDATE),
new TableFill("version", FieldFill.INSERT),
new TableFill("is_active", FieldFill.INSERT)
));
mpg.setStrategy(strategy);
// 默认是采用velocity 模板的
mpg.setTemplateEngine(new FreemarkerTemplateEngine());
// 包配置
PackageConfig pc = new PackageConfig();
// pc.setModuleName(scanner("模块名"));
pc.setParent(packageName);
mpg.setPackageInfo(pc);
mpg.execute();
}
}
```
@@ -0,0 +1,21 @@
---
title: 5月15日整理
---

## mybatis 真香记录

### 踩坑记录

* 问题描述:
> 单元执行正常,正常service层调用报错,代码很简单:
1. `sysUserMapper.selectOne(Wrappers.<SysUser>lambdaQuery().eq(SysUser::getUsername,username));`
2. 报错信息如下:
```
2019-05-15 20:31:58.892 [http-nio-8085-exec-3] DEBUG org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver.doResolveHandlerMethodException:403 - Using @ExceptionHandler public com.yanzhi.common.response.WebResponse com.yanzhi.core.vrpanoapp.exception.GlobalExceptionHandler.handleExceptionHandler(java.lang.Exception)
2019-05-15 20:31:58.893 [http-nio-8085-exec-3] ERROR com.yanzhi.core.vrpanoapp.exception.GlobalExceptionHandler.handleExceptionHandler:223 - 未捕获的系统异常:nested exception is org.apache.ibatis.builder.BuilderException: Error evaluating expression 'ew.sqlSegment != null and ew.sqlSegment != '' and ew.nonEmptyOfWhere'. Cause: org.apache.ibatis.ognl.OgnlException: sqlSegment [com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: Your property named "username" cannot find the corresponding database column name!]
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.builder.BuilderException: Error evaluating expression 'ew.sqlSegment != null and ew.sqlSegment != '' and ew.nonEmptyOfWhere'. Cause: org.apache.ibatis.ognl.OgnlException: sqlSegment [com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: Your property named "username" cannot find the corresponding database column name!]
```
* 解决方法:

> 移除 `dev-tools`,参见 [https://github.com/baomidou/mybatis-plus/issues/1137](https://github.com/baomidou/mybatis-plus/issues/1137)
@@ -15,6 +15,6 @@ title: 关于博客
博客主要内容会以文章、工具、新闻、视频等几大板块作为主要分类。


## 关于博主
## About me

[个人履历](https://profile-summary-for-github.com/user/alterhu2020)
[Github Profile](https://profile-summary-for-github.com/user/alterhu2020)
@@ -6,4 +6,6 @@ title: 破冰行动

境外某跨国贩毒集团勾结东山当地不法分子进行大规模的地下冰毒生产,以达到将大量冰毒销往中国内陆省份及海外以获取高额利润的目的。 在此复杂危险的环境下,以李飞为代表的缉毒警不畏牺牲拼死撕开当地毒贩和保护伞织起的那张巨大的地下毒网,并冲破重重迷局,为“雷霆扫毒专项行动”的顺利展开扫清障碍。

目前看了两集,感觉剧情还算紧凑,其中的情节挺真实的。。。尤其是第二集中围堵的枪战场面。。。
目前看了两集,感觉剧情还算紧凑,其中的情节挺真实的。。。尤其是第二集中围堵的枪战场面。。。

* 到今天14号已经看到12集了,感觉剧情还是没有让我失望,挺不错的。。。 05/14/2019
@@ -3,6 +3,6 @@ title: 给我留言
---


## 感谢您的宝贵留言
## Thanks for your comments

<Vssue title="来自博客页面收集的留言" />

0 comments on commit 8a05f78

Please sign in to comment.
You can’t perform that action at this time.