在开发的时候应该遇到这样的情况,数据库中的字段名与属性名不一致的情况,通常数据库中的字段命名时多个单词之间使用下划线连接在一起的,而在类中的属性名则多数是用驼峰标识的命名方式,我见过的大多数都是这样,那么使用mybatis该如果解决这一的问题呢?如下:
数据表:
- 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 '部门表'
实体类:
- 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主配置文件:
- <?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>
映射文件:
- <?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>
工具类:
- 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;
- }
- }
测试类:
- 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奔溃了
相关推荐
在平时的开发中,我们表中的字段名和表对应实体类的属性名称不一定都是完全相同的,下面来演示一下这种情况下的如何解决字段名与实体类属性名不相同的冲突,下载源代码调试、分析,学习
MyBatis表字段名与实体属性名不一致-src.zip
主要给大家介绍了关于mybatis拦截器实现通用权限字段添加的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用mybatis具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
主要介绍了mybatis使用char类型字段查询oracle数据库时结果返回null问题的解决方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
今天在项目开发中有个业务是需要限制各个用户对某些表里的字段查询以及某些字段是否显示,这种情况下,就需要构建sql来动态传入表名、字段名了,下面给大家介绍mybatis动态调用表名和字段名的解决方法,一起看看吧
struts2+mybatis解决longblob字段问题,存读取并下载longblob字段
Mybatis框架下,数据库更新操作时只更新set过的字段,原1.0版本由于CSDN不支持修改已经删除了。
解决在springboot+mybatis+postgresql时,数据库字段类型为json时,如何与mybatis进行映射
mybatis-generator自动生成字段注释的maven项目,执行StartUp.java即可
MyBatis拦截器分页与动态修改SQL及其参数值 提取SQL Like 字段
05.MyBatis中当实体类中的属性名和表中的字段名不一样怎么办 ?
MybatisGenerator本身是没有提供查询指定字段的,例如数据库有5个字段,我想查询其中3个字段的全部记录,这是做不到的。经过研究MybatisGenerator实现原理,在保证原有功能的基础上,实现了生成查询指定字段的相关...
修改 mybatis-generate 源码实现实体类加上字段注释后的 mybatis-generator-core 包。 今天用到了mybatis的逆向工程,生成实体类和mapper文件,无奈数据库字段太多,逆向工程生成的字段都没有注释,每次需要了解字段...
默认情况下,使用#{}格式的语法会导致MyBatis创建预处理语句属性并以它为背景设置安全的值(比如?)。这样做很安全,很迅速也是首选做法,有时你只是想直接在SQL语句中插入一个不改变的字符串。比如,像ORDER BY,你...
修改mybatis-generator源码实现生成后的实体类字段上方加上数据库中填写字段的注释,有使用方法,可以在配置文件generatorConfig.xml中根据自己的需要进行修改
Mybatis自动生成实体类,XML文件
mybatis-generator插件生成带表字段注释的实体类,避免了手动来回复制的问题。 生成的实体自动包含数据表对应的注释。
mybatis 对clob类型转换,解决clob类型数据插入数据库报异常问题
MyBatis的setting标签对应属性和值
全新的sql框架