20201118+袁鑫

学习日志

知识总结

解析xml文件的四种方式:
  1. DOM(Document Object Model)实现
    优点:
    1)允许应用程序对数据和结构做出更改。
    2)访问是双向的,可以在任何时候在树中、上、下导航获取、操作任意部分的数据。
    缺点:
    解析XML文档的需要加载整个文档来构造层次结构,消耗内存资源大。
    应用范围:
    遍历能力强,常应用于XML文档需要频繁改变的服务中。

    Java使用步骤:
    创建一个DocumentBuilderFactory对象。
    创建一个DocumentBuilder对象。
    通过DocumentBuilder的parse方法加载XML到当前工程目录下。
    通过getElementsByTagName方法获取所有XML所有节点的集合。
    遍历所有节点。
    通过item方法获取某个节点的属性。
    通过getNodeName和getNodeValue方法获取属性名和属性值。
    通过getChildNodes方法获取子节点,并遍历所有子节点。
    通过getNodeName和getTextContent方法获取子节点名称和子节点值。

  2. DOM4J(Document Object Model for Java)实现(需要引入dom4j-1.6.1.jar)

    优点:

    性能很好
    大量使用Java集合类,开发简便,同时也提供了一些提高性能的代替方法。
    支持XPath。
    缺点:
    API比较复杂。
    步骤:
    1.创建SAXReader的对象reader
    2.通过reader对象的read()方法加载books.xml文件,获取document对象
    3.通过document对象获取根节点bookstore
    4.通过element对象的elementIterator获取迭代器
    5.遍历迭代器,获取根节点中的信息
    6.获取book的属性名和属性值
    7.通过book对象的elementIterator获取节点元素迭代器
    8.遍历迭代器,获取子节点中的信息
    9.获取节点名和节点值

  3. JDOM(需要引入jdom.jar包)实现
    特征:
    1、仅使用具体类,而不使用接口。
    2、API大量使用了Collections类。
    步骤:
    1.创建一个SAXBuilder的对象
    2.创建一个输入流,将xml文件加载到输入流中
    3.通过saxBuilder的build方法,将输入流加载到saxBuilder中
    4.通过document对象获取xml文件的根节点
    5.获取根节点下的子节点的List集合。

  4. SAX(Simple API for XML)实现
    优点:
    1)不需要等待所有的数据被处理,解析就可以开始。
    2)只在读取数据时检查数据,不需要保存在内存中。
    3) 可以在某一个条件满足时停止解析,不必要解析整个文档。
    4) 效率和性能较高,能解析大于系统内存的文档。
    缺点:
    1)解析逻辑复杂,需要应用层自己负责逻辑处理,文档越复杂程序越复杂。
    2)单向导航,无法定位文档层次,很难同时访问同一文档的不同部分数据,不支持XPath.

    解析步骤:
    获取一个SAXParserFactory的实例。
    通过factory获取SAXParser实例。
    创建一个handler对象。
    通过parser的parse()方法来解析XML。

Mybatis

image-20201118213945347

总结:我们不难看出无论是创建代理对象还是直接使用提供的CRUD方法,其本质都是得到Connection对象

执行对应的sql语句,最终返回封装结果集。只是注解方式和xml方式在传递sql语句和返回值类 型的方式上有区别而已。

mybatis 环境搭建步骤
  1. 创建 maven 工程
  2. 导入相关依赖
  3. 编写代码(实体类和持久层接口)
  4. 编写映射配置文件
  5. 编写 SqlMapConfig.xml
  6. 编写测试类
基于代理 Dao 实现 CRUD 操作

在持久层接口中添加 findById 方法

/**
* 根据id查询
* @param id id
* @return
*/
UserInfoModel findById(String id);

在用户的映射配置文件中配置
<!-- 根据 id 查询 -->
<select id="findById"   resultType="com.itlaobing.model.UserInfoModel"parameterType="String">
    select * from userinfo where id = #{id}
</select>

resultType 属性:用于指定结果集的类型。

parameterType 属性:用于指定传入参数的类型

{}:它代表占位符,相当于原来 jdbc 部分所学的 ? ,都是用于执行语句时替换实际的数据。具体 的数据是由#{}里面的内容决定的。#{}中是变量

如果此方法只有一个参数,占位符可以写成#{value},也可以写成变量名#{id}

#{}与${}的区别

#{}表示一个占位符号 通过#{}可以实现 preparedStatement 向占位符 ? 中设置值,自动进行 java 类型和 jdbc 类型转 换,#{}可以有效防止 sql 注入。 #{}可以接收基本类型值或 pojo 属性值。 如果 parameterType 传输单个基本类型值,#{}括号中可以是 value 或其它名称。

\({}表示拼接 sql 串 通过\){}可以将 parameterType 传入的内容拼接在 sql 中且不进行 jdbc 类型转换, \({}可以接收基 本类型值或 pojo 属性值,如果 parameterType 传输单个基本类型值,\){}括号中只能是 value。

心得:

今天mybatis学习的比昨天要简单一些 基本上都是怎么使用,理解还是很好理解的。

标签

评论

© 2021 成都云创动力科技有限公司 蜀ICP备20006351号-1