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 Comment #333

Closed qmdx closed 6 years ago

qmdx commented 6 years ago

提问方式参考: https://github.com/baomidou/mybatis-plus/issues/332

不符合一律不予回复!!

peach7orange commented 6 years ago

postgesql 的数组怎么转?

yaohu0044 commented 6 years ago

请问下 MySQL在插入成功以后 怎么返回主键 或者是需要配置个什么才能返回?

lovesea6688 commented 6 years ago

用mycat中间件的话,表名为关键字的话,我建了一张表名为position的表,插入报错,表名没有带`,不让插入,直接连库貌似可以,所有我想这个是不是可以给关键保留字为表名的上面加个,引起来

arraykyky commented 6 years ago

按照api怎么抛出异常,是哪里配置的问题嘛 There is no getter for property named 'ew' in 'class com.baomidou.mybatisplus.mapper.EntityWrapper'

DarkLove commented 6 years ago

@Autowired private DataSource dataSource;

@Bean
public MybatisSqlSessionFactoryBean sqlSessionFactory(){
    MybatisSqlSessionFactoryBean mybatisPlus = new MybatisSqlSessionFactoryBean();
    mybatisPlus.setDataSource(dataSource);
    GlobalConfiguration globalConfiguration = new GlobalConfiguration();
    globalConfiguration.setMetaObjectHandler( new MyMetaObjectHandler());
    mybatisPlus.setGlobalConfig(globalConfiguration);
    return mybatisPlus ;
}

请问不用xml文件怎么配置,以上是我的,报错了

DarkLove commented 6 years ago

@arraykyky 按照api怎么抛出异常,是哪里配置的问题嘛 There is no getter for property named 'ew' in 'class com.baomidou.mybatisplus.mapper.EntityWrapper' 哥们,你的搞好了没

arraykyky commented 6 years ago

@DarkLove 我自己把EntityWrapper封装了一下,调用变成了下面的形式 List<?> listEW = abstractService.selectMyPage(page, ew); PageData pageData = new PageData();//一个map结构的对象 pageData.put("ew",entityWrapper);//添加key=ew,对应xml中取值 return baseMapper.selectMyPage(page,pageData); xml中的sql是这样写的,pd就是pagedata的简称,可以通过@Alias("pd")配置

arraykyky commented 6 years ago

@DarkLove

arraykyky commented 6 years ago

@DarkLove 详细的xml贴不上去,页面过滤掉了

miraclehjt commented 6 years ago

使用EntityWrapper在本地环境正常,在centos下出现字段找不到的奇怪问题,本身没有这个字段,求解。 org.apache.ibatis.builder.BuilderException: Error evaluating expression 'ew.entity.authId!=null'. Cause: org.apache.ibatis.ognl.NoSuchPropertyException: com.ytkj.web.user.entity.UserSampleInfo.authId

wangchunting666 commented 6 years ago

如果数据库表字段首字母小写,生成的实体类,不能使用insertOrUpdate方法?

miraclehjt commented 6 years ago

调用删除方法报错,ew传参数进去提示一个字段不存在,而这个字段这个实体没有,莫名其妙出来的,最奇怪的是本地环境没问题,阿里云上报错。 org.apache.ibatis.builder.BuilderException: Error evaluating expression 'ew.entity.authId!=null'. Cause: org.apache.ibatis.ognl.NoSuchPropertyException: com.ytkj.web.user.entity.UserSampleInfo.authId 这个实体类没有这字段,ew.setEntity 方式传参数,调用delete(ew)出现上述问题

ouyangbob commented 6 years ago

请问什么时候支持springboot2.0 啊?

lovesea6688 commented 6 years ago

@ouyangbob 请问什么时候支持springboot2.0 啊?

这个是支持的啊,我前几天就用这个做了个小项目,用的就是springboot2.0

abciop commented 6 years ago

有没有考虑实体生成JSR验证

ouyangbob commented 6 years ago

@lovesea6688 不行,我这边springboot2.0 + oracle 不支持。

ouyangbob commented 6 years ago

@miraclehjt 请问你解决了没?我现在也报这个错误。

Eucommiia commented 6 years ago

请问我看有的案例项目里面只有mybatisplus-spring-boot-starter一个依赖,而有的项目里有两个依赖,一个是mybatisplus-spring-boot-starter,另外一个是mybatis-plus,只用其中的一个会有什么问题吗? 还是说两个都必须要,项目是spingboot项目

lovesea6688 commented 6 years ago

@ouyangbob 我用的是mysql

chenyi2333 commented 6 years ago

使用通用 单表新增时,支持自定义主键生成规则吗

njxujunjie commented 6 years ago

为啥集成到自己的工程里 一直启动不起来 有大神指导一下么: Caused by: java.lang.NoSuchMethodError: org.apache.ibatis.session.Configuration.getDefaultScriptingLanguageInstance()Lorg/apache/ibatis/scripting/LanguageDriver; at com.baomidou.mybatisplus.mapper.AutoSqlInjector.injectSqlRunner(AutoSqlInjector.java:906) at com.baomidou.mybatisplus.MybatisMapperRegistry.(MybatisMapperRegistry.java:48) at com.baomidou.mybatisplus.MybatisConfiguration.(MybatisConfiguration.java:45) at com.baomidou.mybatisplus.spring.MybatisSqlSessionFactoryBean.buildSqlSessionFactory(MybatisSqlSessionFactoryBean.java:419) at com.baomidou.mybatisplus.spring.MybatisSqlSessionFactoryBean.afterPropertiesSet(MybatisSqlSessionFactoryBean.java:385) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1687) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1624) ... 53 common frames omitted

jackenwjk commented 6 years ago

mybatis- plus中使用BaseMapper基类的方法不会走二级缓存,请问有什么方法可以解决吗?

lidk commented 6 years ago

oracle不支持么?

zimocc commented 6 years ago

初来学习, 点赞一波.

honglang1992 commented 6 years ago

请问下 MySQL在插入成功以后 怎么返回主键 或者是需要配置个什么才能返回?

yaohu0044 commented 6 years ago

@honglang1992 请问下 MySQL在插入成功以后 怎么返回主键 或者是需要配置个什么才能返回?

<property name="idType" value="0" />
jamespangm commented 6 years ago

数据库 主键id字段类型为 varchar mp配置的为主键全局增长. 但是在插入数据的时候无论设置不设置id值,执行时候都报错:Caused by: java.sql.SQLException: Field 'id' doesn't have a default value; 执行插入语句的时候没有插入id值得语句 .哪位大神有办法解决? 谢谢

honglang1992 commented 6 years ago

楼上的问题: 没遇到 主键id 用varchar的情况,都是用的 数字类型 解决方法: 你试着在数据库里把id 换成int类型,并设为自增长。

VincentHQL commented 6 years ago

你好,能否把TableField注解中 el 的用法描述的详细点? “当该Field为类对象时, 可使用#{对象.属性}来映射到数据表.”意思是不是可以映射对象或者集合?

MartinYiWu commented 6 years ago

启动报错 哪位大神知道什么原因吗? 15:53:40.644 [main] DEBUG com.baomidou.mybatisplus.generator.AutoGenerator - ==========================准备生成文件...========================== Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/velocity/context/Context at com.baomidou.mybatisplus.generator.AutoGenerator.execute(AutoGenerator.java:96) at com.pdcourse.generator.MyBatisPlusGenerator.main(MyBatisPlusGenerator.java:81) Caused by: java.lang.ClassNotFoundException: org.apache.velocity.context.Context at java.net.URLClassLoader$1.run(URLClassLoader.java:372) at java.net.URLClassLoader$1.run(URLClassLoader.java:361) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:360) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 2 more

xzsanmm commented 6 years ago

类User对象属性office指向类Office. 以前用mybatis,写sql:select a.id,a.office_id as office.id ,o.name as office.name from user a left join office o on a.office_id=o.id 通过该sql,可以在返回的user对象中获取office对象(id和name属性有值),一个查询就可以。 在plus中,好像就直接用officeId的属性来指明外部对象关联情况(查看了很多例子,sql查询只返回user对象,然后遍历user对象,通过officeId获取office对象再赋值) 在sql中,basemapper默认实现的select*函数中,该如何配置相关信息,以到达类似上面sql语句效果(不用另外编写xml文件中的sql语句,而是通过annonation的配置,获取在xml中额外配置部分语句)。

telltao commented 6 years ago

@yaohu0044 请问下 MySQL在插入成功以后 怎么返回主键 或者是需要配置个什么才能返回?

不需要配置 直接实体类.getId() 就是你入库的id啦~

honglang1992 commented 6 years ago

@telltao

@yaohu0044 请问下 MySQL在插入成功以后 怎么返回主键 或者是需要配置个什么才能返回?

不需要配置 直接实体类.getId() 就是你入库的id啦~

BaseMapper.insert(T entity)方法,但是插入成功之后,entity里的id 依然是null

dlovetco commented 6 years ago

GlobalConfig和GlobalConfiguration 有啥区别 yml里面配置的是GlobalConfig 而在sqlsession中注入的却是GlobalConfiguration 完全把配置文件中的GlobalConfig屏蔽掉了

TomyJx commented 6 years ago

在我们自己进行查找的时候,因为代码中大量用到了列名,作为查找条件。那么当某个列名修改的时候,就需要进行编码的修改了。这里提议,能不能再生成实体类的时候,也顺便生成一个表对应的静态变量类。这个类中的字段就是列名呢。。。

mhs1314 commented 6 years ago

实体不支持生成swagger注解啊

love-sige commented 6 years ago

请问支持jdk1.6吗?

lidk commented 6 years ago

请问怎么使id字段自动递增的

telltao commented 6 years ago

@lidk 请问怎么使id字段自动递增的

在id字段上添加 @TableId(value = "id",type = IdType.AUTO) type注解就是自增,如果是springboot 在application.yml 中填入 mybatis-plus: global-config:id-type: 0 就可以了 有问题发我邮箱 tellstao@163.com

kallima55206086 commented 6 years ago

在3.x 版本中,这个自定义sql注入怎么配置啊

chexiazi commented 6 years ago

@yaohu0044 请问下 MySQL在插入成功以后 怎么返回主键 或者是需要配置个什么才能返回?

不是说了 会返回主键到实体类吗?你没有看 简单示例的文档?

chexiazi commented 6 years ago

@honglang1992

@telltao

@yaohu0044 请问下 MySQL在插入成功以后 怎么返回主键 或者是需要配置个什么才能返回?

不需要配置 直接实体类.getId() 就是你入库的id啦~

BaseMapper.insert(T entity)方法,但是插入成功之后,entity里的id 依然是null

你需要这样去接收 才会有 user = user.insert(xxx);

a931083335 commented 6 years ago

字段isDeleted 解析set get方法时 ,get方法 解析成了 isDeleted() 这个问题怎么解决

a931083335 commented 6 years ago

/* 前缀处理 / String property = fieldInfo.getProperty(); Class propertyType = fieldInfo.getPropertyType(); property = StringUtils.removeIsPrefixIfBoolean(property, propertyType);

telltao commented 6 years ago

@chexiazichexiazi 不要误人子弟 user.insert(userEntity); 返回的是boolean类型

cloudlychee commented 6 years ago

一对多怎么用啊?还有多对多 没找到文档

darren-wang commented 6 years ago

使用Spring boot 2.0.3, FreeMarker, Mysql, Druid, MP测试自动代码生成过程中,com.baomidou.mybatisplus.annotation.TableIdcom.baomidou.mybatisplus.annotation.TableField注解被错误的生成为com.baomidou.mybatisplus.annotations.TableIdcom.baomidou.mybatisplus.annotations.TableField,希望修复!

qmdx commented 6 years ago

@darren-wang 你用的是 MP3 吧? 这个问题已经解决,最新快照 3.0-beta-SNAPSHOT

zhaojiacan commented 6 years ago

条件构建器,or或者orNew user = this.selectOne(new EntityWrapper() .or("user_account="+username) .or("user_mobile="+username) .or("user_email="+username) 不加单引号报错,sql中不会自己加单引号 SELECT user_id AS userId,user_key AS userKey,user_name AS userName,user_pet_name AS userPetName,user_birthday AS userBirthday,user_sex AS userSex,user_photo_url AS userPhotoUrl,user_mobile AS userMobile,user_email AS userEmail,user_account AS userAccount,user_password AS userPassword,user_reg_time AS userRegTime,user_login_time AS userLoginTime,user_active AS userActive,user_signature AS userSignature,user_remark AS userRemark FROM user WHERE (user_account=admin OR user_mobile=admin OR user_email=admin

qmdx commented 6 years ago

@zhaojiacan wrapper 部分需要手动添加转义符