自己的userMapper类继承了BaseMapper,自己写在userMapper中的查询语句都可以正常得到查询结果,但是引用其父类BaseMapper即mybatis-plus封装好的方法如selectList方法,就会报错:
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):
com.zsw.four.biz.vehicle.mapper.VehicleMapper.selectList.........
经过坚持不懈的努力打BUG,这个问题其实是数据库表跟实体类无法映射的原因。类名,字段名。大小写问题。
mybatis-plus在2.3版本以后,dbColumnUnderline 默认值就是true 驼峰命名
我的实体类命名使用的数据库真实列明。
public class Admin{
private Integer adminId;
private String adminName;
private String sex;
private Integer age;
当开启驼峰命名是,执行BaseMapper方法,会去数据库找admin_name这个时候是找不到的。还有就是表名,主键最好显示的标识出来
*/
@TableName("admin")
public class Admin{
/**
* 管理员id
*/
@TableId("adminId")
private Integer adminId;
/**
* 管理员名称
*/
//@TableField(value="adminName")
private String adminName;
在将驼峰命名关闭
<!-- 定义MybatisPlus的全局策略配置-->
<bean id ="globalConfiguration" class="com.baomidou.mybatisplus.entity.GlobalConfiguration">
<!-- 在2.3版本以后,dbColumnUnderline 默认值就是true 驼峰命名-->
<property name="dbColumnUnderline" value="false"></property>
<!-- 全局的主键策略 -->
<property name="idType" value="0"></property>
<!-- 全局的表前缀策略配置 -->
<!-- <property name="tablePrefix" value="tbl_"></property> -->
</bean>
至此项目能够正常运行,既能使用mybatis自定义的接口映射的mapper.xml方法,也能使用mybatispul接口继承BaseMapper的方法。当然,创建数据库,列明使用下划线的形式创建的字段(user_name)就不需要修改驼峰命名为false.