Mybatis 之mapUnderscoreToCamelCase
来源:互联网 发布:中国法律数据库app 编辑:程序博客网 时间:2024/05/17 21:52
之前用spring jdbc的时候发下spring可以驼峰转换,所以一直希望mybatis也有,之前还以为mybatis这个是个bug,后来发现原来也是有的,用起来也是很简单的,在setting设置下就可以了,这里就不说了,下面说下是怎么实现的
- public String findProperty(String name) {
- StringBuilder prop = buildProperty(name,new StringBuilder());
- return prop.length() > 0 ?prop.toString() : null;
- }
- public String findProperty(String name,boolean useCamelCaseMapping) {
- if (useCamelCaseMapping) {
- name = name.replace("_","");
- }
- return findProperty(name);
- }
如果我们设置了,useCamelCaseMapping=ture,那么mybatis就把_给干掉了,看到这里我也很疑惑,还以为是坑爹呢,
我们接着往下看,buildProperty
- private StringBuilderbuildProperty(String name, StringBuilder builder) {
- PropertyTokenizer prop = newPropertyTokenizer(name);
- if (prop.hasNext()) {
- String propertyName =reflector.findPropertyName(prop.getName());
- if (propertyName != null) {
- builder.append(propertyName);
- builder.append(".");
- MetaClass metaProp =metaClassForProperty(propertyName);
- metaProp.buildProperty(prop.getChildren(), builder);
- }
- } else {
- String propertyName =reflector.findPropertyName(name);
- if (propertyName != null) {
- builder.append(propertyName);
- }
- }
- return builder;
- }
其实是从reflector获取的数据,做个reflector是干嘛的呢,其实就是mybatis来存储class信息的,也可以说是mybatis的反射工具类
从Reflector里面
public StringfindPropertyName(String name) {
returncaseInsensitivePropertyMap.get(name.toUpperCase(Locale.ENGLISH));
}
做个toUpperCase是个关键,他忽略了我们类里面的属性值,也就是说我们一个id和一个ID属性,对于mybatis来说可能是一直的呦
而private Map<String, String>caseInsensitivePropertyMap = new HashMap<String, String>();
存储的就是field的upperCaseName和真实的Name也就是我们的驼峰转换,或者其实不对称的驼峰也是可以的,只要把_去掉,应该就可以拿到的
0 0
- Mybatis 之mapUnderscoreToCamelCase
- Mybatis 之mapUnderscoreToCamelCase
- mybatis中mapUnderscoreToCamelCase的使用
- Mybatis配置文件中的mapUnderscoreToCamelCase属性
- mybatis中mapUnderscoreToCamelCase自动驼峰命名转换
- mybatis之mybatis-generator
- mybatis之mybatis-generator
- MyBatis学习之Mybatis缓存
- mybatis学习之配置mybatis
- 浅谈Mybatis之mybatis是什么?
- mybatis分页之mybatis-plus
- MyBatis之select
- MyBatis之传入参数
- MyBatis之实例简介
- MyBatis之select
- HelloWorld之MyBatis
- Mybatis之Session
- mybatis 之 环境搭建
- iOS 数据存储之keychain
- cocos2d-js 倒计时功能。
- Android实验四之聊天界面
- tesseract-ocr 实现图片识别功能
- 新手使用git需注意的地方
- Mybatis 之mapUnderscoreToCamelCase
- Python Packages for Graph Cuts on Images
- 日常记录之@Scope("prototype")
- 系统ListView使用方法
- ubuntu下远程登录服务器
- Java初学_其他集合框架(LinkedList、HasMap)
- 移动端兼容性
- 解决”企业证书打包的ipa,点击app提示"未受信任的企业级开发者"“的问题
- 【OI做题记录】【BZOJ】【SCOI2005】扫雷Mine