介绍

mybatis-plus是国内大牛在Mybatis3的基础上做了一些封装,简化了一些操作(分页,自动生成实体块等)。是快速开发一个不错的工具插件。

Mybatis 增强工具包 - 只做增强不做改变,简化CRUD操作

优点

纯正血统:完全继承原生 Mybatis 的所有特性

最少依赖:仅仅依赖Mybatis以及Mybatis-Spring

性能损耗小:启动即会自动注入基本CURD ,性能无损耗,直接面向对象操作

自动热加载:Mapper对应的xml可以热加载,大大减少重启Web服务器时间,提升开发效率

自动生成代码:包含自动生成代码类以及Maven插件,通过少量配置,即可快速生成Mybatis对应的xml、mapper、entity、service、serviceimpl层代码,减少开发时间

自定义操作:支持自定义Sql注入,实现个性化操作

自定义转义规则:支持数据库关键词(例如:order、key等)自动转义,支持自定义关键词

多种主键策略:支持多达4种主键策略,可自由配置,若无将会自动填充,更有充满黑科技的分布式全局唯一ID生成器

无缝分页插件:基于Mybatis物理分页,无需关心具体操作,等同于编写基本selectList查询

性能分析:自带Sql性能分析插件,开发测试时,能有效解决慢查询

全局拦截:提供全表delete、update操作智能分析阻断

避免Sql注入:内置Sql注入内容剥离器,预防Sql注入攻击

我的感受

我们项目是spring-boot + mybatis-plus,官方也有一个这样的Demo,在搭建一些比较套路的工程还是很节约时间的,它自动生成代码的插件可以生成 Entity.mapper,Entity.java,EntityVo.java,EntityBusinessController.java,EntityService.java,IEntityMapper.java等一系列Spring mvc文件架构,大大节约了开发时间。但是就JDBCUtil来说,它还是比较单薄的,只提供了基本的增删查改,用起来可能没有自己写的工具类好用,但这些都可以根据自己习惯和数据结构封装进去的。另外就是作者定义的一套规则我们需要注意一下,否则可能在开发过程中要话费额外的时间去找bug。

遇到的问题

返回的list只有数据库字段不含大写的属性

通常生成的mapper.xml如下:

SELECT * FROM fund_account

我们发现在控制层去调用.selectObjPage方法时,返回值只有id和realname有信息,找了一下发现是返回值的原因。我们在实体类中做了数据绑定

Entity.java

package com.senthink.www.micat.domain.po;

import com.baomidou.mybatisplus.annotations.IdType;

import com.baomidou.mybatisplus.annotations.TableField;

import com.baomidou.mybatisplus.annotations.TableId;

import com.baomidou.mybatisplus.annotations.TableName;

@TableName("fund_account")

public class TestEntity {

@TableId(type = IdType.AUTO)

private Integer id;

@TableField(value = "user_id")

private String userId;

private String realname;

public Integer getId() {

return id;

}

public void setId(Integer id) {

this.id = id;

}

public String getUserId() {

return userId;

}

public void setUserId(String userId) {

this.userId = userId;

}

public String getRealname() {

return realname;

}

public void setRealname(String realname) {

this.realname = realname;

}

}

而实体的数据绑定是通过mapper.xml中

来完成连接的。所以,当你想返回TestEntity实体类型的时候必须要返回的是这个定义的resultMap,即把

修改为

即可。

setDbColumnUnderline导致的字段不一致

mybatis-plus的setDbColumnUnderline设置使得数据库字段强行按照java实体的骆驼式命名法大写字母前转化为下划线加小写的命名规范。

如TestEntity中的userId在拼装sql语句时自动对应为userId,所以这就要求你实体命名和数据库字段名必须满足这个规则,若出现不满足规则的命名,如

passwordMD5,将被编译为password_m_d5这样就会报sql错误了。

解决办法:

按照规范命名,对未规范的命名全部修改

设置不用其下划线命名法,在MybatisPlusConfig.java中设置

MybatisSqlSessionFactoryBean mybatisPlus = new MybatisSqlSessionFactoryBean();

mybatisPlus.setDbColumnUnderline(true);

mysql防注入插件_mybatis-plus插件使用的一些问题相关推荐

  1. mysql防注入原理_MyBatis如何防止SQL注入

    MyBatis如何防止SQL注入 SQL注入是一种代码注入技术,用于攻击数据驱动的应用,恶意的SQL语句被插入到执行的实体字段中(例如,为了转储数据库内容给攻击者).[摘自] SQL injectio ...

  2. mysql防注入 php_PHP使用PDO实现mysql防注入功能详解

    本文实例讲述了PHP使用PDO实现mysql防注入功能.分享给大家供大家参考,具体如下: 1.什么是注入攻击 例如下例: 前端有个提交表格: 姓名: 密码: 后台的处理如下: $username=$_ ...

  3. mysql防注入插件_MyBB HM_My Country Flags 插件'cnam'参数SQL注入漏洞

    发布日期:2012-12-24 更新日期:2012-12-28 受影响系统: MyBB HM_My Country Flags 1.1 描述: ---------------------------- ...

  4. mybatis分页插件_MyBatis 分页插件 5.2.0 发布

    时隔整整8个月,分页插件这次带来了一次大的更新. 5.2.0 - 2020-07-26 •jsqlparser升级到3.2版本,sql解析更好,对sqlserver支持更好.•修改 sqlserver ...

  5. pdo mysql防注入_Php中用PDO查询Mysql来避免SQL注入风险的方法

    当我们使用传统的 mysql_connect .mysql_query方法来连接查询数据库时,如果过滤不严,就有SQL注入风险,导致网站被攻击,失去控制.虽然可以用mysql_real_escape_ ...

  6. golang mysql 防注入_Go,Gorm 和 Mysql 是如何防止 SQL 注入的

    Go,Gorm 和 Mysql 是如何防止 SQL 注入的 SQL 注入和 SQL 预编译技术 什么是 SQL 注入 所谓SQL注入(sql inject),就是通过把SQL命令插入到Web表单提交或 ...

  7. mysql 防注入 php_PHP+mysql防止SQL注入的方法小结

    本文实例讲述了PHP+mysql防止SQL注入的方法.分享给大家供大家参考,具体如下: SQL注入 例:脚本逻辑 $sql = "SELECT * FROM user WHERE useri ...

  8. php7 mysql防注入_php如何防sql注入?

    SQL注入(SQLi)是一种注入攻击,,可以执行恶意SQL语句.它通过将任意SQL代码插入数据库查询,使攻击者能够完全控制Web应用程序后面的数据库服务器. 攻击者可以使用SQL注入漏洞绕过应用程序安 ...

  9. mysql防注入pdo_mysql PDO和存储过程动态SQL注入

    正如我在许多文章中看到的那样,存储过程中的动态SQL容易受到SQL注入的攻击.但是,如果我们将先前的PDO与准备好的语句一起使用,这仍然不安全吗? 例: CREATE PROCEDURE my_sp( ...

最新文章

  1. TypeError: unhashable type: 'dict'
  2. ionic入门教程第十六课-在微信中使用ionic的解决方案(按需加载加强版)
  3. java商城_基于Java,jfinal web框架开发出微信商城,微信分销商城源码分享
  4. php判断与网站访问时间,织梦CMS模板用php判断某个时间段显示和隐藏内容
  5. AWK 高端大气上档次
  6. 玩转vim之vim插件Ctags
  7. 分享:尝试构建轻量级架构设计工具
  8. .Hbase批量导入数据应用
  9. 保密协议无效认定_保密协议其实并没用?
  10. 前端js 下载zip文件并解压
  11. Laravel文档梳理9、Blade模板
  12. 在Xubuntu上安装中文输入法
  13. opencv对相似图片一键找不同。(嘻嘻,找不同小游戏作弊神器)
  14. GitHub官网访问慢的解决问题
  15. SEER见证人操作指南
  16. IDEA插件-----FindBugs
  17. python分段函数图像画法_数值实验分段函数图像-Python绘图
  18. 12306登录python_python爬虫 -- 12306登录刷票
  19. 认识计算机硬件教案免费,认识计算机硬件(教案)
  20. string常用方法,不积硅步无以至千里

热门文章

  1. bootStrap库介绍
  2. javascript调用一个函数(对象),new和直接调用的区别
  3. mybatis基于XML(二)
  4. arch linux 时间,archlinux入门--设置时钟 - webdancer's Blog
  5. 学习php有多难,1.3 使用和学习PHP有多难
  6. 解决重复出现问题的 (LINQ) 方法示例
  7. datatables使用封装
  8. oracle10.2.0.4 dbca,在rhel5上oracle 10.2.0.4 上dbca silent删除数据库
  9. php前后端分离两个域名访问,Laravel 5.4前后台分离,通过不同的二级域名访问方法...
  10. typora绑定github博客_零基础搭建个人博客