baomidou / mybatis-plus

An powerful enhanced toolkit of MyBatis for simplify development
https://baomidou.com
Apache License 2.0
16.3k stars 4.3k forks source link

Mybatis-Plus #399

Closed yangyang0507 closed 5 years ago

yangyang0507 commented 6 years ago

http://mp.baomidou.com/#/

An enhanced toolkit of Mybatis to simplify development

hb39589961 commented 6 years ago

哎 继续纠结中

TomyJx commented 6 years ago

3.0-alpha版本的oracle连接好像有bug呀。类SelectOne,


public class SelectOne extends AbstractMethod {

    @Override
    public MappedStatement injectMappedStatement(Class<?> mapperClass, Class<?> modelClass, TableInfo tableInfo) {
        SqlMethod sqlMethod = SqlMethod.SELECT_ONE;
        DbType dbType = getGlobalConfig().getDbConfig().getDbType();
        String select = this.sqlSelectColumns(tableInfo, false);
        if (dbType == DbType.SQL_SERVER || dbType == DbType.SQL_SERVER2005) {
            select = "TOP 1 " + select;
        }
        String sql = String.format(sqlMethod.getSql(), select, tableInfo.getTableName(),
            this.sqlWhereEntityWrapper(tableInfo) + dbType.getLimit(1));
        if (dbType == DbType.ORACLE) {
            sql = String.format("SELECT * FROM (%s) ROWNUM <= 1");
        }
        SqlSource sqlSource = languageDriver.createSqlSource(configuration, sql, modelClass);
        return this.addSelectMappedStatement(mapperClass, sqlMethod.getMethod(), sqlSource, modelClass, tableInfo);
    }
}

到oracle分支的时候,由于format中的%s,但是后面没有跟格式化的内容,导致启动报错。
TomyJx commented 6 years ago

@anguangpei

@TomyJx 今天发现多数据源的实现了,真的很开心呀

跟mp有毛关系

就是发现了mp菜单栏出现的多数据源,这两天自己配的多数据源下的事务管理不能回滚,看到这个跟着配置下,看可以实现不。

fjigww commented 6 years ago

代码生成器这里,如果不设置文件覆盖,数据表新增加字段,就没法重新生成Entity,新增加的字段无法添加到Entity里,如果设置了文件覆盖,直接就生成了一个全新的Entity,前面自己的各种设置也都没了,难道是自己的设置姿势不对?

XueseGhost commented 6 years ago

spring boot工程按教程配置了分页插件,自定义查询后发现分页没有生效,哪位知道是什么问题么?

TomyJx commented 6 years ago

@XueseGhost spring boot工程按教程配置了分页插件,自定义查询后发现分页没有生效,哪位知道是什么问题么?

我的今天也出现了这个问题,不过还没找原因呢,我用的是3.0-RC1,数据库使用mysql的时候,分页无效,使用oracle的时候有效,暂时没发现两个工程的太大的区别,您这边找出来也说下呀

countingstars112 commented 6 years ago

mybatisx 插件没有作用,是我没开起来嘛?有人知道怎么开吗?还是和其他插件冲突了。。。

loyin commented 6 years ago

升级到springboot2.0.3+mybatis-plus 3RC2 报creating bean with name 'mainSqlSessionFactory' defined in class path resource [com/cdel/database/config/MainDataSourceConfig.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.apache.ibatis.session.SqlSessionFactory]: Factory method 'mainSqlSessionFactory' threw exception; nested exception is java.lang.ExceptionInInitializerErrord 的异常,请问是什么原因导致的?如何修改?

liyahr commented 6 years ago

分页插件返回的信息太少了,怎么配置能返回com.github.pagehelper那样的信息,或者怎么能集成com.github.pagehelper

licunzhi commented 6 years ago

支持自己设置自定义插件,扩展插件属性机字段

calebzhao commented 6 years ago

怎么集成mybatis-velocity这个项目

SalomonQiu commented 6 years ago

其实吧,不是很赞同使用这类的插件;通用Mapper是可以简化开发,但是同样会引入问题,比如这类插件多数是做不到按需获取,跟select * 没什么区别,对于性能要求高的还是老老实实写sql吧;再比如,因为sql是生成的,可读性就很差; 还有,对这插件本身提一个建议吧: 那就是配置较复杂;文档说的配置简单我还真没发现,而且文档说明不详细,我要琢磨这些配置是干什么的,是否可以不需要这些配置,有没有默认的配置等等;这些都会成为别人使用这个插件的阻碍;我们做基础服务要考虑的一个很重要的一点就是侵入性小,配置极简,用户无感知,最为理想的情况就是,用户引入个jar包就好了;springboot的一大特点就是约定优于配置,希望mybatis-plus插件能认真考虑一下哦

jackcooper2015 commented 6 years ago

基于mybatis-plus的web版代码生成器:https://gitee.com/cooper.com.cn/mybatisplus-generator-web

riyuuriyuu commented 6 years ago

有个小问题,生成的entity里面重复导包 TableInfo.setFields与ConfigBuilder.checkTableIdTableFieldAnnotation 重复导入 com.baomidou.mybatisplus.enums.IdType com.baomidou.mybatisplus.annotations.TableId

crystalsis commented 6 years ago

同时需要自定义全局操作和逻辑删除功能的话,继承逻辑删除那个么?会不会有不良反应?

lzhhua commented 6 years ago

请问mybatis-plus的最新版本(3.0)同spring boot的1.5版本,是否有冲突?是否必须使用spring boot2.x版本

i-CNNN commented 6 years ago

Left Join怎么实现分页啊.或者自己写的话, 要怎么写呢?

jamesyc33 commented 6 years ago

请问 long 最大为 19位的 9223372036854775807, 而mp的Sequence也为19为, 当前随便取一个为 1029612782507065346, java 主键用 Long 是否未来有超过 Long.Max 的风险呢? 我看原版 Sequence 的长度为17

wangjia2016 commented 6 years ago

为啥要在java代码里面拼接sql呢

kaitezhan commented 6 years ago

Page里面的查询条件这个map有何用呀???

kaitezhan commented 6 years ago

@wangjia2016 为啥要在java代码里面拼接sql呢

不然你在哪呢?人家都说是封装好了的crud

kaitezhan commented 6 years ago

@koy-tome Left Join怎么实现分页啊.或者自己写的话, 要怎么写呢?

原来如何写就如何写啊

wangweifan commented 6 years ago

springboot集成3.0-gamma版本,一直有问题 Reason: Failed to convert property value of type 'java.lang.String' to required type 'com.baomidou.mybatisplus.core.handlers.MetaObjectHandler' for property 'globalConfig.metaObjectHandler'; nested exception is java.lang.IllegalStateException: Cannot convert value of type 'java.lang.String' to required type 'com.baomidou.mybatisplus.core.handlers.MetaObjectHandler' for property 'metaObjectHandler': no matching editors or conversion strategy found

RealmKing commented 6 years ago

如何加入大家

RealmKing commented 6 years ago

@楼主

ronglang commented 6 years ago

mp3 ,逻辑删除的配置和用法是不是变了.现在并不能完成逻辑删除操作

ronglang commented 6 years ago

@qiu8214 其实吧,不是很赞同使用这类的插件;通用Mapper是可以简化开发,但是同样会引入问题,比如这类插件多数是做不到按需获取,跟select * 没什么区别,对于性能要求高的还是老老实实写sql吧;再比如,因为sql是生成的,可读性就很差; 还有,对这插件本身提一个建议吧: 那就是配置较复杂;文档说的配置简单我还真没发现,而且文档说明不详细,我要琢磨这些配置是干什么的,是否可以不需要这些配置,有没有默认的配置等等;这些都会成为别人使用这个插件的阻碍;我们做基础服务要考虑的一个很重要的一点就是侵入性小,配置极简,用户无感知,最为理想的情况就是,用户引入个jar包就好了;springboot的一大特点就是约定优于配置,希望mybatis-plus插件能认真考虑一下哦 这个就是为效率而生的.如果在自己写需要获取的列,那么就和纯sql就没多大区别了.但是值封装了curd 其实还好啦.用起来 还是可以的.

xingya771 commented 6 years ago

@hb39589961 EntityWrapper ew = new EntityWrapper(); 没有EntityWrapper,在jar包中也没有找到,需要自己实现Wrapper吗

看了下应该是新版中删除了EntityWrapper类,新增了几个QueryWrapper、UpdateWrapper导致与现有代码不兼容,且文档也没有更新

crystalsis commented 6 years ago

那个逻辑删除功能开启了是所有的表都要加TableLogic字段还是有TableLogic字段的有逻辑删除,没有的就没逻辑删除?另外那个多租户里面doTableFilter和doFilter是返回false进行筛选返回true的不筛选么

TomyJx commented 6 years ago

我的分页不起作用了,找了好久都不知道什么原因,只是把jar包换成了rc1版本的

funky-eyes commented 6 years ago

求助[com.baomidou.mybatisplus.generator.engine.AbstractTemplateEngine] - 无法创建文件,请检查配置信息!

zh1181500972 commented 6 years ago

MP如何更新指定的几个字段

TomyJx commented 6 years ago

说实话,我现在用这个插件这么长时间,感觉文档很不全,示例也很滞后。而且,很多示例点进去啥都没有,告诉你不存在。实实在在的增加了学习难度。而且我这两天一直不知道为啥分页就挂了,好郁闷

TangiSingle commented 6 years ago

请问xml的配置是什么

zh1181500972 commented 6 years ago

没有配置,我只想根据id更新一个实体对应表的表中的摸几个字段,调用updateById方法,会把所有字段都会更新一遍,现在我只能自定义一个更新语句

------------------ 原始邮件 ------------------ 发件人: "TangiSingle"notifications@github.com; 发送时间: 2018年8月21日(星期二) 下午2:55 收件人: "baomidou/mybatis-plus"mybatis-plus@noreply.github.com; 抄送: "失落造就冷漠"1181500972@qq.com; "Comment"comment@noreply.github.com; 主题: Re: [baomidou/mybatis-plus] Mybatis-Plus (#399)

请问xml的配置是什么

— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or mute the thread.

crystalsis commented 6 years ago

@lyingfromyou 生成带@TableName的配置在哪?

好像指定了前缀之类的生成名字与表名不相同的类的时候才会加@TableName

crystalsis commented 6 years ago

@TomyJx 说实话,我现在用这个插件这么长时间,感觉文档很不全,示例也很滞后。而且,很多示例点进去啥都没有,告诉你不存在。实实在在的增加了学习难度。而且我这两天一直不知道为啥分页就挂了,好郁闷

java所有的项目不都这样么,想知道完整的内容就要自己翻源码.

arraykyky commented 6 years ago

在做查询时,需要用到上次拼接的EntityWrapper对象的数据,比如sqlSegment参数的值。在接口中我直接把EntityWrapper返回,需要时把它传入。现在有个问题,时sqlSegment参数没有set方法,我应该怎么做把sqlSegment参数给新需要拼接的EntityWrapper对象?

HaoWinston commented 6 years ago

请问入参如何做,驼峰转数据库的下划线格式。因为像排序字段是前端自己控制的不固定,所以传给后端需要转换,要不然分页会报错。 这个转换,mybatis plus要如何做?

zoey5da6e5 commented 6 years ago

我用的是mysql,应该选择哪个 KeyGenerator?

muwednesday commented 6 years ago

为什么实体类主键不加@TableId的注解,启动会报错啊。

Failed to parse mapping resource: 'file [---\mapper\PersonMapper.xml]'; nested exception is java.lang.NullPointerException

在主键上加了@TableId就可以了。

erdibaba commented 6 years ago

我做的关于数据权限的mybatis拦截器,发现分页插件的拦截器的统计SQL在我之前,这样统计出来的数据是有问题的,请问有什么好的解决办法吗

raoda commented 6 years ago

mybaits-plus 视频教程。https://blog.csdn.net/helloPurple/article/details/78715508

raoda commented 6 years ago

推荐一个讲mybaits-plus 的视频教程。尚硅谷的老师讲解的。讲的比较全面https://blog.csdn.net/helloPurple/article/details/78715508

arraykyky commented 6 years ago

你确定这是视频连接?

------------------ 原始邮件 ------------------ 发件人: "raoda"notifications@github.com; 发送时间: 2018年8月24日(星期五) 中午12:49 收件人: "baomidou/mybatis-plus"mybatis-plus@noreply.github.com; 抄送: "爱上了·孤独"867022565@qq.com; "Comment"comment@noreply.github.com; 主题: Re: [baomidou/mybatis-plus] Mybatis-Plus (#399)

推荐一个讲mybaits-plus 的视频教程。尚硅谷的老师讲解的。讲的比较全面https://blog.csdn.net/helloPurple/article/details/78715508

— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or mute the thread.

yuxiaobin commented 6 years ago

@erdibaba 插件的顺序是先加载后调用,所以你可以调一下加载插件的顺序,把你自己的插件放在分页插件后面加载

erdibaba commented 6 years ago

@yuxiaobin @erdibaba 插件的顺序是先加载后调用,所以你可以调一下加载插件的顺序,把你自己的插件放在分页插件后面加载

你好,我是初学,请问下这个加载插件的顺序应该怎么调整

yuxiaobin commented 6 years ago

进qq群:576493122,这里讨论会轰炸很多人的邮箱

erdibaba commented 6 years ago

@yuxiaobin 进qq群:576493122,这里讨论会轰炸很多人的邮箱 群满了,进不去,怎么办 苦逼

arraykyky commented 6 years ago

EntityWrapper的字段查询时可以用数据库的函数吗? 比如这样子的sql语句 SELECT * FROM fd_abstract where LEFT(medline_date,4) BETWEEN ${start} and ${end} 这个用到了left函数对字段值截取,我这样用可以吗 ew.between("LEFT(medline_date,4)",start,end);