关于mybatis

网友投稿 386 2022-08-22


关于mybatis

目录介绍优点我的感受遇到的问题返回的list只有数据库字段不含大写的属性setDbColumnUnderline导致的字段不一致总结

介绍

mybatis-plus是国内大牛在Mybatis3的基础上做了一些封装,简化了一些操作(分页,自动生成实体块等)。是快速开发一个不错的工具插件。

Mybatis 增强工具包 - 只做增强不做改变,简化CRUD操作

优点

纯正血统:完全继承原生 Mybatis 的所有特性最少依赖:仅仅依赖Mybatis以及Mybatis-Spring性能损耗小:启动即会自动注入基本CURD ,性能无损耗,直接面向对象操作自动热加载:Mapper对应的xml可以热加载,大大减少重启Web服务器时间,提升开发效率自动生成代码:包含自动生成代码类以及Maven插件,通过少量配置,即可快速生成Mybatis对应的xml、mapper、entity、service、serviceimpl层代码,减少开发时间自定义操作:支持自定义Sql注入,实现个性化操作自定义转义规则:支持数据库关键词(例如:order、key等)自动转义,支持自定义关键词多种主键策略:支持多达4种主键策略,可自由配置,若无将会自动填充,更有充满黑科技的分布式全局唯一ID生成器无缝分页插件:基于Mybatis物理分页,无需关心具体操作,等同于编写基本selectList查询性能分析:自带Sql性能分析插件,开发测试时,能有效解决慢查询全局拦截:提供全表delete、update操作智能分析阻断避免Sql注入:内置Sql注入内容剥离器,预防Sql注入攻击

我的感受

遇到的问题

返回的list只有数据库字段不含大写的属性

通常生成的mapper.xml如下:

SELECT * FROM fund_account

我们发现在控制层去调用.selectObjPage方法时,返回值只有id和realname有信息,找了一下发现是返回值的原因。我们在实体类中做了数据绑定Entity.java

package com.senthink.micat.domain.po;

import com.baomidou.mybatisplus.annotations.IdType;

import com.baomidou.mybatisplus.annotations.TableField;

import com.baomidou.mybatisplus.annotations.TableId;

import com.baomidou.mybatisplus.annotations.TableName;

@TableName("fund_account")

public class TestEntity {

@TableId(type = IdType.AUTO)

private Integer id;

@TableField(value = "user_id")

private String userId;

private String realname;

public Integer getId() {

return id;

}

public void setId(Integer id) {

this.id = id;

}

public String getUserId() {

return userId;

}

public void setUserId(String userId) {

this.userId = uhttp://serId;

}

public String getRealname() {

return realname;

}

public void setRealname(String realname) {

this.realname = realname;

}

}

而实体的数据绑定是通过mapper.xml中来完成连接的。所以,当你想返回TestEntity实体类型的时候必须要返回的是这个定义的resultMap,即把即可。

setDbColumnUnderline导致的字段不一致

mybatis-plus的setDbColumnUnderline设置使得数据库字段强行按照java实体的骆驼式命名法大写http://字母前转化为下划线加小写的命名规范。如TestEntity中的userId在拼装sql语句时自动对应为userId,所以这就要求你实体命名和数据库http://字段名必须满足这个规则,若出现不满足规则的命名,如passwordMD5,将被编译为password_m_d5这样就会报sql错误了。解决办法:

按照规范命名,对未规范的命名全部修改设置不用其下划线命名法,在MybatisPlusConfig.java中设置

MybatisSqlSessionFactoryBean mybatisPlus = new MybatisSqlSessionFactoryBean();

mybatisPlus.setDbColumnUnderline(true);

总结


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:python 驻留机制(python代码大全)
下一篇:Python Web开发(四):从零开始创建数据库和表(python基础教程)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~