映射器是MyBatis中最复杂、最核心的组件,本文先介绍映射器的引入方法,其他的在我日后会再做分析和总结。

之前的文章中有提到过,映射器是由一个接口和一个XML配置文件组成,XML文件中需要定义一个命名空间namespace,它的值就是接口对应的全路径。

如我定义一个根据ID查询产品的映射器,需要以下两步:

第一步:创建一个接口,定义查询方法

 public interface ProductMapper {
//查询接口
public Product selectById(String id);
}

第二步:创建对应的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="com.daily.dao.ProductMapper">
<resultMap id="BaseResultMap" type="com.daily.pojo.Product">
<id column="id" jdbcType="VARCHAR" property="id" />
<result column="product_name" jdbcType="VARCHAR" property="productName" />
<result column="product_price" jdbcType="VARCHAR" property="productPrice" />
<result column="product_type" jdbcType="VARCHAR" property="productType" />
</resultMap> <!-- MyBatis自动映射功能:
1、首先通过接口中的方法名与sql查询语句进行关联
2、当查询到的字段与pojo中的字段完全对应的时候,就会将查询结果自动映射成一个pojo对象
3、如果数据库字段和类字段不一致,则需要进行转换,所以一般设计数据库的时候,字段采用驼峰式
-->
<select id="selectById" parameterType="String" resultType="product">
SELECT * FROM product p WHERE p.id = #{id,jdbcType=VARCHAR}
</select>
</mapper>

在上面的配置中,mapper中有一个namespace="com.daily.dao.ProductMapper"配置,这就是命名空间,其值是接口的全路径,当然这个全路径也可以在别名中定义,然后直接在这里引用。

定义好了一个映射器之后就可以在mybatis-config.xml中引入了,引入方法有以下几种:

1、用文件路径引入

<mappers>
<mapper resource="com/daily/mapper/UserMapper.xml" />
<mapper resource="com/daily/mapper/ProductMapper.xml" />
<mapper resource="com/daily/mapper/BlogMapper.xml" />
</mappers>

2、用包名引入

这种引入方式相当于批量引入一个包下的所有映射器

<mappers>
<package name="com.daily.mapper"/>
</mappers>

3、用类注册引入

<mappers>
<mapper class="com.daily.mapper.UserMapper" />
<mapper class="com.daily.mapper.ProductMapper" />
<mapper class="com.daily.mapper.BlogMapper" />
</mappers>

4、使用URL方式引入

<mappers>
<mapper url="xml文件访问URL" />
</mappers>

根据实际情况选择合适的引入方式即可。

以上就是映射器引入方式的介绍。

MyBatis配置文件(九)--mappers映射器的更多相关文章

  1. IDEA Mybatis 找不到映射器xml文件

    用IDEA新建了一个测试MyBatis工程,工程目录如下 其中config是MyBatis的配置文件,内容如下 <?xml version="1.0" encoding=&q ...

  2. mybatis精讲(五)--映射器组件

    目录 前言 标签 select insert|update|delete 参数 resultMap cache 自定义缓存 # 加入战队 微信公众号 前言 映射器之前我们已经提到了,是mybatis特 ...

  3. Could not find resource——mybatis 找不到映射器xml文件

    今天用IDEA写Mybatis的时候,测试报了如图所示的错,恶心死我了,后来解决了,总结一下,防止下回跳坑,当然,也是做一个分享,如果有朋友遇到这个错,希望有所帮助 Error parsing SQL ...

  4. mybatis 找不到映射器xml文件 (idea)

    原因是: idea不会编译src的java目录的xml文件 所以解决思路就是:将IDEA maven项目中src源代码下的xml等资源文件编译进classes文件夹 具体操作方法就是:配置maven的 ...

  5. 深入浅出mybatis之映射器

    目录 概述 XML映射器 定义xml映射器 配置xml映射器 使用xml映射器 接口映射器 定义接口映射器 配置接口映射器 使用接口映射器 总结与对比 概述 映射器是MyBatis中最核心的组件之一, ...

  6. MyBatis学习总结(二)——MyBatis核心配置文件与输入输出映射

    在上一章中我们学习了<MyBatis学习总结(一)——ORM概要与MyBatis快速起步>,这一章主要是介绍MyBatis核心配置文件.使用接口+XML实现完整数据访问.输入参数映射与输出 ...

  7. mybatis学习(一)-------XML 映射配置文件详解

    XML 映射配置文件 MyBatis 的配置文件包含了会深深影响 MyBatis 行为的设置(settings)和属性(properties)信息.文档的顶层结构如下: configuration 配 ...

  8. Java Persistence with MyBatis 3(中文版) 第三章 使用XML配置SQL映射器

    关系型数据库和SQL是经受时间考验和验证的数据存储机制.和其他的ORM 框架如Hibernate不同,MyBatis鼓励开发者可以直接使用数据库,而不是将其对开发者隐藏,因为这样可以充分发挥数据库服务 ...

  9. Mybatis映射器接口代理对象的方式 运行过程

    查询一张表的所有数据. 环境: 使用工具IntelliJ IDEA 2018.2版本. 创建Maven工程不用骨架 1.pom.xml <?xml version="1.0" ...

随机推荐

  1. 牛客多校第六场 J Upgrading Technology dp

    题意: 有n个技能,一开始都是0级,第i个技能从j-1级升到j级,花费$c_{i,j}$,但是花费不一定是正的 所有的技能升到j级时,奖励$d_j$但是奖励也不一定是正的 题解: 用sum[i][j] ...

  2. skyline中大数据量的三维场景刷新速度问题

    我们做了一个的类似于TE Pro的桌面系统来代替TE Pro演示我们的大三维场景.我们的三维场景包括100平方公里的全要素场景,有建筑物,地面.小品.部件.植被等.在系统运行后,三维场景刷不起来,速 ...

  3. 如何在VUE项目中使用SCSS

    首先要了解什么是CSS 预处理器? SCSS是一种CSS预处理语言 定义了一种新的专门的编程语言,编译后形成正常的css文件,为css增加一些编程特性,无需考虑浏览器的兼容性(完全兼容css3),让c ...

  4. 面试系列15 如何保证Redis的高并发和高可用

    就是如果你用redis缓存技术的话,肯定要考虑如何用redis来加多台机器,保证redis是高并发的,还有就是如何让Redis保证自己不是挂掉以后就直接死掉了,redis高可用 我这里会选用我之前讲解 ...

  5. vue表格之:summary-method="getSummaries"与show-summary(列求和)

    //表格列求和 <el-table :summary-method="getSummaries" show-summary></el-table> getS ...

  6. SF Symbols 使用

    伴随着WWDC 2019 的举办,对于程序员而言 ,无疑SwiftUI 推出 是比较令人兴奋的一件事情, 其中在SwiftUI 使用之中, 我们经常使用以下系统图片 Image(systemName: ...

  7. spring:AOP面向切面编程(注解)03

    使用注解写aop时最好使用环绕通知写 切面类: /** * 用于记录日志的工具类,它里面提供了公共的代码 */ @Component("logger") @Aspect //表示当 ...

  8. soj97 旅行

    题意:给你一棵n个点的树.m个操作,op 1:在点i上建立银行.op 2:询问从点x开始可以经过至少一个银行走到的点中编号第二大的点. n,m<=1e5. 标程: #include<bit ...

  9. odoo 在更多下面直接调用方法

    <record id="action_get_qc_result" model="ir.actions.server"> <field nam ...

  10. 不同浏览器Cookie有效期问题

    昨天项目迁移了测试服务器,之后奇怪的问题出现了. IE.谷歌无法登陆,火狐可以登陆. 这个项目先后部署过两个测试服务器.一台正式服务器,登陆都是正常的,这次却突然出现这种奇怪的问题,很是纠结. 通过查 ...