https://blog.csdn.net/phenomenonstell/article/details/79033144

从mybatis3.4.0开始加入了@Mapper注解,目的就是为了不再写mapper映射文件(那个xml写的是真的蛋疼。。。)。很恶心的一个事实是源码中并没有对于这个注解的详细解释
现在我们通过一个简易的maven项目去了解@Mapper注解的使用方式
完整项目请访问我的github项目地址下载
1、构建一个maven的web项目,目录结构如下:

2、导入相应的依赖

<dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.4.5</version></dependency><dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>1.3.1</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.0.2.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-tx</artifactId><version>5.0.2.RELEASE</version></dependency><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-core</artifactId><version>2.7</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.6</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>5.0.2.RELEASE</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>6.0.6</version></dependency>

3、代码

//UserDAO
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;import entity.User;/*** 添加了@Mapper注解之后这个接口在编译时会生成相应的实现类* * 需要注意的是:这个接口中不可以定义同名的方法,因为会生成相同的id* 也就是说这个接口是不支持重载的*/
@Mapper
public interface UserDAO {@Select("select * from user where name = #{name}")public User find(String name);@Select("select * from user where name = #{name} and pwd = #{pwd}")/*** 对于多个参数来说,每个参数之前都要加上@Param注解,* 要不然会找不到对应的参数进而报错*/public User login(@Param("name")String name, @Param("pwd")String pwd);
}

测试类代码:

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;import dao.UserDAO;
import entity.User;public class TestCase {@Testpublic void testMapper() {ApplicationContext ac = new ClassPathXmlApplicationContext("spring-mybatis.xml");UserDAO dao = ac.getBean(UserDAO.class);User u1 = dao.find("hehe");User u2 = dao.login("hehe", "123");System.out.println(u1.getName().equals(u2.getName()));}
}

测试结果:

转载于:https://www.cnblogs.com/arrows/p/10531808.html

MyBatis中的@Mapper注解及配套注解使用详解相关推荐

  1. mysql resulttype map_Mybatis中的resultType和resultMap查询操作实例详解

    resultType和resultMap只能有一个成立,resultType是直接表示返回类型的,而resultMap则是对外部ResultMap的引用,resultMap解决复杂查询是的映射问题.比 ...

  2. async spring 默认线程池_Spring boot注解@Async线程池实例详解

    这篇文章主要介绍了Spring boot注解@Async线程池实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 从Spring3开始提供了@A ...

  3. Spring基于注解TestContext 测试框架使用详解

    原创整理不易,转载请注明出处:Spring基于注解TestContext 测试框架使用详解 代码下载地址:http://www.zuidaima.com/share/1775574182939648. ...

  4. java中属性文件读取案例_java相关:Spring中属性文件properties的读取与使用详解

    java相关:Spring中属性文件properties的读取与使用详解 发布于 2020-6-3| 复制链接 摘记: Spring中属性文件properties的读取与使用详解实际项目中,通常将一些 ...

  5. python定义数组并赋值_python中的数组赋值与拷贝的区别详解

    具体的注解我已经写在了程序里面:通俗的解释了python里面的浅拷贝与深拷贝的不同,请看程序. # -*- coding: utf-8 -*- import numpy as np import co ...

  6. 对python3中pathlib库的Path类的使用详解

    原文连接   https://www.jb51.net/article/148789.htm 1.调用库 ? 1 from pathlib import 2.创建Path对象 ? 1 2 3 4 5 ...

  7. JAVA中希尔排序去的讲解_java 中基本算法之希尔排序的实例详解

    java 中基本算法之希尔排序的实例详解 希尔排序(Shell Sort)是插入排序的一种.也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本.希尔排序是非稳定排序算法.该方法因DL.Shel ...

  8. python3库_对python3中pathlib库的Path类的使用详解

    用了很久的os.path,今天发现竟然还有这么好用的库,记录下来以便使用. 1.调用库 from pathlib import 2.创建Path对象 p = Path('D:/python/1.py' ...

  9. python中requests库的用途-python中requests库session对象的妙用详解

    在进行接口测试的时候,我们会调用多个接口发出多个请求,在这些请求中有时候需要保持一些共用的数据,例如cookies信息. 妙用1 requests库的session对象能够帮我们跨请求保持某些参数,也 ...

  10. Java中print、printf、println的区别 详解

    Java中print.printf.println的区别详解 printf主要是继承了C语言的printf的一些特性,可以进行格式化输出 print就是一般的标准输出,但是不换行 println和pr ...

最新文章

  1. MongoDB的备份(mongodump)与恢复(mongorestore)
  2. 第五章 Spring进阶-注解方式实现AOP(1)
  3. 数据结构之基于顺序表的插入排序
  4. python基础15 ---面像对象的程序设计
  5. 使用Docker 实现微服务并搭建博客,一文全掌握
  6. mysql示例employees数据库
  7. 百度Apollo发布智能驾驶商业化解决方案
  8. 虚拟机VMware安装学习过程中遇到的几个问题
  9. python爬取下载有妖气漫画网站免费漫画
  10. monk_notebook (交际德语教程 第二版 学生用书)
  11. Jekyll 语句语法、功能的实现方法和结构介绍小手册
  12. MapReduce强化实验
  13. PHP 手机验证码登录
  14. 快速上手ndk开发! Mac/Win下配置和使用!(2018.4重编版)
  15. 禅修内观 | 一个璀璨的思想成就
  16. 光追(光线追踪)和 DLSS是什么?
  17. 2019-08-01软件工程总结
  18. 解决 No converter found capable of converting from type [java.lang.String] to type ... 的问题
  19. U盘数据不见了怎么恢复?
  20. 新唐芯片学习笔记——GPIO

热门文章

  1. 【转】分享:c#和javascript函数的相互调用(ObjectForScripting 的类必须对 COM 可见。请确认该对象是公共的,或考虑向您的类添加 ComVisible 属性。)...
  2. .NET精品文章系列(二)
  3. KM(知识管理)与SharePoint Portal
  4. 汇编中的BP与SS组合时,BP里面放的到底是SS中的一个基地址的指针还是基地址本身?
  5. dojo 官方翻译 dojo/_base/array 版本1.10
  6. 发文越多,影响力会越大吗?
  7. 树 - 定义和基本概念
  8. 关于Git中的一些常用的命令
  9. 教您怎么从spring 官网下载参考文档
  10. CentOs6.5下安装vim7.4