Java学习之_MyBatis框架02_之解析Mapper.xml

MyBatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注 SQL 本身,而不需要花费精力去处理例如注册驱动、创建connection、创建statement、手动设置参数、结果集检索等jdbc繁杂的过程代码。
Mybatis通过xml注解的方式将要执行的各种statement(statement、preparedStatemnt)配置起来,并通过java对象和statement中的sql进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将结果映射成java对象并返回

那么mybatis到底是怎么样让其sql语句运行起来呢
今天就来解析一下xml文件

Mapper.xml文件 是Mybatis框架缺一不可的配置文件

Mapper.xml 文件

<?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">
<mapper namespace="cn.yhmis.mapper.OrderMapper">
	<!-- 查询所有 -->
	<select id="list" resultType="Order">
		SELECT * FROM tb_order
	</select>
	
	<!-- 删除某条记录    #{}占位符-->
	<delete id="delete" parameterType="int">
		DELETE FROM tb_order WHERE id=#{id}
	</delete>
</mapper> 

分析xml文件配置属性

  • namespace一般指定为当前文件的所在包路径+文件名
    将来在程序中通过[ namespace + id ]定位到执行哪一条SQL语句
  • resultType返回值类型,简单类型(例如:Integer,String,Emp等)
    如果返回集合(List),只需配置集合中的元素类型即可!

开发步骤:

  • 1、导入dom4j工具包
  • 2、定位当前类所在目录,然后得到Mapper.xml映射文件
  • 3、创建解析对象SAXReader
  • 4、获取根元素0
  • 5、获取里面的元素(第一级)
  • 6、遍历数组打印出所有属性
  • 7、标签的内容
package analyse.data;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.Iterator;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

public class Test_xml {
	@org.junit.Test
	public void domaj() throws Exception {
		String id = "list";
		System.out.println("指定id=list的sql语句       获取 SQL语句");
		// 空字符串,获取当前类所在路径
		String dir = this.getClass().getResource("").getPath();
		String fileName = dir + "OrderMapper.xml";

		// 创建一个解析对象
		SAXReader reader = new SAXReader();
		FileInputStream in = new FileInputStream(fileName);
		Document doc = reader.read(in);// xml文件
		System.out.println(doc.asXML());// 打印 xml文件
		// 获取根元素
		Element root = doc.getRootElement();
		// 根元素的内容返回是一个集合
		Iterator<Element> it = root.elementIterator();
		while (it.hasNext()) {// 迭代器遍历
			Element e = (Element) it.next();
			System.out.println(e.getName());
			// System.out.println(e.getStringValue()); //去空格
			// System.out.println(e.getStringValue().trim());
			
			Iterator<Attribute> atts = e.attributeIterator();// 拿到属性值 集合遍历
			while (atts.hasNext()) {
				Attribute at = atts.next();
				// System.out.println(at+"--------");
				if (id.equals(at.getValue())) {
					System.out.println("-------------------");
					System.out.println("SQL语句:" + e.getStringValue().trim());

				}
			}
		}
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值