hibernate映射文件
很多同学在进行编程学习时缺乏系统学习的资料。本页面基于hibernate映射文件内容,从基础理论到综合实战,通过实用的知识类文章,标准的编程教程,丰富的视频课程,为您在hibernate映射文件相关知识领域提供全面立体的资料补充。同时还包含 h6、hack、hadoop 的知识内容,欢迎查阅!
hibernate映射文件相关知识
-
我的hibernate学习记录导入相关jar包 创建实体类,实体类要有一个唯一标识 在实体类所在的包创建后缀名为hbm.xml的hibernate映射文件,导入头部约束: <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <!-- name属性:实体类的完整类名 table属性:实体类对应的表名 --> <class name="com.melon.entity.User" table="user_list"> <!-- id标签表示唯一标识 name属性:实体类中
-
Hibernate第九篇【组件映射、继承映射】前言 到目前位置,我们已经学习了一对一、一对多、多对一、多对多映射了...既然Hibernate是ORM实现的框架,它还提供了组件映射和继承映射..本博文主要讲解组件映射和继承映射 Java主要的类主要有两种方式 组合关系,组合关系对应的就是组件映射 继承关系,继承关系对应的就是继承映射 组件映射 组件映射实际上就是将组合关系的数据映射成一张表,组件类和被包含的组件类映射成一张表 有的时候,两个类的关系明显不是继承关系,但两个类的亲密程度很高,在一个类里边需要用到另外一个类...
-
Hibernate【映射】知识要点(3)在Hibernate入门篇讲解配置的时候,在generator节点下还有一个属性没有讲解,也就是foreign属性...现在来填坑了.. idCard映射文件 idCart的映射文件主要在于:将主键也映射成外键来使用,这就需要用到foreign属性值了 使用<one-to-one>标签来配置基于主键的映射 <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="zhongfucheng.on
-
通过源码查看hibernate的configure()方法如何解析配置文件和映射文件。下面是hibernate经典的七步骤。不过今天主要看第一步configure()。解释他如何解析配置文件。 查看他的底层源码。 // 创建用户 Users users = new Users(1003, "张三", "123"); // 读取并解析配置文件,以及映射文件 //如下图源码所示。已经在底层进行// //”/hibernate.cfg.xml”配置文件的解析。自然里面配置//的映射文件也跟着解析。 Configuration configuration = new Configuration().configure(); // 测试 System.out.println("成功"); // 创建SessionFactory实例
hibernate映射文件相关课程
hibernate映射文件相关教程
- 3.2 XML 映射 现在流行使用注解方式告诉 Hibernate 你操作的对象对应数据库中的那张表及更多关联信息。对 XML 映射大家也需要了解一下,万一你以后工作的企业里有一群怀旧的叔叔呢!本章节中的案例使用 XML 映射方式,后面的内容讲解还是要跟上潮流,使用注解方式。命名为 Student.hbm.xml 文件中部分内容如下 (完整的文档结构说明可查看官方文档):<Hibernate-mapping> <class name="com.po.Student" table="student" schema="scott" > <id name="stuId" type="java.lang.Integer"> <column name="stuId" precision="11" scale="0" /> <generator class="increment"></generator> </id> <property name="stuName" type="java.lang.String"> <column name="stuName" length="20" unique="true" /> </property> <!--其它属性映射--> </class></Hibernate-mapping>上面这个 XML 文件中的内容,语义上非常明确。为了加深理解,再解释一下 Xml 中相应元素:class: 类与表的映射关系;id: 类中的那个属性对应表中的主键字段,只能有一个。这个属性也可叫做标识属性。property: 通过子元素 column 一起说明类中的其它属性分别对应表中的那个字段,可以有多个。通过 XML 元素属性或子元素所提供的附加信息越多,就可以让 Hibernate 清晰地明白自己的任务,否则某些环节它就要靠猜了!编码规范提示: 尽可能保持 Java 类中属性命名和表中字段命名相同!有了前面的工作。已经足够让 Hibernate 在进入数据库系统时生成正确的 SQL 语句,也足够让 Hibernate 把从数据库中带出来的数据映射成正确 Java 对象。
- 2. 继承映射 学习继承映射之前,需要搞清楚什么是继承映射?继承是 OOP 中的概念,其目的除了复用代码之外,还用来描述对象在现实世界中的关系。为了更好地讲解继承映射,咱们再在数据库中创建一张老师表。数据库中多了一张表,按照使用 Hibernate 的套路,理所当然应该在程序中添加一个老师类。@Entitypublic class Teacher { private Integer teacherId; private String teacherName; private Integer serviceYear; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) public Integer getTeacherId() { return teacherId; } //省略其它……}从 OOP 的角度进行分析,可以为学生类和老师类创建一个共同的父类,描述两者共同的属性。所以,你会看到如下 3 个类型:public class Person implements Serializable {}public class Teacher extends Person implements Serializable {}public class Student extends Person implements Serializable {}程序中通过 OOP 继承语法重新描述了学生类和老师类的关系,程序中结构上的变化,必然会让 Hibernate 茫然不知所措,因为关系型数据库中是没有继承一说的。此时,就需要告诉 Hibernate 如何把程序中的继承关系映射到数据库中。这就叫做继承映射!
- 4.6 添加 MyBatis 映射文件 编写 GoodsDao 、 OrderDao 对应的映射文件, 首先我们通过 application.properties 指定映射文件的位置:实例:# 指定MyBatis配置文件位置mybatis.mapper-locations=classpath:mapper/*.xml然后在 resources/mapper 目录下新建 GoodsMapper.xml 文件,该文件就是 goods 表对应的映射文件,内容如下:实例:<?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"><!-- 本映射文件对应GoodsDao接口 --><mapper namespace="com.imooc.springboottransaction.GoodsDao"> <!-- 对应GoodsDao中的selectForUpdate方法 --> <select id="selectForUpdate" resultMap="resultMapBase" parameterType="java.lang.Long"> select <include refid="sqlBase" /> from goods where id = #{id} for update </select> <!-- 对应GoodsDao中的update方法 --> <update id="update" parameterType="com.imooc.springboottransaction.GoodsDo"> update goods set name=#{name},num=#{num} where id=#{id} </update> <!-- 可复用的sql模板 --> <sql id="sqlBase"> id,name,num </sql> <!-- 保存SQL语句查询结果与实体类属性的映射 --> <resultMap id="resultMapBase" type="com.imooc.springboottransaction.GoodsDo"> <id column="id" property="id" /> <result column="name" property="name" /> <result column="num" property="num" /> </resultMap></mapper>同样我们在 resources/mapper 目录下新建 OrderMapper.xml 文件,该文件是 order 表对应的映射文件,内容如下:实例:<?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"><!-- 本映射文件对应OrderDao接口 --><mapper namespace="com.imooc.springboottransaction.OrderDao"> <!-- 对应OrderDao中的insert方法 --> <insert id="insert" parameterType="com.imooc.springboottransaction.OrderDo"> insert into `order` (goods_id,count) values (#{goodsId},#{count}) </insert></mapper>
- 5. 映射器 映射器的作用就是检查用户的请求路径中是否存在对应的控制器组件。Tips: 有点类似于导购员。客户报一个商品名,然后告诉你真正的商品所在位置。使用 Spring MVC 时,如果开发者没有显示配置映射器,Spring MVC 会启动默认的映射器组件。在 DispatcherServlet 所在包的根目录下有名为 DispatcherServlet.properties 的文件,已经配置了很多默认组件信息,开发者不用做任何配置,便能启动这些组件工作。打开此文件可以看到有 2 种类型的映射器信息:org.springframework.web.servlet.HandlerMapping=org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping,\ org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping这两个映射器分别为哪一种请求寻找控制器了?回答这个问题之间,先了解用户控制器的映射方式。前面提到可使用 @RequestMapping 注解对外映射控制器组件。其实 Spring MVC 还可以使用 @Bean 注解实现相同的功能 。先假设存在如下的控制器:public class HelloAction { public String hello() implements Controller{ System.out.println("hello"); return "hello"; }}@Bean 注解映射: 打开项目中的 WebConfig 配置类,添加如下代码; @Bean(name = "/hello") public HelloAction hello() { return new HelloAction(); }Tips: “hello” 前面一定要加上 “/” 。如果使用 @Bean 注解的方式映射控制器,则用户控制器需要实现 org.springframework.web.servlet.mvc.Controller 接口, 意味着必须是一个标准的控制器。此处的 @Bean 的作用就是告诉 Spring MVC:你要创建它,其名字被当成一个访问控制器的 URL。BeanNameUrlHandlerMapping 映射器的功能就是查找有没有哪一个 Bean 的名字和用户请求的路径相匹配。RequestMappingHandlerMapping 映射器就是查找由 @RequestMapping 注解映射的控制器。无论使用这 2 种映射器的哪一种,理论上都无需显示配置。Spring 会根据你的请求信息选择对应的映射器。显然,使用 @RequestMapping 映射更直接、可观。所以,RequestMappingHandlerMapping 映射器使用的更多。
- 4.6 添加 MyBatis 映射文件 编写数据访问层接口之后,MyBatis 需要知道,如何将接口方法及参数转换为 SQL 语句,以及 SQL 语句执行结果如何转换为对象。这些都是通过映射文件描述的, MyBatis 映射文件就是描述对象 - 关系映射的配置文件。首先我们通过 application.properties 指定映射文件的位置:实例:# 指定MyBatis配置文件位置mybatis.mapper-locations=classpath:mapper/*.xml然后在 resources/mapper 目录下新建 GoodsMapper.xml 文件,该文件就是 goods 表对应的映射文件,内容如下:实例:<?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"><!-- 本映射文件对应GoodsDao接口 --><mapper namespace="com.imooc.springbootmybatis.GoodsDao"> <!-- 对应GoodsDao中的insert方法 --> <insert id="insert" parameterType="com.imooc.springbootmybatis.GoodsDo"> insert into goods (name,price,pic) values (#{name},#{price},#{pic}) </insert> <!-- 对应GoodsDao中的delete方法 --> <delete id="delete" parameterType="java.lang.Long"> delete from goods where id=#{id} </delete> <!-- 对应GoodsDao中的update方法 --> <update id="update" parameterType="com.imooc.springbootmybatis.GoodsDo"> update goods set name=#{name},price=#{price},pic=#{pic} where id=#{id} </update> <!-- 对应GoodsDao中的selectOne方法 --> <select id="selectOne" resultMap="resultMapBase" parameterType="java.lang.Long"> select <include refid="sqlBase" /> from goods where id = #{id} </select> <!-- 对应GoodsDao中的selectAll方法 --> <select id="selectAll" resultMap="resultMapBase"> select <include refid="sqlBase" /> from goods </select> <!-- 可复用的sql模板 --> <sql id="sqlBase"> id,name,price,pic </sql> <!-- 保存SQL语句查询结果与实体类属性的映射 --> <resultMap id="resultMapBase" type="com.imooc.springbootmybatis.GoodsDo"> <id column="id" property="id" /> <result column="name" property="name" /> <result column="price" property="price" /> <result column="pic" property="pic" /> </resultMap></mapper>
- 4.7 编写映射文件 分别针对 OrderDao 、 ErpOrderDao 编写对应的映射文件,然后按照配置类指定的位置,两个文件分别放到 resources/mapper1 和 resources/mapper2 目录下。实例:<?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"><!-- 本映射文件对应OrderDao接口 --><mapper namespace="com.imooc.springbootmultidb.mapper1.OrderDao"> <!-- 对应OrderDao中的insert方法 --> <insert id="insert" parameterType="com.imooc.springbootmultidb.mapper1.OrderDo" useGeneratedKeys="true" keyProperty="id"> insert into `order` (goods_id,count) values (#{goodsId},#{count}) </insert></mapper>实例:<?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"><!-- 本映射文件对应ErpOrderDao接口 --><mapper namespace="com.imooc.springbootmultidb.mapper2.ErpOrderDao"> <!-- 对应ErpOrderDao中的insert方法 --> <insert id="insert" parameterType="com.imooc.springbootmultidb.mapper2.ErpOrderDo"> insert into erp_order (out_id,goods_id,count) values (#{outId},#{goodsId},#{count}) </insert></mapper>
hibernate映射文件相关搜索
-
h1
h6
hack
hadoop
halt
hana
handler
hanging
hash
hashtable
haskell
hatch
hbase
hbuilder
hdfs
head
header
header php
headers
headerstyle