c字段和属性的区别_从源码角度理解Mybatis字段映射

两个问题:

    1.数据库中的字段名怎么和对象中的属性对应起来?

    2.数据库中字段的类型怎么转换到合适的Java类型,不引起转换失败?

本次演示的数据库如下所示

CREATE TABLE `company` (`id` INT ( 100 ) NOT NULL AUTO_INCREMENT COMMENT '主键id',`company_name` VARCHAR ( 100 ) NOT NULL COMMENT '企业名称',`company_num` CHAR ( 20 ) NOT NULL COMMENT '统一社会信用代码',`company_type` CHAR ( 1 ) NOT NULL COMMENT '企业类型',`company_address` CHAR ( 6 ) NOT NULL COMMENT '所属地市编码',PRIMARY KEY ( `id` ) ) ENGINE = INNODB COMMENT = '公司表';

对应的PO(Persistant Object)Company

public class Company {    private int id;    private String companyName;    private String companyNum;    private String companyType;    private String companyAddress;}

mybatis接口类和对应的映射文件

@Mapper public interface CompanyMapper {    Company getCompanyById(String id); }   
<?xml version="1.0" encoding="UTF-8" ?><mapper namespace="com.demo.company.mapper.CompanyMapper">  <select id="getCompanyById" resultType="com.demo.company.pojo.Company" >    select       id, company_name, company_num, company_type, company_address    from company     where id = #{id}  select>mapper>

在上面的映射文件中,namespace指定了对应接口类的全限定类路径,select代表select语句,id为接口类中方法名,resultType代表该sql返回的期望类型的类的全限定类名或别名(typeAliases)。

针对上面的问题,主要解决有三种方案

  • 驼峰式命名开关指定为true,或者数据库字段名和对象的属性名完全一致

  • Select时指定As

  • ResultMap最强大与稳健

一、驼峰式命名开关

    一般来说我们的数据库字段名采用下划线分隔,比如这里的字段名company_name与对象属性名companyName。

<settings> 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值