XML Extensible Markup Language(可扩展标记语言)

这里写目录标题

  • 文档示例:
  • 一个完整的xml由以下构成
  • 文档声明
  • 元素
  • 属性
  • 注释
  • CDATA标记、字符实体
  • XML优势
  • XML作用:
  • 数据配置
  • 数据存储
  • XML语义约束
  • DTD约束
  • 内部DTD
  • dtd约束详解
  • DTD使用注意事项
  • 外部DTD
  • 公用DTD
  • XML Schema约束
  • XML Schema的优势所在
  • 定义XML Schema文件shiporder.xsd
  • DOM解析XML
  • XML解析四种方式
  • DOM:Document Object Model 文档对象模型
  • SAX:Simple API for XML
  • DOM4J: DOM for Java
  • JDOM: Java DOM
  • 认识DOM
    • Node类
  • 用DOM解析XML
  • studentNode.getNodeType()的解读
  • 使用DOM4J解析XML
  • 使用DOM4J解析XML
  • 使用DOM4J完成添加操作
  • 添加元素到已存在的文件(默认最后一个子元素)
  • 添加元素到已存在的文件(指定位置)
  • 使用DOM4J完成删除修改操作
  • 使用DOM4J修改指定元素

文档示例:

<?xml version="1.0" encoding="UTF-8"?>
<!-- 学生信息 -->
<students><student id="001"><name>李明</name><age>23</age><score>98</score></student><student id="002"><name>李刚</name><age>23</age><score>88</score></student>
</students>

一个完整的xml由以下构成

文档声明

<?xml version="1.0" encoding="UTF-8"?>

XML文档总是以XML声明开始,定义了XML的版本信息和所使用的的编码等信息

元素

称为开始标签、称为结束标签,“李明”表示标签的内容,内容可以是文本,也可以是标签

属性

元素中的id就是属性名,001是属性值,属性值要使用双引号括起来。属性加载一个元素的开始标签上,用来对元素进行描述。一个元素可以有多个属性,空格隔开。属性没有先后顺序,同一个XML元素不允许同名属性

注释

对XML内容进行解释说明的文字

CDATA标记、字符实体

有时元素文本中会一些特殊字符,比如<、>、”、&等,这些字符在XML文档结构本身中已经用到了,此时主要通过两种办法,实现正确解析这些特殊字符
方法1:个别的特殊字符可以使用字符实体替换

严格地讲,在 XML 中仅有字符 “<“和”&” 是非法的。单引号、双引号和大于号是合法的,但是把它们替换为实体引用是个好的习惯。
方法2:大量的特殊字符可以CDATA标记来处理
CDATA标记中的所有字符都会被当做普通字符来处理,而不是XML标签。
定义CDATA标记的语法

<![CDATA[ 要显示的字符 ]]>

【示例2】XML的CDATA标记

<student id="002">       <name>李刚</name><age><![CDATA[<young>10</young>]]></age><score>&lt;100</score>
</student>

比如:

然后效果是这样的:

格式良好的 XML 文档:遵循XML文档的基本规则
元素正确嵌套
XML文件的第一行必须是xml声明
XML文件只能有一个根节点
英文字符的大小写是有差异的
开始的控制标记与结束的控制标记缺一不可
属性值的设置必须被""包围起来

XML优势

简单性
遵循XML文档的基本规则的前提下,可以任意自定义标签
良好的可读性
遵循XML文档的基本规则的前提下,标签名见名知义,具有良好的嵌套关系,带有了 良好的可读性。
可扩展性
可以根据XML的基本语法来进一步限定使用范围和文档格式,从而定义一种新的语言
可以轻松的跨平台应用
XML文档是基于文本的,所以很容易被人和机器阅读,也非常容易使用,便于不同设 备和不同系统间的信息交换
数据内容与显示的分离
在XML文档中,数据的显示样式已从文档中分离出来,而放入相关的样式表文件中。 这样一来如果要改动数据的表现形式,就不需要改动数据本身,而只要改动控制数据显 示的样式表文件就可以了

XML作用:

由于各个计算机所使用的操作系统、数据库不同,因此数据之间的交换向来是件头痛的事,可以使用XML来交换数据。比如可以通过XML实现Linux和Windows平台之间的数据传输。这个过程中先将Linux平台中数据通过程序保存到xml文件中,再在Windows中通过程序读取xml中的数据

数据配置

使用XML配制文件可读性强,灵活性高。在后面JavaEE的Servlet、Filter、Listener、JavaEE开源框架的Spring、SpringMVC、MyBatis开发中会经常使用XML存储配置信息。

数据存储

数据库,比如Oracle、MySQL等提供了强有力的数据存储能力和处理能力,XML也可以用来存储数据。XML文件可以做小型数据库,也是不错的选择,我们程序中可能用到一些经常要人工配置的数据,如果放在数据库中读取不合适(因为这会增加维护数据库的工作),则可以考虑直接用XML来做小型数据库。这种方式直接读取文件显然要比读数据库快。比如MSN中保存用户聊天记录就是用XML文件

XML语义约束

上面已经讲解了XML语义约束的原因和必要性。实际中XML语义约束主要包括 DTD 和 XML Schema 两种约束。其中DTD是早期的语义约束,XML Schema是DTD的替代者,本身也是也个XML文件,功能也更加强大。

DTD约束

DTD,Document Type Definition,文档类型定义,保证XML文档格式正确性。使用DTD定义了合法的语义约束后,必须让XML文档引入该语义约束,才会生效。在XML文档中引入DTD主要包括3中方式。

内部DTD
外部DTD
公用DTD(引入网络中DTD)

内部DTD

所谓内部DTD是指DTD和XML数据在同一个XML文件中。DTD定义在XML声明和XML主体内容之间。以<!DOCTYPE根元素[ 开始,以]>结束

dtd约束详解

DTD使用注意事项

外部DTD

相当于在外面创键了一个DTD的一个文件,如果其他文件想要引用这个约束,直接引用这个文档即可
如果采用内部DTD就会导致代码的重复,不利于后期修改维护

创建文件:

<!ELEMENT students (student+)>
<!ELEMENT student (name,age,score)>
<!ATTLIST student id CDATA #REQUIRED>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ELEMENT score (#PCDATA)>

引入外部DTD
语法

<!DOCTYPE  根元素 SYSTEM "外部DTD文件路径">

公用DTD

其实也是一种外部DTD,是有某个权威机构制定,供特定行业或者公众使用。公用DTD 通过PUBLIC关键字引入,而不是使用SYSTEM。另外还要在增加一个标识名。语法如下:

<!DOCTYPE  根元素 PUBLIC  "DTD标识名" "公用DTD的URI">


在DTD中定义语义约束简单易用,但是也具有一些明显的劣势:

DTD可以定义XML文档的结构,却无法对XML元素内容进行约束,比如,如果希望某个XML元素的内容是日期类型,希望内容必须是正整数,希望某个子元素最多出现3次,就无能为力了。这就需要使用XML Schema来进行语义约束了!

XML Schema约束

DTD和XML Schema是两种XML定义语义约束的工具,二者各有特色:
DTD简单易用,但是功能相对较弱。
XML Schema采用
XML文档
来定义语义约束,要复杂一些,但是功能强大的多。
XML Schema指定丰富的类型,而且允许开发者自定义数据类型,因此完全可以处理更加复杂的语义约束场景。

XML Schema简称XSD(XML Schema Definition ),是DTD的替代者,既可以定义XML文档结构,也可以定义XML文档的内容约束

XML Schema的优势所在

可读性强:本身就是一个XML文档
支持数据类型:比如日期类型,并且限制日期范围都没有问题
可扩展:导入其他的Schema,自定义数据类型、一个XML文档使用多个XML Schema

JavaEE、JavaEE开源框架中都大量使用了XML文档,其语义约束也己经陆续从之前的DTD约束升级为Schema约束

定义XML Schema文件shiporder.xsd

<?xml version="1.0" encoding="ISO-8859-1" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"><!-- 简易元素的定义 --><xs:element name="orderperson" type="xs:string"/><xs:element name="name" type="xs:string"/><xs:element name="address" type="xs:string"/><xs:element name="city" type="xs:string"/><xs:element name="country" type="xs:string"/><xs:element name="title" type="xs:string"/><xs:element name="note" type="xs:string"/><xs:element name="quantity" type="xs:positiveInteger"/><xs:element name="price" type="xs:decimal"/><!-- 属性的定义 --><xs:attribute name="orderid" type="xs:string"/><!-- 复合元素的定义 --><xs:element name="shipto"><xs:complexType><xs:sequence><xs:element ref="name"/><xs:element ref="address"/><xs:element ref="city"/><xs:element ref="country"/></xs:sequence></xs:complexType></xs:element><xs:element name="item"><xs:complexType><xs:sequence><xs:element ref="title"/><xs:element ref="note" minOccurs="0"/><xs:element ref="quantity"/><xs:element ref="price"/></xs:sequence></xs:complexType></xs:element><xs:element name="shiporder"><xs:complexType><xs:sequence><xs:element ref="orderperson"/><xs:element ref="shipto"/><xs:element ref="item" maxOccurs="unbounded"/></xs:sequence><xs:attribute ref="orderid" use="required"/></xs:complexType></xs:element>
</xs:schema>

DOM解析XML

XML解析四种方式

XML作为一种数据传输工具,肯定离不开XML文档的读写。XML本身是结构化文档,如果依旧使用普通的IO流读写,效率低下,编程繁琐。目前常用的XML解析技术主要有四种

DOM和SAX
是XML解析的两种规范,目前主流的XML解析器都会为DOM和SAX提供实现

使用这两种技术解析XML比较繁琐,代码冗长,可读性也不高。
所以Java领域中又出现了两个开源的XML解析器:
DOM4J和JDOM

其中DOM4J是面向接口编程,而JDOM是面向实现编程。DOM4j比JDOM更灵活,性能表现也比较优异

DOM:Document Object Model 文档对象模型

使用该技术解析XML文档时,会根据要操作的文档,构建一棵驻留在内存中的树,然后就可以使用DOM接口来操作这棵树。

由于树是驻留在内存中,所以非常方便各种操作。但是也因为这棵树包含了XML文档的所有内容,是比较耗费资源的。

该方式适合小文档的解析、适合多次访问的文档的解析

SAX:Simple API for XML

是基于事件的解析,它是为了解决DOM解析的资源耗费而出现的。
SAX在解析一份XML文档时,会依次触发文档开始、元素开始、元素结束、文档结束等事件,
应用程序通过监听解析过程中所触发的事件即可获取XML文档的内容

该方式不需要事先调入整个文档,优势是占用资源少,内存消耗小,一般在解析数据量较大的文档是采用该方式

DOM4J: DOM for Java

开源的XML解析工具,完全支持DOM、SAX机制,具有性能优异、功能强大和操作简单等特点。越来越多的Java软件都在使用DOM4J处理XML文档

JDOM: Java DOM

JDOM的目的是成为Java特定文档模型。行至半路,一部分人产生了新的想法,而这些想法又无法在JDOM中实现,干脆就从该项目中分离出来,单独去开发另外一套专属的XML API,这就是DOM4J。因此,两者具有相同的设计目的,用法也非常相似。从组中解决来看,

JDOM的主要API以类为主,DOM4J的API以接口为主

Java对DOM和SAX两种规范都提供了支持。Java解析XML文档的API称为JAXP(Java API for XMLProcessing),作为JDK的一部分发布。其中javax.xml.parsers包中提供了四个与DOM和SAX解析相关的类。

如果使用DOM解析,就使用org.w3c.dom包下的类和接口。如果使用SAX解析,就使用org.xml.sax包下的类和接口

认识DOM

DOM,Document Object Model。将XML文档解析为一棵树,XML文档的节点对应DOM树的节点,

节点之间保持父子、兄弟关系。并且DOM树中的每个节点都是一个对象,如果要解析该文档,使用面向对象的思想调用节点的属性和方法即可。

可以对该树进行添加、查询、修改、删除等操作,最终会转换为对对应XML文档的操作

Node类

Node类是DOM树中节点的父类。根据具体类型可以分为多个子类,比如元素节点类Element、属性节点类Attr、文本节点类Text等。另外还有注释类Comment、文档类Document。

Document类代表整个XML文档本身,对整个文档进行操作的入口。Document对象中包含一个根节点。

这个应该是DOM有自己的一个数结构,其中有很多自身的子类,其中包括元素节点类Element、属性节点类Attr、文本节点类等,在里面还有一个文档类Document。它代表的是文档本身,也就是xml文档,他在里面也形成了一个树形结构

用DOM解析XML

public class TestDOM {public static void main(String[] args) throws ParserConfigurationException,SAXException, IOException {// 1.创建DOM解析器工厂DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();// 2.由DOM解析器工厂创建DOM解析器DocumentBuilder db = dbf.newDocumentBuilder();// 3.由DOM解析器解析文档,生成DOM树Document doc = db.parse("module2/student2.xml");// 4.解析DOM树,获取文档内容(元素 属性 文本)// 4.1获取根元素studentsNodeList studentsList = doc.getElementsByTagName("students");// NodeList studentsList = doc.getChildNodes();// System.out.println(studentsList.getLength());Node studentsNode = studentsList.item(0);// students根节点// 4.2获取students中所有的子元素studentNodeList studentList = studentsNode.getChildNodes();// System.out.println(studentList.getLength());//空白也算节点// 4.3对每个student进行处理for (int i = 0; i < studentList.getLength(); i++) {// 获取第i个节点Node studentNode = studentList.item(i);// System.out.println(studentNode.getNodeType());if (studentNode.getNodeType() == Node.ELEMENT_NODE) {// Node.ELEMENT_NODE// :1// 获取每个学生的id属性及其值Element stuElem = (Element) studentNode;String value = stuElem.getAttribute("id");System.out.println("id----->" + value);// 获取每个学生的name,age,scoreNodeList nasList = stuElem.getChildNodes();// System.out.println(nasList.getLength());for (int j = 0; j < nasList.getLength(); j++) { // 7// 获取第j个节点Node nasNode = nasList.item(j);// 只处理Element,不处理空白if (nasNode.getNodeType() == Node.ELEMENT_NODE) {// 3// 得到元素节点Element nasElem = (Element) nasNode;// 获取元素名称String name = nasElem.getNodeName();// 获取元素的文本String content = nasElem.getTextContent();// 输出元素的名称和文本System.out.println(name + "----" + content);}}System.out.println();}}}
}

studentNode.getNodeType()的解读

node是节点的意思,那么它可能是文字内容、CDATA段、元素、属性等等,具体是什么,就要靠NodeType来判断节点的类型。
ELEMENT_NODE是一个枚举值,代表元素节点类型。
所以if(node.getNodeType()==Node.ELEMENT_NODE)的意思就是:
如果当前节点是元素节点的话。

缺点
1)繁琐:前面三个步骤相同,也需要书写一遍。能否封装好
2)繁琐:getChildNodes()不仅包括Element,也包括空白形成的Text,遍历时需要进行筛选
繁琐:getChildNodes()也包括注释、也包括外部DTD引用,大部分情况下并不是用户需要的

使用DOM4J解析XML

DOM4J是一套开源的XML解析工具。与利用DOM、SAX、JAXP机制来解析XML相比,DOM4J 表现更优秀,具有性能优异、功能强大和极端易用使用的特点,只要懂得DOM基本概念,就可以通过DOM4J的API文档来解析XML。DOM4J是一套开源的API。实际项目中,往往选择DOM4J来作为解析XML的利器。
DOM4J在很大程度上简化了XML的处理方式。从表面上看,DOM4J有点类似DOM的解析机制,也将XML文档转换为一棵结构化树(称为DOM4J树吧),但是DOM4J的处理方式比DOM树更简单

使用DOM4J解析XML

public static void main(String[] args) throws DocumentException {//1.根据xml文件创建DOM树SAXReader reader = new SAXReader();//2、解析指定的xml文件Document dom = reader.read(new File("D:\\ASXTCourse\\JavaSE2\\xml\\src\\student.xml"));//3、获得根节点元素对象  就是studentsElement rootElement = dom.getRootElement();//4、获得students下的子节点// List<Element> elements = rootElement.elements();List<Element> elements2 = rootElement.elements("student");for (Element e:elements2) {// System.out.println(e.attribute("id").getValue());//获得指定节点属性的值//student元素下的子节点List<Element>  list2 = e.elements();for (Element e2:list2) {System.out.println(e2.getName());//获得节点元素名称System.out.println(e2.getText());//获得节点的文本内容System.out.println("-----------------------");}}
}

技能点1:DOM4J对底层原始的XML解析器进行了高度封装,正是这种封装简化了XML处理。在DOM4J的org.dom4j.io包下提供了如下几个类:

DOMReader:根据W3C的DOM树创建DOM4J树
SAXReader:基于SAX解析机制解析一份XML文档,并将其转换为DOM4J树

技能点2:获取属性
获取所有属性 List attributes = elem.attributes();
获取指定属性 Attribute attr = elem.attribute(“id”);
attr.getName()+":"+attr.getValue() 获取属性名和属性值

技能点3:获取元素
Element rootElem = doc.getRootElement(); 获取根元素
List stuList = rootElem.elements(); 获取所有名称的子元素列表
List stuList = rootElem.elements(“student”);获取指定名称子元素列表
String ename = subElem.getName(); 获取元素名称

属性就是设置标签的属性,而元素, 就是标签开始到最后结束,中间所包含的东西,比如

<h1>abc</h1>   abc就是元素

使用DOM4J完成添加操作

public class TestDom4j2 {public static void main(String[] args) throws DocumentException, IOException {//1.创建一个DocumentFactory对象//DocumentFactory factory = new DocumentFactory();//2.创建一个Document对象//Document doc = factory.createDocument();Document doc = DocumentHelper.createDocument();doc.addComment("student list");//3.获取DOM树的根节点studentsElement rootElem = doc.addElement("students");//4.在DOM树中给students添加子节点Element stuElem = rootElem.addElement("student");stuElem.addAttribute("id","003");//id属性Element stuAgeElem = stuElem.addElement("age");//age子元素stuAgeElem.setText("30");Element stuNameElem = stuElem.addElement("name"); //name子元素stuNameElem.setText("张三");Element stuScoreElem = stuElem.addElement("score");//score子元素stuScoreElem.setText("97");//5.将DOM树最新数据写入XML文件OutputFormat format = OutputFormat.createPrettyPrint();//精致美观格式//OutputFormat format = OutputFormat.createCompactFormat();//紧密压缩格式format.setEncoding("utf-8");Writer fw = new FileWriter("module2/student3.xml");//XMLWriter xmlWriter = new XMLWriter(System.out,format);XMLWriter xmlWriter = new XMLWriter(fw,format);xmlWriter.write(doc);xmlWriter.close();}
}

技能点1:如何创建新文档Document:
DocumentFactory:使用了工厂模式
DocumentHelper:底层还是调用了DocumentFactory

技能点2:如何添加子元素
Element stuElem = rootElem.addElement(“student”);
stuElem.addAttribute(“id”,“003”);//id属性
Element stuAgeElem = stuElem.addElement(“age”);//age子元素
stuAgeElem.setText(“30”);

技能点3:如何写数据到XML文件
XMLWriter xmlWriter = new XMLWriter(fw,format);
createPrettyPrint:精致美观格式,带缩进、有换行,格式美观
createCompactFormat:紧密压缩格式,无缩进、无换行,不推荐

添加元素到已存在的文件(默认最后一个子元素)

public class TestDom4j3 {public static void main(String[] args) throws DocumentException, IOException {//1.根据xml文件创建DOM树SAXReader reader = new SAXReader();File file = new File("module2/student3.xml");Document doc = reader.read(file);//2.获取DOM树的根节点Element rootElem = doc.getRootElement();//3.在DOM树中给students添加子节点Element stuElem = rootElem.addElement("student");stuElem.addAttribute("id","005");Element stuAgeElem = stuElem.addElement("age");stuAgeElem.setText("32");Element stuNameElem = stuElem.addElement("name");stuNameElem.setText("王五");Element stuScoreElem = stuElem.addElement("score");stuScoreElem.setText("100");//4.将DOM树最新数据写入XML文件OutputFormat format = OutputFormat.createPrettyPrint();format.setEncoding("utf-8");Writer fw = new FileWriter("module2/student3.xml");XMLWriter xmlWriter = new XMLWriter(fw,format);xmlWriter.write(doc);xmlWriter.close();}
}

添加元素到已存在的文件(指定位置)

public class TestDom4j4 {public static void main(String[] args) throws DocumentException, IOException {//1.根据xml文件创建DOM树SAXReader reader = new SAXReader();File file = new File("module2/student2.xml");Document doc = reader.read(file);//2.获取DOM树的根节点studentsElement rootElem = doc.getRootElement();//3.在DOM树中给students添加子节点到指定位置List<Element> list = rootElem.elements("student");Element stuElem =DocumentHelper.createElement("student");stuElem.addAttribute("id","002");Element stuAgeElem = stuElem.addElement("age");stuAgeElem.setText("30");Element stuNameElem = stuElem.addElement("name");stuNameElem.setText("李四");Element stuScoreElem = stuElem.addElement("score");stuScoreElem.setText("90");list.add(1,stuElem);//4.将DOM树最新数据写入XML文件OutputFormat format = OutputFormat.createPrettyPrint();format.setEncoding("utf-8");Writer fw = new FileWriter("module2/student3.xml");XMLWriter xmlWriter = new XMLWriter(fw,format);xmlWriter.write(doc);xmlWriter.close();}
}

技能点1:添加元素到指定位置
List list = rootElem.elements(“student”);
Element stuElem =DocumentHelper.createElement(“student”);
list.add(1,stuElem);

使用DOM4J完成删除修改操作

public class TestDom4j5 {public static void main(String[] args) throws DocumentException, IOException {//1.根据xml文件创建DOM树SAXReader reader = new SAXReader();File file = new File("module2/student3.xml");Document doc = reader.read(file);//2.获取DOM树的根节点studentsElement rootElem = doc.getRootElement();//3.在DOM树中给students删除子节点List<Element> list = rootElem.elements("student");for (int i = 0; i <list.size() ; i++) {Element elem = list.get(i);if(elem.attribute("id").getValue().equals("003")){//list.remove(elem);rootElem.remove(elem);break;}}//4.将DOM树最新数据写入XML文件OutputFormat format = OutputFormat.createPrettyPrint();format.setEncoding("utf-8");Writer fw = new FileWriter("module2/student3.xml");XMLWriter xmlWriter = new XMLWriter(fw,format);xmlWriter.write(doc);xmlWriter.close();}
}

使用DOM4J修改指定元素

public class TestDom4j7 {public static void main(String[] args) throws DocumentException, IOException {//1.根据xml文件创建DOM树SAXReader reader = new SAXReader();File file = new File("module2/student3.xml");Document doc = reader.read(file);//2.获取DOM树的根节点studentsElement rootElem = doc.getRootElement();//3.在DOM树中给修改指定student节点List<Element> list = rootElem.elements("student");for (int i = 0; i <list.size() ; i++) {Element elem = list.get(i);if(elem.attribute("id").getValue().equals("005")){elem.attribute("id").setValue("006");Element nameElem = elem.element("name");nameElem.setText("赵六");break;}}//4.将DOM树最新数据写入XML文件OutputFormat format = OutputFormat.createPrettyPrint();format.setEncoding("utf-8");Writer fw = new FileWriter("module2/student3.xml");XMLWriter xmlWriter = new XMLWriter(fw,format);xmlWriter.write(doc);xmlWriter.close();}
}
技能点1:修改指定元素
elem.attribute("id").setValue("006"); 修改元素的属性值Element nameElem = elem.element("name"); 修改元素的子元素的文本nameElem.setText("赵六");

xml简单理解,xml增删改操作,仅作笔记,不作为学习借鉴相关推荐

  1. java jdom进行xml的增删改差_java使用DOM对XML文档进行增删改查操作实例代码

    本文研究的主要是java使用DOM对XML文档进行增删改查操作的相关代码,具体实例如下所示. 源代码: package com.zc.homeWork18; import java.io.File; ...

  2. 扩展Mybatis,免配XML文件自动实现增删改和随意查询

    写在前面 以前有点懒,一直没有分享技术新的的习惯,这次居然有心情写点东西分享出来. 作为一个从很老很老的jdk就开始码java代码的码农,对Mybatis却一直都是一无所知,一直固守在Hibernat ...

  3. 使用Qt创建XML文档及XML文档的增删改

    目录名字 使用Qt创建XML文档及XML文档的增删改 XML文档的操作 :QXml + QFile+QTextStream 创建XML的一般步骤: XML 文档的操作(添加.查找.更新.删除) 添加的 ...

  4. Mybatis实现简单的数据库增删改查操作

    简介: MyBatis 是支持定制化 SQL.存储过程以及高级映射的优秀的持久层框架.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis 可以对配置和原生Ma ...

  5. java增删改查实例源码_Spring Data JPA 实现简单的CRUD增删改查源码案例

    Spring专题 Spring Data JPA 实现简单的CRUD增删改查源码案例 Spring Data JPA旨在简化JPA基础知识库构建和减少需要与数据库进行通信的代码量.第一部分是如何配置H ...

  6. SQL语句对表中数据进行增删改操作[DML]

    文章目录 前言 一.SQL添加数据语句 二.SQL修改数据语句 三.SQL删除数据语句 总结 前言 整理一下SQL语句中增删改查操作的语句用法.先说一下简单的增删改操作,查询的话分类比较多,分开写.. ...

  7. MySQL——数据库的增删改操作

    数据库的增删改操作 数据库的增操作 数据库的增操作主要涉及数据库的增加.数据表的增加.表记录增加以及表字段增加等.数据库的增加非常简单,就是新创建一个数据库:表记录的增加指的就是新增表的数据行,可以是 ...

  8. 第一节: 结合EF的本地缓存属性来介绍【EF增删改操作】的几种形式

    一. 背景 说起EF的增删改操作,相信很多人都会说,有两种方式:① 通过方法操作  和  ② 通过状态控制. 相信你在使用EF进行删除或修改操作的时候,可能会遇到以下错误:" The obj ...

  9. Oracle数据库的增删改操作介绍

    前面的博文介绍了Oracle的简单查询操作,博客地址:http://blog.csdn.net/weixin_36380516/article/details/65935879 这里再对Oracle的 ...

  10. mysql 编辑数据库内容_详解mysql数据库增删改操作

    插入数据 insert into 表名(列名1,列名2,列名3) values(值1,值2,值3); insert into user(user_id,name,age) values(1,'nice ...

最新文章

  1. Kotlin 一个好用的新功能:Parcelize
  2. c语言与硬件连接案例,实际LED硬件连接
  3. 在ubuntn kylin系统eclipse中Java语言helloworld程序
  4. 反击“猫眼电影”网站的反爬虫策略
  5. KVM 虚拟化技术以及 KVM 和云计算的关系
  6. python大数据处理mapreduce_使用python构建基于hadoop的mapreduce日志分析平台
  7. JavaScript深入之执行上下文栈 1
  8. 老人机java游戏模拟器_Java模拟器
  9. AlphaGo算法框架解读
  10. HDU 6080 2017百度之星程序设计大赛 - 资格赛
  11. keras上运行Tensorflow-gpu的艰难历程(最新版,更新中)
  12. Access Token是做什么的
  13. 附解决方案,小程序用户昵称突然变成了“微信用户”,而且头像也显示不了?
  14. 专家把脉智慧产业发展:不能再“傻傻”拼速度
  15. Python 第二十八章 网络初识+五层协议+三次握手四次挥手
  16. python向上取整_python向上取整
  17. javaspringboot面试题,java面试问职业规划
  18. StarUML使用说明
  19. LeetCode 904. 水果成篮
  20. 聊聊Android5.0中的水波纹效果

热门文章

  1. 2020传道(原中国开源圈)开源寄语
  2. 毕设题目:Matlab回归预测
  3. 【图像加密】基于matlab RSA图像加密解密【含Matlab源码 1442期】
  4. 【图像压缩】基本matlab DCT+量化+huffman JPEG图像压缩【含Matlab源码 1217期】
  5. 【气动学】基于matlab GUI弹道仿真【含Matlab源码 1136期】
  6. ai/ml_本月有关AI / ML的令人印象深刻的中等文章
  7. node-red 可视化_可视化与注意-第1部分
  8. 深度学习 个性化推荐_生产中的深度强化学习第2部分:个性化用户通知
  9. lstm预测单词_从零开始理解单词嵌入| LSTM模型|
  10. matlab拟合出余弦曲线,如何用matlab做正弦曲线拟合?