设为首页 收藏本站
查看: 732|回复: 0

[经验分享] Mybatis解决属性名与字段名不一致

[复制链接]

尚未签到

发表于 2016-11-27 06:54:14 | 显示全部楼层 |阅读模式
在开发的时候应该遇到这样的情况,数据库中的字段名与属性名不一致的情况,通常数据库中的字段命名时多个单词之间使用下划线连接在一起的,而在类中的属性名则多数是用驼峰标识的命名方式,我见过的大多数都是这样,那么使用mybatis该如果解决这一的问题呢?如下:
数据表:
 
[html] view plaincopy 



  • CREATE TABLE tab_department(  
  •     ids INT PRIMARY KEY AUTO_INCREMENT,  
  •     de_name VARCHAR(50) COMMENT '部门名称',  
  •     p_ids INT COMMENT '上级部门id',  
  •     de_charge_person VARCHAR(50) COMMENT '部门负责人',  
  •     create_time LONG COMMENT '创建时间'  
  • ) COMMENT '部门表'  

  
实体类:
 
 
[html] view plaincopy 



  • package com.tenghu.mybatis.model;  
  •   
  • import java.io.Serializable;  
  •   
  • /**  
  •  * 部门表  
  •  * @author Arvin_Li  
  •  *  
  •  */  
  • public class Department implements Serializable{  
  •     private static final long serialVersionUID = 6998332095922284289L;  
  •       
  •     private int ids;//部门编号  
  •     private String deName;//部门名称  
  •     private int pIds;//上级部门id  
  •     private String deChargePerson;//部门负责人  
  •     private long createTime;//创建时间  
  •       
  •     //省略get和set方法  
  • }  

 
 
mybatis主配置文件:
 
[html] view plaincopy 



  • <?xml version="1.0" encoding="UTF-8"?>  
  • <!DOCTYPE configuration  
  • PUBLIC "-//mybatis.org//DTD Config 3.0//EN"  
  • "http://mybatis.org/dtd/mybatis-3-config.dtd">  
  • <configuration>  
  •     <!-- 配置实体类别名 -->  
  •     <typeAliases>  
  •         <typeAlias type="com.tenghu.mybatis.model.Department" alias="Department"/>  
  •     </typeAliases>  
  •     <environments default="development">  
  •         <environment id="development">  
  •             <transactionManager type="JDBC"/>  
  •             <dataSource type="POOLED">  
  •                 <property name="driver" value="${jdbc.driver}"/>  
  •                 <property name="url" value="${jdbc.url}"/>  
  •                 <property name="username" value="${jdbc.username}"/>  
  •                 <property name="password" value="${jdbc.password}"/>  
  •             </dataSource>  
  •         </environment>  
  •     </environments>  
  •       
  •     <!-- 配置映射文件 -->  
  •     <mappers>  
  •         <mapper resource="com/tenghu/mybatis/model/xml/DepartmentMapper.xml"/>  
  •     </mappers>  
  • </configuration>  

  
映射文件:
 
 
[html] view plaincopy 



  • <?xml version="1.0" encoding="UTF-8"?>  
  • <!DOCTYPE mapper  
  • PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"  
  • "http://mybatis.org/dtd/mybatis-3-mapper.dtd">  
  • <mapper namespace="com.tenghu.mybatis.model.xml.DepartmentMapper">  
  •       
  •     <!-- 配置映射字段 -->  
  •     <resultMap type="Department" id="tab_department">  
  •         <id property="ids" column="ids"/>  
  •         <result property="deName" column="de_name"/>  
  •         <result property="pIds" column="p_ids"/>  
  •         <result property="deChargePerson" column="de_charge_person"/>  
  •         <result property="createTime" column="create_time"/>  
  •     </resultMap>  
  •       
  •     <!-- 查询所有部门 -->  
  •     <select id="queryAllDepartment" resultMap="tab_department">  
  •         select * from tab_department  
  •     </select>  
  • </mapper>  

  
工具类:
 
 
[html] view plaincopy 



  • package com.tenghu.mybatis.util;  
  •   
  • import java.io.IOException;  
  • import java.io.InputStream;  
  • import java.util.Properties;  
  •   
  • import org.apache.ibatis.io.Resources;  
  • import org.apache.ibatis.session.SqlSession;  
  • import org.apache.ibatis.session.SqlSessionFactory;  
  • import org.apache.ibatis.session.SqlSessionFactoryBuilder;  
  •   
  • /**  
  •  * Mybatis工具类  
  •  * @author Arvin_Li  
  •  * @version 1.0  
  •  *  
  •  */  
  • public class MybatisUtil {  
  •     private MybatisUtil(){}  
  •       
  •     //声明SqlSession工厂  
  •     private static SqlSessionFactory sqlSessionFactory;  
  •       
  •     //使用静态代码块获取SqlSession工厂  
  •     static{  
  •         try {  
  •             //获取mybatis主配置文件流  
  •             InputStream inputStream=Resources.getResourceAsStream("mybatis-config.xml");  
  •             //创建属性文件对象  
  •             Properties properties=new Properties();  
  •             //加载属性配置文件  
  •             properties.load(Resources.getResourceAsStream("jdbc.properties"));  
  •             //创建SqlSessionFactory对象  
  •             sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream, properties);  
  •         } catch (IOException e) {  
  •             e.printStackTrace();  
  •         }  
  •     }  
  •       
  •     /**  
  •      * 开启SqlSession对象,不自动提交  
  •      * @return  
  •      */  
  •     public static SqlSession openSession(){  
  •         return sqlSessionFactory.openSession();  
  •     }  
  •       
  •     /**  
  •      * 开启自动提交的SqlSession  
  •      * @return  
  •      */  
  •     public static SqlSession openAutoCommitSession(){  
  •         return sqlSessionFactory.openSession(true);  
  •     }  
  •       
  •     /**  
  •      * 关闭SqlSession  
  •      * @param sqlSession  
  •      */  
  •     public static void closeSession(SqlSession sqlSession){  
  •         if(null!=sqlSession){  
  •             sqlSession.close();  
  •         }  
  •         sqlSession=null;  
  •     }  
  • }  

  
测试类:
 
 
[html] view plaincopy 



  • package com.tenghu.mybatis.test;  
  •   
  • import java.util.List;  
  •   
  • import org.apache.ibatis.session.SqlSession;  
  • import org.junit.Test;  
  •   
  • import com.tenghu.mybatis.model.Department;  
  • import com.tenghu.mybatis.util.MybatisUtil;  
  •   
  • /**  
  •  * 部门测试类  
  •  * @author Arvin_Li  
  •  *  
  •  */  
  • public class DepartmentTest {  
  •     //命名空间  
  •     private String namespace="com.tenghu.mybatis.model.xml.DepartmentMapper.";  
  •       
  •     /**  
  •      * 查询出所有部门  
  •      */  
  •     @Test  
  •     public void testQueryAllDepartment(){  
  •         //获取SqlSession  
  •         SqlSession sqlSession=MybatisUtil.openSession();  
  •         try {  
  •             //查询  
  •             List<Department> departList=sqlSession.selectList(namespace+"queryAllDepartment");  
  •             //输出部门信息  
  •             for (Department department : departList) {  
  •                 System.out.println(department.getIds()+"\t"+department.getDeName()+"\t"+department.getpIds()+"\t"+department.getDeChargePerson());  
  •             }  
  •         } catch (Exception e) {  
  •             e.printStackTrace();  
  •         }finally{  
  •             //关闭SqlSession  
  •             MybatisUtil.closeSession(sqlSession);  
  •         }  
  •     }  
  • }  

  
这样就可以处理字段名与属性名不一致的情况了。
其他精彩文章文章
jQuery教程(9)-DOM树操作之复制元素
android学习笔记(35)android AlertDialog创建列表对话框[2]
android shareSDK sso登录新浪和微信
mysql 索引类型详解-B-Tree索引
BroadcastReceiver 使用AlertDialog后 app奔溃了
 
更多关于android开发文章

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-305890-1-1.html 上篇帖子: Mybatis源码研究3:包和类的概述 下篇帖子: mybatis配置log4j控制台打印SQL语句
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表