mybatis-plus入门使用、踩坑记录 - 灰信网(软件开发博客聚合)
- <dependency>
- <groupId>com.baomidou</groupId>
- <artifactId>mybatis-plus-boot-starter</artifactId>
- <version>3.2.0</version>
- </dependency>
- <dependency>
- <groupId>com.baomidou</groupId>
- <artifactId>mybatis-plus</artifactId>
- <version>3.2.0</version>
- </dependency>
@MapperScan("com.xxx.mapper")
- <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
- <property name="basePackage" value="com.baomidou.mybatisplus.samples.quickstart.mapper"/>
- </bean>
- <bean id="sqlSessionFactory" class="com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean">
- <property name="dataSource" ref="dataSource"/>
- </bean>
还有扩展的server方法及实现,可以自己点进去看下
需要用到就对应service继承即可,示例:
- public interface UserService extends BaseService<User> {
- }
- public class UserServiceImpl extends BaseServiceImpl
, User> implements UserService { - }
INVALID BOUND STATEMENT (NOT FOUND)
异常这个问题很明显是字段不能是空,必须使用selective方法进行插入。一开始怀疑mybatis-plus的插入语句(就只一个insert)是全量插入
后来查找mapper文件找到了问题所在。之前用的mybatis框架自动生成的mapper.xml代码中的insert语句为全量插入,本地写了同名的xml会优先使用本地的SQL进行查询。
解决:删除所有mybatis生成的SQL语句,避免与mybatis-plus的底层SQL冲突
如果没有指定ID生成策略,mybatis-plus默认是使用自己随机的ID生成策略,会生成一个比较大的数,可能会大小溢出。
解决:在实体类ID字段上加上注解 @TableId(type = IdType.AUTO),使用数据库的自增策略。如果自增主键很多都是id,可以写一个基础的BasePO,在这个类里面指定id的生成策略,其它表对应实体类继承即可,如下:
- public class BasePO {
-
- @TableId(type= IdType.AUTO)
- private Long id;
- }
下面是IdType其它类型介绍
当你的数据库表名是order、group等之类的关键字时,对该表的操作则会报错.
解决:在表对应的实体上增加注解 @TableName("`order`"),使用``指定表名即可