MyBatis 字段属性映射类型

本文详细介绍了MyBatis的配置文件设置,包括映射文件中各种类型字段的配置方式及主配置文件中数据库连接参数的具体设定。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

主要是贴下配置文件:

<?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.mybatis.config.InfoDao">
 <resultMap type="java.util.Map" id="resultjcm">
  <result property="FLD_NUMBER" column="FLD_NUMBER"  javaType="double" jdbcType="NUMERIC"/>
  <result property="FLD_VARCHAR" column="FLD_VARCHAR" javaType="string" jdbcType="VARCHAR"/>
  <result property="FLD_DATE" column="FLD_DATE" javaType="java.sql.Date" jdbcType="DATE"/>
  <result property="FLD_INTEGER" column="FLD_INTEGER"  javaType="int" jdbcType="INTEGER"/>
  <result property="FLD_DOUBLE" column="FLD_DOUBLE"  javaType="double" jdbcType="DOUBLE"/>
  <result property="FLD_LONG" column="FLD_LONG"  javaType="long" jdbcType="INTEGER"/>
  <result property="FLD_CHAR" column="FLD_CHAR"  javaType="string" jdbcType="CHAR"/>
  <result property="FLD_BLOB" column="FLD_BLOB"  javaType="[B" jdbcType="BLOB" />
  <result property="FLD_CLOB" column="FLD_CLOB"  javaType="string" jdbcType="CLOB"/>
  <result property="FLD_FLOAT" column="FLD_FLOAT"  javaType="float" jdbcType="FLOAT"/>
  <result property="FLD_TIMESTAMP" column="FLD_TIMESTAMP"  javaType="java.sql.Timestamp" jdbcType="TIMESTAMP"/>
 </resultMap>
 <select id="selectAll" parameterType="map" resultMap="resultjcm">
  select * from JCM
 </select>
 <insert id="insertInfo" parameterType="map">
  insert into jcm
  values
  (
  #{FLD_NUMBER,jdbcType=INTEGER},
  #{FLD_VARCHAR,jdbcType=VARCHAR},
  #{FLD_DATE,jdbcType=DATE},
  #{FLD_INTEGER,jdbcType=INTEGER},
  #{FLD_DOUBLE,jdbcType=DOUBLE},
  #{FLD_LONG,jdbcType=INTEGER},
  #{FLD_CHAR,jdbcType=CHAR},
  #{FLD_BLOB,jdbcType=BLOB},
  #{FLD_CLOB,jdbcType=CLOB},
  #{FLD_FLOAT,jdbcType=FLOAT},
  #{FLD_TIMESTAMP,jdbcType=TIMESTAMP}
  )
 </insert>
 <select id="selectOne" resultMap="resultjcm">
  select * from jcm where
  FLD_NUMBER=#{FLD_NUMBER,jdbcType=INTEGER}
 </select>
 <delete id="delectOne" parameterType="map">
  delete from jcm
  where
  FLD_NUMBER=#{FLD_NUMBER,jdbcType=INTEGER}
 </delete>
 <update id="updateOne" parameterType="map">
  update jcm  set
  FLD_VARCHAR=#{FLD_VARCHAR,jdbcType=VARCHAR},FLD_DATE=#{FLD_DATE,jdbcType=DATE},FLD_INTEGER=#{FLD_INTEGER,jdbcType=INTEGER} where
  FLD_NUMBER=#{FLD_NUMBER,jdbcType=INTEGER}
 </update>
</mapper>


主配置文件:

<?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>
 <environments default="development">
  <environment id="development">
   <transactionManager type="JDBC" />
   <dataSource type="POOLED">
     <property name="driver" value="oracle.jdbc.driver.OracleDriver" />
     <property name="url" value="jdbc:oracle:thin:@10.24.1.18:1521:orcl" />
     <property name="username" value="cbmain" />
     <property name="password" value="sunline" />
   </dataSource>
  </environment>
 </environments>
 <mappers>
  <mapper resource="com/mybatis/config/UserDaoMapper.xml" />
 </mappers>
</configuration>

需要注意的问题:

 

<?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">

 

这个头文件需要换行,必须要和上面一样写,否则会让你崩溃的!

### MyBatis 字段映射教程及常见问题解决方案 #### 1. 默认映射规则 MyBatis 使用默认映射规则来处理数据库列名与实体类字段名之间的映射。当数据库列名为 `snake_case` 格式(如 `user_name`),MyBatis 自动将其转换为驼峰命名法(如 `userName`)。这种自动转换简化了开发过程,减少了手动配置的工作量[^3]。 #### 2. 列名与字段名不一致的问题 假设存在一张表 `t_user_info`,其中有一列表示用户名和密码分别为 `uNamepWord` 和另一张表的情况有所不同。而对应的 Java 实体类 `User` 中定义的字段分别是 `private String userName;` 和 `private String passWord;`。由于列名与字段名不一致,这可能会导致查询结果无法正确封装到实体类中。 ```java public class User { private String userName; private String passWord; // Getters and Setters } ``` 为了使这些字段能够被正确映射,可以采取以下几种方式: #### 3. SQL 查询中的别名机制 一种简单的解决办法是在 SQL 查询语句中通过 AS 关键字为每一列赋予新的名字,使其与 POJO 的属性相匹配。例如,在 SELECT 子句后面加上适当的别名即可实现这一点[^1]。 ```sql SELECT uNamepWord AS userName, pWord AS passWord FROM t_user_info; ``` #### 4. 配置全局设置 另一种方法是调整 MyBatis 主配置文件内的参数,使得框架能够在执行每次查询之前先尝试将下划线分隔符替换为空格并首字母大写后再去寻找相应的 getter/setter 方法。需要注意的是,修改此选项可能会影响整个应用程序的行为模式,因此应当谨慎操作。 #### 5. 使用 resultMap 进行显式映射 对于更复杂的情形,则推荐利用 `<resultMap>` 或者其注解形式 (`@Results`, `@Result`) 来建立自定义的结果集映射关系。这种方式允许开发者精确控制每一对列-成员变量间的关联,并支持更多高级特性比如嵌套对象、联合查询等[^4]。 ```xml <resultMap id="userResultMap" type="com.example.User"> <id property="userId" column="uid"/> <result property="userName" column="unamepwd"/> </resultMap> ``` ```java @Select("SELECT * FROM users WHERE id = #{id}") @Results({ @Result(property = "userId", column = "uid"), @Result(property = "userName", column = "unamepwd") }) List<User> selectById(int id); ``` 以上就是关于如何在 MyBatis 中处理字段映射的一些基本概念以及遇到此类问题时可选的技术手段介绍。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值