- 浏览: 148589 次
- 性别:
- 来自: 武汉
文章分类
最新评论
-
flyingcatjj:
很适合我这种刚接触的
myeclipse xfire 开发webservice实例 -
tangzlboy:
非常好,非常详细,非常中用。
linux入门 -
yzz9i:
楼主说的很是详细。
myeclipse xfire 开发webservice实例 -
zqx888191:
很再理阿!
老程序员的教诲 -
simplecat123:
...
SQLite数据读取
八 一对一 用户与身份证的关系 设计用户实体 主实体 package hibernate.bean; public class Person { private int id; private String name; private IDCard idcart; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public IDCard getIdcart() { return idcart; } public void setIdcart(IDCard idcart) { this.idcart = idcart; } } 映射文件 <?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 package="hibernate.bean"> <class name="Person"> <id name="id"> <generator class="native"/> </id> <property name="name"/> <one-to-one name="idcart"/> </class> </hibernate-mapping> 设计身份证实体 从实体 package hibernate.bean; public class IDCard { private int id; private String useDate; private Person person; public String getUseDate() { return useDate; } public void setUseDate(String useDate) { this.useDate = useDate; } public int getId() { return id; } public void setId(int id) { this.id = id; } public Person getPerson() { return person; } public void setPerson(Person person) { this.person = person; } } 映射文件 <?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 package="hibernate.bean"> <class name="IDCard" table="id_card"> <id name="id"> <!-- 设置主键为外键 关联的是主实体的id--> <generator class="foreign"> <param name="property">person</param> </generator> </id> <property column="use_date" name="useDate"/> <one-to-one name="person"/> </class> </hibernate-mapping> 测试 package hibernate.test; import hibernate.bean.IDCard; import hibernate.bean.Person; import hibernate.util.HibernateUtil; import org.hibernate.Session; import org.hibernate.Transaction; public class OneToOne { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub add(); query(1); } static Person add(){ Session session=null; Transaction tx=null; try{ session=HibernateUtil.getSession(); tx=session.beginTransaction(); IDCard idcard=new IDCard(); idcard.setUseDate("有效期三年"); Person person=new Person(); person.setName("许春荣"); // person.setIdcart(idcard); idcard.setPerson(person); session.save(person); session.save(idcard); tx.commit(); return person; }finally{ if(session!=null) session.close(); } } static void query(int id){ Session session=null; try{ session=HibernateUtil.getSession(); Person person=(Person)session.get(Person.class, id); System.out.println(person.getName()+"-------->"+person.getIdcart().getUseDate()); }finally{ if(session!=null) session.close(); } } } 分析:在执行后,我们可以去查看一下从实体下的表结构 在命令行输入 show create table id_card 源码为 ddl语句 CREATE TABLE `id_card` ( `id` int(11) NOT NULL, `use_date` varchar(255) default NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 发现生成的表的主键少了一个定义,根据我们的设计 id_card表的id 不但要是主键也要是外键,它引用的是 person表的主键 为什么是这样呢?其实这样并不会影响我们程序的实体的实现效果,为了设计更合理,我们必须要注意 在Person的映射文件的one-to-one节点中 少了一个属性constrained定义,加上<one-to-one name=”idCard” constrained=”true”/> ddl语句 CREATE TABLE `id_card` ( `id` int(11) NOT NULL, `use_date` varchar(255) default NULL, PRIMARY KEY (`id`), KEY `FK627C1FB461BB04F2` (`id`), CONSTRAINT `FK627C1FB461BB04F2` FOREIGN KEY (`id`) REFERENCES `person` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 这样是不是更合理呢 下面我们来看第二种一对一的设计方式 上面的这种设计方式是把从表的主键id是依赖于主表的主键id而建立的 我们可不可以改变这样的设计方式,而在从表中额外加入一个外键呢 但是,如果我们这样做的话,我们可以在从表下根据一个主表的id,而在从表中加入多条数据 这样不就是多对一的关系了吗?是这样的,但是我们是否可以把这个外键同时也设置为唯一键呢 哈哈,这不就好了,这只是要修改映射文件即可实现,怎么修改的 请看吧 Person实体的映射文件 修改前 <?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 package="hibernate.bean"> <class name="Person"> <id name="id"> <generator class="native"/> </id> <property name="name"/> <one-to-one name="idcart"/> </class> </hibernate-mapping> 修改后 <?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 package="hibernate.bean"> <class name="Person"> <id name="id"> <generator class="native"/> </id> <property name="name"/> <!-- 这里的property-ref="person" 是IDCard的属性 用这来告诉hibernate的从实体隶属于Person --> <one-to-one name="idcart" property-ref="person"/> </class> </hibernate-mapping> IDCard的映射文件 修改前 <?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 package="hibernate.bean"> <class name="IDCard" table="id_card"> <id name="id"> <!-- 设置主键为外键 关联的是主实体的id--> <generator class="foreign"> <param name="property">person</param> </generator> </id> <property column="use_date" name="useDate"/> <one-to-one name="person" constrained=”true”/> </class> </hibernate-mapping> 修改后的 <?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 package="hibernate.bean"> <class name="IDCard" table="id_card"> <id name="id"> <!-- 设置主键为外键 关联的是主实体的id--> <!-- <generator class="foreign"> <param name="property">person</param> </generator> --> <generator class="native"/> </id> <property column="use_date" name="useDate"/> <!-- 在这里加入了many-to-one 而不是one-to-one 并且指定其隶属的实体 Person unique是指定其唯一键 column制定其唯一键的列名 --> <many-to-one name="person" unique="true" column="person_id"/> </class> </hibernate-mapping> 然后就可以运行测试文件 成功执行 现在我们来查看id_card表的ddl语句 show create table id_card; CREATE TABLE `id_card` ( `id` int(11) NOT NULL auto_increment, `use_date` varchar(255) default NULL, `person_id` int(11) default NULL, PRIMARY KEY (`id`), UNIQUE KEY `person_id` (`person_id`), KEY `FK627C1FB49495921C` (`person_id`), CONSTRAINT `FK627C1FB49495921C` FOREIGN KEY (`person_id`) REFERENCES `person` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 发现person_id是个外键 并且还是个唯一键 到这里一对一的映射就完成了 完毕 end!
发表评论
-
二十六 Hibernate实践
2011-07-04 19:18 723不适合OLAP以查询分析数据为主的系统。适合OLTP联机事务处 ... -
二十五 SQL和命名查询
2011-07-04 19:17 1035SQL和命名查询 SQL查询 //根据sql语句查询 s ... -
二十四 拦截器与监听器
2011-07-04 19:14 948在保存 更新等操作的前 ... -
二十三 iterate查询与N+1次查询的问题
2011-07-04 19:13 774test.java view plaincopy to ... -
二十二 Hibernate映射文件配置
2011-07-04 19:12 877id 主键生成方式 incremen ... -
二十一 串讲Hibernate配置文件中的配置项
2011-07-04 19:11 864数据源配置 ## JNDI Datasource ... -
二十 悲观锁和乐观锁
2011-07-04 19:10 716为了避免对对象同步操作时候产生的数据不一致问题,我们对对象采用 ... -
十九 hibernate3之缓存
2011-07-04 19:09 905什么是缓存?现在我们来看一个模拟的缓存操作 模拟一个缓存例子 ... -
十八 一对一对象的懒加载
2011-07-04 17:59 728一对一对象的懒加载,对于主的一方,lazy是无效的,它在访问数 ... -
十七 懒加载
2011-07-04 17:58 728十七 懒加载 什么是hibe ... -
十六 继承映射
2011-07-04 17:56 485第一种 一个员工类它有两个子类,利用hibernate我们把 ... -
十五 cascade 级联操作与inverse表是否放弃维护关联关系
2011-07-04 17:54 851cascade 级联操作字段 Casade用来说明当对主对 ... -
十四 在hibernate中使用集合总结
2011-07-04 17:52 876集合映射(set, list, array,bag, map) ... -
十三 array数组形式的映射
2011-07-04 17:51 832数组其实跟List的集合映射没有多大的差别,当然它不可以使用b ... -
十二 集合映射之Map集合
2011-07-04 17:49 795十二 Map集合映射 Map是以键值对的形式存放数据的 ... -
十一 集合映射 List集合
2011-07-04 17:47 1025十一 集合映射 set的 ... -
十 组件关联
2011-07-04 17:45 695组件关联 什么是组件关联呢?比如说一个用户,它的名称,有一 ... -
九 多对多关系 学生<--->老师的关系
2011-07-04 17:44 1228九 多对多关系 学生<--->老师的关系 多对多 ... -
七 一对多关系 部门与员工的关系
2011-07-04 17:41 1128一对多 部门与员工的关系 相对于部门来说 一对多 根据先前 ... -
六 员工与部门——》多对以关系
2011-07-04 17:37 1025关联关系 多对一关系 员工与部门的关系 从员工角度 是 ...
相关推荐
解析身份证所在地址通常需要一个地区代码库,这个库包含了所有省份、城市和区县的对应关系。开发人员会将这个数据结构化并存储在数据库或字典中,通过地区码查询到对应的地址信息,并在验证成功后展示给用户。 总的...
本资源“身份证头部号段与地区对应数据.rar”提供了全国范围内身份证前几位数字(号段)与对应地区的映射关系,这对于验证身份证的初步合法性以及进行数据分析具有重要意义。 首先,我们要了解身份证号的结构。...
一对一关联关系在现实世界中很常见,比如一个人只有一个身份证,或者一个公司的总部只有一个。在Hibernate中,设置一对一关联关系可以帮助我们更好地管理和操作这些具有唯一对应关系的数据。 1. **配置一对一关联**...
《身份证信息管理系统》是一款基于数据结构的本科生课程设计项目,主要目标是实现对个人身份证信息的有效管理和查询。在这个系统中,作者运用了数据结构的基本原理和算法,为身份证信息的存储、检索和更新提供了高效...
- `card_address.csv` 和 `card_address_two.csv` 文件可能存储了全国地区的身份证号码与归属地对应关系。CSV(Comma Separated Values)是一种常见的数据交换格式,用于存储表格数据。在PHP中,我们可以使用内置的...
在安卓平台上,通过NFC(Near Field Communication)技术读取二代身份证信息是一项常见的功能,尤其在需要验证用户身份的应用场景中。本项目提供了一个完整的代码实现,可以直接在Android Studio环境中编译并运行,...
在IT行业中,尤其是在移动应用开发领域,理解和处理身份证号码与省市区对应关系是一项常见的任务。身份证号码不仅是个人身份的重要标识,也是进行地理位置关联的关键数据。本文将深入探讨这个主题,特别是针对...
3. "U盘量产网.url":这是一个链接,可能指向一个网站,提供关于U盘生产和维护的信息,虽然与身份证驱动直接关系不大,但可能对用户有所帮助,比如在没有身份证读卡器的情况下,使用特定的U盘进行数据传输。...
例如,一对一关系可能适用于用户和其唯一账号的关联,而多对多关系则适用于用户和角色的分配,一个用户可以拥有多个角色,一个角色也可以被多个用户拥有。理解并熟练运用这些关系映射,对于开发高效、稳定的Java企业...
4. **用户界面**:提供一个友好的界面展示身份证信息,可能包括输入验证、数据格式化等。 5. **安全措施**:确保敏感信息的安全,遵循相关的法律法规,防止非法访问或滥用。 6. **日志记录**:记录读卡操作,便于...
在这个特定的案例中,"data.sql"文件包含了一系列的MySQL语句,用于创建和填充一个包含全国各地身份证号码与对应区域信息的数据库表。 首先,这个数据库可能包含以下字段: 1. `id`: 主键,唯一标识每一项记录,...
安装和更新正确的身份证驱动程序对于保证身份证读卡器的正常运行至关重要,同时也关系到用户隐私的保护。因此,用户和管理员在操作时需要确保驱动程序的版本是最新的,并遵循官方提供的安装和配置指南。
使用Java语言开发,同时提供了完整的源代码,这对学习者来说是一个宝贵的资源,可以借此了解如何在实际项目中应用SpringBoot框架,以及如何结合OCR技术实现身份证信息的自动识别。 在压缩包文件名称列表中,只有一...
1. **数据结构与数据库**:查询身份证所在地,首先需要一个包含所有中国行政区域代码的数据结构,这可能是一个数据库表或者JSON文件,存储了省份、城市、区县的对应关系。 2. **编码与解码**:身份证号码的前6位...
如果需要联网获取个人信息,可能还需要使用HTTP请求库(如Apache HttpClient或OkHttp)与服务器交互,发送身份证号码请求个人基本信息,并对返回的数据进行解析,这可能涉及到JSON或XML的解析技术。 此外,使用...
标题"Hibernate ORM - 一对一连接表关联关系" 提示我们,这里主要讨论的是Hibernate ORM框架在处理数据库中一对一(One-to-One)关联映射的方法。Hibernate是一个流行的Java对象关系映射(ORM)工具,它允许开发者用...
- Access数据库是一种关系型数据库,常用于小型应用。C#可以通过ADO.NET库进行数据操作。 - 使用`OleDbConnection`类建立与数据库的连接,`OleDbCommand`类执行SQL语句,如查询、插入、更新和删除数据。 - `...
因此,我们的目标是建立一个映射关系,将身份证号的前六位与对应的籍贯信息关联起来。 为了实现这一功能,我们首先需要准备一个JSON文本文档,该文档包含所有省份和对应行政区域代码的映射。JSON(JavaScript ...
Mybatis,一个优秀的持久层框架,提供了方便的方式来处理复杂的数据关系,包括一对一和一对多的关系。这篇实验报告将详细阐述如何在Mybatis中实现这两种关系的数据插入。 1. **一对一关系** - **定义**:一对一...
身份证的校验码,也称为身份证号码的最后一位数字,是根据前17位数字通过特定算法计算得出的,用于验证整个身份证号码的正确性。这个校验码的计算涉及到一系列复杂的数学逻辑,包括模运算、加权求和以及模11余数规则...