eclipse开发SSM项目已经使用mybatis当升级mybatis-plus时,结果不能共存

自己的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.

上一篇:tk.MyBatis:通过设置safeDelete、safeUpdate,防止BaseMapper导致的全表数据操作


下一篇:BaseMapper和继承