Hibernate的关联映射:

多对一关联映射:

第一步: 创建实体模型

Emp类:

package com.rl.hiber.model;import java.util.Date;public class Emp {private Integer empNo;private String ename;private Date birthday;private Integer gender;private String address;/*** 引入一的一端作为属性, 建立多对一的关系*/private Team team;public Integer getEmpNo() {return empNo;}public void setEmpNo(Integer empNo) {this.empNo = empNo;}public Team getTeam() {return team;}public void setTeam(Team team) {this.team = team;}public String getEname() {return ename;}public void setEname(String ename) {this.ename = ename;}public Date getBirthday() {return birthday;}public void setBirthday(Date birthday) {this.birthday = birthday;}public Integer getGender() {return gender;}public void setGender(Integer gender) {this.gender = gender;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}
}

Team类:

package com.rl.hiber.model;public class Team {private Integer tId;private String tName;private String loc;public Integer gettId() {return tId;}public void settId(Integer tId) {this.tId = tId;}public String gettName() {return tName;}public void settName(String tName) {this.tName = tName;}public String getLoc() {return loc;}public void setLoc(String loc) {this.loc = loc;}
}

第二步: 配置实体映射文件

Emp.hbm.xml:

<?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="com.rl.hiber.model"><class name="Emp" table="t_emp"><id name="empNo" column="emp_no"><generator class="native"></generator></id><property name="ename"></property><property name="birthday"></property><property name="gender"></property><property name="address"></property><!-- 指定多对一的关联映射name: 多的一端中定义的一的一端的属性, 也就是teamcolumn: 多的一端中的外键, 也就是一的一端中的主键, t_id--><many-to-one name="team" column="t_id"></many-to-one></class>
</hibernate-mapping>        

Team.hbm.xml:

<?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="com.rl.hiber.model"><class name="Team" table="t_team"><id name="tId" column="t_id"><generator class="native"></generator></id><property name="tName" column="t_name"></property><property name="loc"></property></class></hibernate-mapping>        

hibernate.cfg.xml:

生成建表脚本:

数据库建表结果:

第三步: 测试多对一关联映射

测试代码:

package com.rl.hiber.test;import java.util.Date;import org.hibernate.Session;
import org.hibernate.Transaction;
import org.junit.Test;import com.rl.hiber.model.Emp;
import com.rl.hiber.model.Team;
import com.rl.hiber.utils.HibernateUtil;public class TestHibernate {@Testpublic void test1() {Session session = HibernateUtil.getSessoion();Transaction tx = session.beginTransaction();try {Team team = new Team();team.settName("公牛队");team.setLoc("芝加哥");//保存球队(要先保存球队, 否则是瞬时对象)session.save(team);Emp emp1 = new Emp();Emp emp2 = new Emp();emp1.setEname("乔丹");emp1.setAddress("芝加哥");emp1.setGender(1);emp1.setBirthday(new Date());//设置队员与球队之间的关系emp1.setTeam(team);//保存队员session.save(emp1);emp2.setAddress("芝加哥");emp2.setBirthday(new Date());emp2.setEname("菲尔");emp2.setGender(1);emp2.setTeam(team);session.save(emp2);//提交事务tx.commit();} catch (Exception e) {e.printStackTrace();tx.rollback();}finally {HibernateUtil.closeResource(session);}}
}

hibernate发出sql语句:

数据库结果:

下面讲解一个知识点:

级联: 在"多的一端"设置cascade属性

直接贴代码吧:

<?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="com.rl.hiber.model"><class name="Emp" table="t_emp"><id name="empNo" column="emp_no"><generator class="native"></generator></id><property name="ename"></property><property name="birthday"></property><property name="gender"></property><property name="address"></property><!-- 指定多对一的关联映射name: 多的一端中定义的一的一端的属性, 也就是teamcolumn: 多的一端中的外键, 也就是一的一端中的主键, t_idcascade: delete(删除多的一端会直接上一的一端也删除, 即 删除队员也会把球队给删掉), 在多的一端不建议使用save-update(保存或者更新多的一端时, 一的一端也会自动先做保存或更新, 即 不需要先保存球队), 建议使用all:包含以上两种none: 没有级联(默认状态)--><many-to-one name="team" column="t_id" cascade="save-update"></many-to-one></class>
</hibernate-mapping>        

测试级联状态为save-update代码:

package com.rl.hiber.test;import java.util.Date;import org.hibernate.Session;
import org.hibernate.Transaction;
import org.junit.Test;import com.rl.hiber.model.Emp;
import com.rl.hiber.model.Team;
import com.rl.hiber.utils.HibernateUtil;public class TestHibernate {/*** 将级联状态设置为save-update时不需要先保存球队(一的一端)*/@Testpublic void test2() {Session session = HibernateUtil.getSessoion();Transaction tx = session.beginTransaction();try {Team team = new Team();team.settName("小牛队");team.setLoc("达拉斯");Emp emp1 = new Emp();Emp emp2 = new Emp();emp1.setEname("库班");emp1.setAddress("达拉斯");emp1.setGender(1);emp1.setBirthday(new Date());//设置队员与球队之间的关系emp1.setTeam(team);//保存队员session.save(emp1);emp2.setAddress("达拉斯");emp2.setBirthday(new Date());emp2.setEname("诺维斯基");emp2.setGender(1);emp2.setTeam(team);session.save(emp2);//提交事务tx.commit();} catch (Exception e) {e.printStackTrace();tx.rollback();}finally {HibernateUtil.closeResource(session);}}
}

hibernate发出sql语句:

数据库结果:

一对一单端关联映射:

映射文件:

<?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="com.rl.hiber.model"><class name="IDCard" table="t_id_card"><!-- 指定idcard的主键名称, 建议跟emp端的主键名称相同--><id name="cardId" column="emp_no"><!-- 使用外键的方式来生成主键--><generator class="foreign"><!-- 指定idcard这一端的emp属性--><param name="property">emp</param></generator></id><property name="cardNo" column="card_no"></property><!-- 一对一关联映射name: 指定idcard这一端中定义的另一个一的一端的属性(即emp)constrained: true(即建表外键约束), 当要删除队员信息时必须先删除idcard--><one-to-one name="emp" constrained="true"></one-to-one></class>
</hibernate-mapping>        

测试代码:

package com.rl.hiber.test;import java.util.Date;import org.hibernate.Session;
import org.hibernate.Transaction;
import org.junit.Test;import com.rl.hiber.model.Emp;
import com.rl.hiber.model.IDCard;
import com.rl.hiber.utils.HibernateUtil;public class TestHibernate {@Testpublic void testAdd() {Session session = HibernateUtil.getSessoion();Transaction tx = session.beginTransaction();try {Emp emp = new Emp();emp.setAddress("广州");emp.setBirthday(new Date());emp.setEname("张三");emp.setGender(1);IDCard card = new IDCard();card.setCardNo("111");card.setEmp(emp);//此时并没有设置级联, 但hibernate会自动在保存idcard时先保存emp//因为如果不保存emp则无法返回主键, 它们俩是共用主键的以保证一对一关系session.save(card);tx.commit();} catch (Exception e) {e.printStackTrace();tx.rollback();}finally {HibernateUtil.closeResource(session);}}
}

数据库结果:

一对一双向映射

Emp表的配置文件:

<?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="com.rl.hiber.model"><class name="Emp" table="t_emp"><id name="empNo" column="emp_no"><generator class="native"></generator></id><property name="ename"></property><property name="birthday"></property><property name="gender"></property><property name="address"></property><!-- 指定一对一关联映射关系 --><one-to-one name="card"></one-to-one></class>
</hibernate-mapping>        

测试代码:

package com.rl.hiber.test;import java.util.Date;import org.hibernate.Session;
import org.hibernate.Transaction;
import org.junit.Test;import com.rl.hiber.model.Emp;
import com.rl.hiber.model.IDCard;
import com.rl.hiber.utils.HibernateUtil;public class TestHibernate {@Testpublic void testAdd() {Session session = HibernateUtil.getSessoion();Transaction tx = session.beginTransaction();try {Emp emp = new Emp();emp.setAddress("北京");emp.setBirthday(new Date());emp.setEname("李四");emp.setGender(1);IDCard card = new IDCard();card.setCardNo("123");emp.setCard(card);card.setEmp(emp);session.save(emp);session.save(card);tx.commit();} catch (Exception e) {e.printStackTrace();tx.rollback();}finally {HibernateUtil.closeResource(session);}}
}

数据库结果同上的一对一单端映射

一对多单向关联映射:

在多对一的基础上修改:

Emp配置文件:

<?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="com.rl.hiber.model"><class name="Emp" table="t_emp"><id name="empNo" column="emp_no"><generator class="native"></generator></id><property name="ename"></property><property name="birthday"></property><property name="gender"></property><property name="address"></property></class>
</hibernate-mapping>        

Team配置文件:

<?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="com.rl.hiber.model"><class name="Team" table="t_team"><id name="tId" column="t_id"><generator class="native"></generator></id><property name="tName" column="t_name"></property><property name="loc"></property><!-- 指定一对多关联映射name: 在一的一端指定一个多的一端的集合属性empskey:->column: 多的一端里面有一个一的一端的外键t_idone-to-many:->class: 多的一端所在的位置(默认已经指定了com.rl.hiber.model)--><set name="emps"><key column="t_id"></key><one-to-many class="Emp"/></set></class></hibernate-mapping>        

测试代码:

package com.rl.hiber.test;import java.util.Date;
import java.util.HashSet;
import java.util.Set;import org.hibernate.Session;
import org.hibernate.Transaction;
import org.junit.Test;import com.rl.hiber.model.Emp;
import com.rl.hiber.model.Team;
import com.rl.hiber.utils.HibernateUtil;public class TestHibernate {@Testpublic void testAdd() {Session session = HibernateUtil.getSessoion();Transaction tx = session.beginTransaction();try {Emp emp = new Emp();emp.setAddress("芝加哥");emp.setBirthday(new Date());emp.setEname("乔丹");emp.setGender(1);//保存队员session.save(emp);Emp emp1 = new Emp();emp1.setAddress("芝加哥");emp1.setBirthday(new Date());emp1.setEname("菲尔");emp1.setGender(1);//session.save(emp1);Set<Emp> emps = new HashSet<Emp>();emps.add(emp);emps.add(emp1);Team team = new Team();team.setLoc("芝加哥");team.settName("公牛队");//指定一对多的关系team.setEmps(emps);//保存球队session.save(team);tx.commit();} catch (Exception e) {e.printStackTrace();tx.rollback();}finally {HibernateUtil.closeResource(session);}}
}

数据库结果:

设置级联:

测试代码:

package com.rl.hiber.test;import java.util.Date;
import java.util.HashSet;
import java.util.Set;import org.hibernate.Session;
import org.hibernate.Transaction;
import org.junit.Test;import com.rl.hiber.model.Emp;
import com.rl.hiber.model.Team;
import com.rl.hiber.utils.HibernateUtil;public class TestHibernate {@Testpublic void testAdd() {Session session = HibernateUtil.getSessoion();Transaction tx = session.beginTransaction();try {Emp emp = new Emp();emp.setAddress("达拉斯");emp.setBirthday(new Date());emp.setEname("库班");emp.setGender(1);Emp emp1 = new Emp();emp1.setAddress("达拉斯");emp1.setBirthday(new Date());emp1.setEname("诺维斯基");emp1.setGender(1);Set<Emp> emps = new HashSet<Emp>();emps.add(emp);emps.add(emp1);Team team = new Team();team.setLoc("达拉斯");team.settName("小牛队");team.setEmps(emps);//保存球队时就会自动保存队员session.save(team);tx.commit();} catch (Exception e) {e.printStackTrace();tx.rollback();}finally {HibernateUtil.closeResource(session);}}
}

数据库结果:

一对多双向映射:

一对多是有缺陷的, 保存的时候如果多的一端的外键是非空字段, 那么保存就会出错.

跟多对一类似, 有点小区别:

需要在一对多的基础上再在多的一端指定多对一的关系, 就不贴代码了

Emp.hbm.xml:

<?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="com.rl.hiber.model"><class name="Emp" table="t_emp"><id name="empNo" column="emp_no"><generator class="native"></generator></id><property name="ename"></property><property name="birthday"></property><property name="gender"></property><property name="address"></property><!-- 指定多对一的关联映射name: 多的一端中定义的一的一端的属性, 也就是teamcolumn: 多的一端中的外键, 也就是一的一端中的主键, t_id这个外键必须跟team.hbm.xml指定的外键一样, 如果两个column的名称不一样则相当于有两个外键就冲突了--><many-to-one name="team" column="t_id" /></class>
</hibernate-mapping>        

Team.hbm.xml同上

测试代码同多对一.

真正的解决非空字段的方法, 如果真的有需求需要在一的一端进行保存的话, 可以在Team.hbm.xml设置反转:

<?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="com.rl.hiber.model"><class name="Team" table="t_team"><id name="tId" column="t_id"><generator class="native"></generator></id><property name="tName" column="t_name"></property><property name="loc"></property><!-- 指定一对多关联映射name: 在一的一端指定一个多的一端的集合属性empskey:->column: 多的一端里面有一个一的一端的外键t_idone-to-many:->class: 多的一端所在的位置(默认已经指定了com.rl.hiber.model)inverser: 设置反转, 表面上用一的一端进行保存, 实际上反转给多的一端进行保存--><set name="emps" cascade="save-update" inverse="true"><key column="t_id"></key><one-to-many class="Emp"/></set></class></hibernate-mapping>        

测试代码:

package com.rl.hiber.test;import java.util.Date;
import java.util.HashSet;
import java.util.Set;import org.hibernate.Session;
import org.hibernate.Transaction;
import org.junit.Test;import com.rl.hiber.model.Emp;
import com.rl.hiber.model.Team;
import com.rl.hiber.utils.HibernateUtil;public class TestHibernate {@Testpublic void testAdd2() {Session session = HibernateUtil.getSessoion();Transaction tx = session.beginTransaction();try {Team team = new Team();team.setLoc("达拉斯");team.settName("小牛队");Emp emp = new Emp();emp.setAddress("达拉斯");emp.setBirthday(new Date());emp.setEname("库班");emp.setGender(1);//利用队员指定多对一emp.setTeam(team);Emp emp1 = new Emp();emp1.setAddress("达拉斯");emp1.setBirthday(new Date());emp1.setEname("诺维斯基");emp1.setGender(1);emp1.setTeam(team);Set<Emp> emps = new HashSet<Emp>();emps.add(emp);emps.add(emp1);team.setEmps(emps);//只保存球队, 实际上会反转给多的一端进行保存session.save(team);tx.commit();} catch (Exception e) {e.printStackTrace();tx.rollback();}finally {HibernateUtil.closeResource(session);}}
}

结果相同

单端多对多关联映射:

Emp类需要加上另一端的属性, 并提供set跟get方法, 就不贴代码了

配置文件:

Emp.hbm.xml:

<?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="com.rl.hiber.model"><class name="Emp" table="t_emp"><id name="empNo" column="emp_no"><generator class="native"></generator></id><property name="ename"></property><property name="birthday"></property><property name="gender"></property><property name="address"></property><!-- 指定多对多关系table: 中间表--><set name="roles" table="emp_role"><!-- emp端的外键, 也就是emp_no主键 --><key column="emp_no"></key><!-- class: 另一端的路径column: 另一端的外键, 也就是role_id主键--><many-to-many class="Role" column="role_id"></many-to-many></set></class>
</hibernate-mapping>        

Role.hbm.xml:

<?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="com.rl.hiber.model"><class name="Role" table="t_role"><id name="roleId" column="role_id"><generator class="native"></generator></id><property name="roleName" column="role_name"></property><property name="roleDesc" column="role_desc"></property></class>
</hibernate-mapping>        

生成数据库表:

测试代码:

package com.rl.hiber.test;import java.util.Date;
import java.util.HashSet;
import java.util.Set;import org.hibernate.Session;
import org.hibernate.Transaction;
import org.junit.Test;import com.rl.hiber.model.Emp;
import com.rl.hiber.model.Role;
import com.rl.hiber.utils.HibernateUtil;public class TestHibernate {@Testpublic void testAdd() {Session session = HibernateUtil.getSessoion();Transaction tx = session.beginTransaction();try {Emp emp = new Emp();emp.setAddress("上海");emp.setBirthday(new Date());emp.setEname("田七");emp.setGender(1);Role role1 = new Role();role1.setRoleDesc("讲课");role1.setRoleName("老师");session.save(role1);Role role2 = new Role();role2.setRoleDesc("管理");role2.setRoleName("总监");session.save(role2);Set<Role> roles = new HashSet<Role>();roles.add(role1);roles.add(role2);emp.setRoles(roles);session.save(emp);tx.commit();} catch (Exception e) {e.printStackTrace();tx.rollback();}finally {HibernateUtil.closeResource(session);}}
}

数据库结果:

同样也可以设置级联, 就不举例了.

多对多的双向关联:

Role类需要加上另一端的属性, 并提供set跟get方法

在原来的基础上修改Role.hbm.xml,

<?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="com.rl.hiber.model"><class name="Role" table="t_role"><id name="roleId" column="role_id"><generator class="native"></generator></id><property name="roleName" column="role_name"></property><property name="roleDesc" column="role_desc"></property><!-- 指定多对多关系(需中间表) --><set name="emps" table="emp_role" cascade="save-update"><!-- key:->column: role端的外键, role_id --><key column="role_id"></key><!-- class: 另一端的路径  column: 另一端的外键emp_no --><many-to-many class="Emp" column="emp_no"></many-to-many></set></class>
</hibernate-mapping>        

测试代码:

package com.rl.hiber.test;import java.util.Date;
import java.util.HashSet;
import java.util.Set;import org.hibernate.Session;
import org.hibernate.Transaction;
import org.junit.Test;import com.rl.hiber.model.Emp;
import com.rl.hiber.model.Role;
import com.rl.hiber.utils.HibernateUtil;public class TestHibernate {/*** 采用级联的方式*/@Testpublic void testAdd2() {Session session = HibernateUtil.getSessoion();Transaction tx = session.beginTransaction();try {Emp emp = new Emp();emp.setAddress("上海");emp.setBirthday(new Date());emp.setEname("田七");emp.setGender(1);Emp emp2 = new Emp();emp2.setAddress("天津");emp2.setBirthday(new Date());emp2.setEname("周八");emp2.setGender(2);Set<Emp> emps = new HashSet<Emp>();emps.add(emp);emps.add(emp2);Role role1 = new Role();role1.setRoleDesc("讲课");role1.setRoleName("老师");role1.setEmps(emps);session.save(role1);tx.commit();} catch (Exception e) {e.printStackTrace();tx.rollback();}finally {HibernateUtil.closeResource(session);}}
}

数据库结果:

Hibernate框架简介④相关推荐

  1. hibernate框架简介

    目录 一. 历史与背景 1. 应用程序的分层体系结构 2.   持久化层(如图1右) (1)什么叫持久化? (2)什么叫持久层? (3)为什么要持久化?增加持久层的作用是什么? (4)目前在持久化层领 ...

  2. 【Spring】框架简介

    [Spring]框架简介 Spring是什么 Spring是分层的Java SE/EE应用full-stack轻量级开源框架,以IOC(Inverse Of Control:反转控制)和AOP(Asp ...

  3. Java开源——常见J2EE框架简介

    Java开源--常见J2EE框架简介 Spring Framework Spring是一个解决了许多在J2EE开发中常见的问题的强大框架. Spring提供了管理业务对象的一致方法并且鼓励了注入对接口 ...

  4. Spring框架简介

    Spring框架简介 Spring Framework 是一个开源的Java/Java EE全功能栈(full-stack)的应用程序框架,以Apache许可证形式发布,也有.NET平台上的移植版本. ...

  5. 【转】.NET框架简介

    .NET 框架是由微软开发的软件开发平台,其最主要的两个组成部分是公共语言运行时 (CLR) 和框架类库 (FCL),基础类库 (BCL)是框架类库的一个子集. .NET 框架简介 下图展示了 .NE ...

  6. Spring 框架简介及官方压缩包目录

    一.Spring 框架简介及官方压缩包目录 一.什么是spring spring是一个框架, 核心思想 IoC,AOP 简化企业开发,帮助分离对象之间的依赖关系 IoC:Inversion of Co ...

  7. Apache—DBUtils框架简介

    Apache-DBUtils框架简介.DbUtils类.QueryRunner类 .ResultSetHandler接口 commons-dbutils 是 Apache 组织提供的一个开源 JDBC ...

  8. Hibernate 框架基本知识

    QTP:Quick Test Pressional 1,Hibernate是一个优秀的java持久化层解决方案,是当今主流的对象-关系映射(ORM,ObjectRelationalMapping)工具 ...

  9. SSM框架学习(一)————SSM框架简介

    目录 一.SSM框架简介 1.1 Spring 1.2 SpringMVC 1.3 MyBatis 二.MVC模式 2.1 mvc模式 2.1.1 MVC应用举例 2.2 SSM和SSH在MVC模式上 ...

  10. 【Spring框架一】——Spring框架简介

    系列文章目录 Spring框架简介 系列文章目录 前言 一.什么是Spring框架? 二.Spring框架的优势 1.简化开发流程:Spring提供了许多现成的功能,可以使得开发人员在构建应用程序时减 ...

最新文章

  1. axios get 某个参数是数组怎么传_Vue 中 Axios 的封装和 API 接口的管理
  2. Mysql源码学习——源码目录结构
  3. QT的QSignalTransition类的使用
  4. CTF基础理论知识02
  5. 模块化操作(es6写法)
  6. TypeScript 2.0 正式发布
  7. 10许可证即将到期_重要公告:这些企业,你们的证到期啦
  8. 【Hadoop篇】--Hadoop常用命令总结
  9. [转载] Python全栈(1)—— Python如何快速下载库与jupyter notebook 的基本使用
  10. SQL执行异常系列之——绑定变量窥探导致的执行异常
  11. 三菱f800变频器 频率设定_三菱plc和变频器通讯怎么设置频率
  12. 计算机领域媒体的分类有,多媒体信息主要有几种类型
  13. Laya1.0Matter.js案例之牛顿摆
  14. 1.嵌入式之80C51单片机
  15. 2022中国智慧医疗领域最具商业合作价值企业盘点
  16. 数显之家快讯:【SHIO世硕心语】会议显示需求的多样化带来新竞争!
  17. android adb命令唤醒屏幕,如何使用adb命令打开和关闭屏幕?
  18. 计算机在摄影应用,计算机X线摄影在临床中的应用
  19. 一款懒人必备的Python爬虫神器
  20. matlab 矩阵维度必须一致,错误使用 /

热门文章

  1. iOS- 利用UIImageView自己整了个不会说话的汤姆猫
  2. STM8S003F3和N76E003功能引脚对比
  3. 建站百科|全网最全、最系统的域名申请教程,不看吃亏!!!
  4. CentOS等保三级安全加固方案
  5. 苹果手机有护眼模式吗_暗黑模式=护眼模式?其实手机中的这个设置才真正护眼...
  6. JTAG、SBW、BSL 三种接口的区别
  7. SAP中经遇到溢出如何理解
  8. 从Ajax聊一聊Jsonp hijacking
  9. gromacs ngmx_GROMACS使用教程
  10. 关于【野火】OV7725例程移植【OV7670】总结