MyBatis由浅入深学习总结之二:MyBatis解决Java实体类和数据库表字段不一致方法总结
2017-11-03 09:10
651 查看
在此,首先说明一点任何持久性框架都需要解决一个问题,那就是Java实体类的字段一般来说基本上会与数据库表中字段不一致,那么它们是如何解决的呢?咱们以Hibernate和SpringJDBC为例说明一下;
1、Hibernate中一般通过XML映射和注解的方式解决不一致问题,看下面两个简单例子,
注解方式:
[java] view
plain copy
@Entity
@Table(name = "ACCOUNT")
public class Account implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue
private int id;
@Column(name="fld_number")
private String number;
@OneToMany(mappedBy="account")
private Set<Client> clients;
private double balance;
}
XML映射文件配置方式:
[html] view
plain copy
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="org.hibernate.test.domain.Account" table="ACCOUNT" lazy="false">
<id name="id" column="ACCOUNT_ID">
<generator class="native"/>
</id>
<many-to-one name="person" class="org.hibernate.test.domain.Person" cascade="save-update,lock"
column="person_id"
unique="true"
not-null="true"/>
</class>
</hibernate-mapping>
2、Spring JDBC一般通过使用RowCallbackHandler和RowMapper,编写回调函数的方式处理不一致,各种方法如下所示:
好的,了解完上述两种方式,咱们再来看看对于同样的问题,MyBatis是如何处理的?
对于这种问题,MyBatis主要提供了两种方式用来解决该问题;
一、通过对查询SQL采用字段别名的方式
1、新建表和插入数据
[html] view
plain copy
DROP TABLE IF EXISTS `sl_company`;
CREATE TABLE `sl_company` (
`company_id` int(11) NOT NULL AUTO_INCREMENT,
`company_name` varchar(50) DEFAULT NULL,
`full_name` varchar(100) DEFAULT NULL,
`address` varchar(100) DEFAULT NULL,
`post_code` varchar(45) DEFAULT NULL,
PRIMARY KEY (`company_id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of sl_company
-- ----------------------------
INSERT INTO `sl_company` VALUES ('1', '锐客科技', '上海锐客科技股份有限公司', '上海市浦东新区峨山路91弄97号陆家嘴软件园5号楼3层', '200127');
2、创建对应的实体类
[java] view
plain copy
<ol start="1" class="dp-j" style="box-sizing: border-box; margin: 0px 0px 1px 45px !important; padding: 0px; font-weight: normal; list-style: decimal; border-top: none; border-right: 1px solid rgb(231, 229, 220); border-b
1、Hibernate中一般通过XML映射和注解的方式解决不一致问题,看下面两个简单例子,
注解方式:
[java] view
plain copy
@Entity
@Table(name = "ACCOUNT")
public class Account implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue
private int id;
@Column(name="fld_number")
private String number;
@OneToMany(mappedBy="account")
private Set<Client> clients;
private double balance;
}
XML映射文件配置方式:
[html] view
plain copy
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="org.hibernate.test.domain.Account" table="ACCOUNT" lazy="false">
<id name="id" column="ACCOUNT_ID">
<generator class="native"/>
</id>
<many-to-one name="person" class="org.hibernate.test.domain.Person" cascade="save-update,lock"
column="person_id"
unique="true"
not-null="true"/>
</class>
</hibernate-mapping>
2、Spring JDBC一般通过使用RowCallbackHandler和RowMapper,编写回调函数的方式处理不一致,各种方法如下所示:
好的,了解完上述两种方式,咱们再来看看对于同样的问题,MyBatis是如何处理的?
对于这种问题,MyBatis主要提供了两种方式用来解决该问题;
一、通过对查询SQL采用字段别名的方式
1、新建表和插入数据
[html] view
plain copy
DROP TABLE IF EXISTS `sl_company`;
CREATE TABLE `sl_company` (
`company_id` int(11) NOT NULL AUTO_INCREMENT,
`company_name` varchar(50) DEFAULT NULL,
`full_name` varchar(100) DEFAULT NULL,
`address` varchar(100) DEFAULT NULL,
`post_code` varchar(45) DEFAULT NULL,
PRIMARY KEY (`company_id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of sl_company
-- ----------------------------
INSERT INTO `sl_company` VALUES ('1', '锐客科技', '上海锐客科技股份有限公司', '上海市浦东新区峨山路91弄97号陆家嘴软件园5号楼3层', '200127');
2、创建对应的实体类
[java] view
plain copy
<ol start="1" class="dp-j" style="box-sizing: border-box; margin: 0px 0px 1px 45px !important; padding: 0px; font-weight: normal; list-style: decimal; border-top: none; border-right: 1px solid rgb(231, 229, 220); border-b
相关文章推荐
- MyBatis由浅入深学习总结之二:MyBatis解决Java实体类和数据库表字段不一致方法总结
- MyBatis由浅入深学习总结之二:MyBatis解决Java实体类和数据库表字段不一致方法总结
- MyBatis解决Java实体类和表字段不一致方法
- MyBatis学习笔记:表字段名与实体类属性名不一致的解决方法
- MyBatis 学习总结(四)——解决字段名与实体类属性名不同的2种方法
- 在Mybatis中,解决数据库字段名与java实体类属性名不一致的三种方式
- Mybatis实体类属性与数据库字段不一致解决办法
- MyBatis学习总结(四)——解决字段名与实体类属性名不相同的冲突
- MyBatis学习总结(4)——解决字段名与实体类属性名不相同的冲突
- MyBatis学习总结(四)——解决字段名与实体类属性名不相同的冲突
- MyBatis学习总结(四)——解决字段名与实体类属性名不相同的冲突
- MyBatis学习总结(四)——解决字段名与实体类属性名不相同的冲突
- MyBatis学习总结(四)——解决字段名与实体类属性名不相同的冲突
- MyBatis学习总结(四)——解决字段名与实体类属性名不相同的冲突
- MyBatis学习总结(四)——解决字段名与实体类属性名不相同的冲突
- MyBatis学习总结(四)——解决字段名与实体类属性名不相同的冲突
- MyBatis学习总结(四)——解决字段名与实体类属性名不相同的冲突
- MyBatis学习总结(四)——解决字段名是实体类属性名不相同冲突
- 【转】MyBatis学习总结(四)——解决字段名与实体类属性名不相同的冲突
- MyBatis学习总结(四)——解决字段名与实体类属性名不相同的冲突