1 Mapper映射器是什么

  是符合映射文件要求的接口

    接口要求

      a. 方法名要与sql的id一致。
      b. 方法的参数类型要与parameterType一致。
      c. 方法的返回类型要与resultType一致。

    映射文件要求

      namespace必须等于接口名(包含包名)

  增加笔记(2017年5月19日09:19:46)

    Mapper映射器的作用:如果我们不使用Mapper映射器,那么我们就必须调用SqlSession的相应方法区执行相应的增、删、改、查操作;如果我们使用了Mapper映射器,那么我们执行增、删、改、查这些操作时使用的就是Mapper映射器中的相应方法;但是要想使用Mapper映射器中的方法必须要有一个Mapper映射器对象,这个对象可以通过SqlSession的getMapper方法得到,例如:AdminDao ad = sqlSession.getMapper(AdminDao.class);当然也有得到Mapper对象的简便方法,那就是使用spring去集成mybatis,通过在spring配置文件中配置MapperScannerConfigurer就可以帮相应的Mapper映射器配置一个bean,以后我们就可以通过spring容器来使用这个bean啦。

2 如何使用Mapper映射器

  2.1 导包

    

  2.2 添加mybatis配置文件

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE configuration PUBLIC "-//ibatis.apache.org//DTD Config 3.0//EN"
  3. "http://ibatis.apache.org/dtd/ibatis-3-config.dtd">
  4. <configuration>
  5. <!-- 和spring整合后,environment配置将被废除 -->
  6. <environments default="environment">
  7. <environment id="environment">
  8. <!-- 使用jdbc事务管理,事务控制由mybatis实现 -->
  9. <transactionManager type="JDBC" />
  10. <!-- 数据库连接池,由mybatis进行管理 -->
  11. <dataSource type="POOLED">
  12. <property name="driver" value="com.mysql.jdbc.Driver" />
  13. <property name="url"
  14. value="jdbc:mysql://127.0.0.1:3306/xiangxu" />
  15. <property name="username" value="root" />
  16. <property name="password" value="182838" />
  17. </dataSource>
  18. </environment>
  19. </environments>
  20.  
  21. <!-- 指定映射文件的位置(即:加载映射文件) -->
  22. <mappers>
  23. <mapper resource="cn/xiangxu/telecom/login/entity/AdminMapper.xml" /> <!-- 注意:包名的 . 全部换成 / -->
  24. </mappers>
  25.  
  26. </configuration>

配置好的SqlMapConfig.xml

  2.3 编写实体类(类的属性名和表的字段名保持一致)

  1. package cn.xiangxu.telecom.login.entity;
  2.  
  3. import java.io.Serializable;
  4.  
  5. public class Admin implements Serializable {
  6. private Integer id;
  7. private String name;
  8. private String password;
  9. private String gender;
  10.  
  11. public Integer getId() {
  12. return id;
  13. }
  14. public void setId(Integer id) {
  15. this.id = id;
  16. }
  17. public String getName() {
  18. return name;
  19. }
  20. public void setName(String name) {
  21. this.name = name;
  22. }
  23. public String getPassword() {
  24. return password;
  25. }
  26. public void setPassword(String password) {
  27. this.password = password;
  28. }
  29. public String getGender() {
  30. return gender;
  31. }
  32. public void setGender(String gender) {
  33. this.gender = gender;
  34. }
  35.  
  36. public String toString() {
  37. return "Admin [id=" + id + ", name=" + name + ", password=" + password + ", gender=" + gender + "]";
  38. }
  39.  
  40. }

实体类Admin.java

  2.4 编写 AdminDao 接口  

    接口中方法的要求

      a. 方法名要与sql的id一致。
      b. 方法的参数类型要与parameterType一致。
      c. 方法的返回类型要与resultType一致。

  1. package cn.xiangxu.telecom.login.dao;
  2.  
  3. import java.util.List;
  4. import java.util.Map;
  5.  
  6. import cn.xiangxu.telecom.login.entity.Admin;
  7. import cn.xiangxu.telecom.login.entity.Admin2;
  8.  
  9. public interface AdminDao {
  10. public void insert(Admin admin); // 插入方法
  11. public List<Admin> findAll(); // 查询所有方法
  12. public Admin findByName(String name); // 限定查询方法
  13. public void modify(Admin admin); // 修改方法
  14. public void deleteByName(String name); // 删除方法
  15.  
  16. public Map<Object, Object> findByName2(String name); // 查询结果返回Map 的方法
  17. public Admin2 findByName3(String name); // 实体类的属性名和表的字段名不一致的情况
  18. public Admin2 findByName4(String name);
  19. public Admin2 findByName5(String name);
  20. }

编写好的AdminDao.java接口

  2.4 添加映射文件并进行编写

    映射文件需满足的要求

      映射文件的 namespace 必须等于接口名(包含包名)

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE mapper PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"
  3. "http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">
  4.  
  5. <mapper namespace="cn.xiangxu.telecom.login.dao.AdminDao">
  6. <insert id="insert" parameterType="cn.xiangxu.telecom.login.entity.Admin">
  7. <!-- 注意:parameterType的属性值一定要写上类名(基本类型除外) -->
  8. INSERT INTO admin
  9. (name, password, gender)
  10. VALUES(#{name}, #{password}, #{gender})
  11. </insert>
  12.  
  13. <select id="findAll" resultType="cn.xiangxu.telecom.login.entity.Admin">
  14. SELECT * FROM admin
  15. </select>
  16.  
  17. <select id="findByName" parameterType="String" resultType="cn.xiangxu.telecom.login.entity.Admin">
  18. SELECT * FROM admin
  19. WHERE NAME = #{MYNAME}
  20. </select>
  21.  
  22. <update id="modify" parameterType="cn.xiangxu.telecom.login.entity.Admin">
  23. UPDATE admin
  24. SET password=#{password}, gender=#{gender}
  25. WHERE name=#{name}
  26. </update>
  27.  
  28. <delete id="deleteByName" parameterType="String">
  29. DELETE FROM admin
  30. WHERE name=#{deleteName}
  31. </delete>
  32.  
  33. <select id="findByName2" parameterType="String" resultType="Map">
  34. SELECT * FROM admin
  35. WHERE name=#{selectName}
  36. </select>
  37.  
  38. <!-- 如果实体类的属性名和表的字段名不一致,那么不一致的字段将返回null -->
  39. <select id="findByName3" parameterType="String" resultType="cn.xiangxu.telecom.login.entity.Admin2">
  40. SELECT * FROM admin
  41. WHERE name = #{selectName}
  42. </select>
  43.  
  44. <!-- 利用sql的别名解决实体类的属性名和标的字段名不一致的问题 -->
  45. <select id="findByName4" parameterType="String" resultType="cn.xiangxu.telecom.login.entity.Admin2">
  46. SELECT id, name, password word, gender gender1 FROM admin
  47. WHERE name = #{selectName}
  48. </select>
  49.  
  50. <!-- 使用resultMap元素解决实体类的属性名和标的字段名不一致的问题 -->
  51. <resultMap type="cn.xiangxu.telecom.login.entity.Admin2" id="admin2Map">
  52. <result property="word" column="password"></result>
  53. <result property="gender1" column="gender"></result>
  54. </resultMap>
  55. <select id="findByName5" parameterType="String" resultMap="admin2Map">
  56. <!-- 注意:查询的返回值是cn.xiangxu.telecom.login.entity.Admin2类型 -->
  57. SELECT * FROM admin
  58. WHERE name=#{selectName}
  59. </select>
  60.  
  61. </mapper>

配置好的AdminMapper.xml

本博客源代码地址:点击前往

MyBatis02 MyBatis基础知识之Mapper映射器的更多相关文章

  1. Spring集成MyBatis的使用-使用Mapper映射器

    Spring集成MyBatis使用 前面复习MyBatis时,发现在测试时,需要手动创建sqlSessionFactory,Spring将帮忙自动创建sqlSessionFactory,并且将自动扫描 ...

  2. MyBatis(3)-- Mapper映射器

    一.select元素 1.select元素的应用 id为Mapper的全限定名,联合称为一个唯一的标识 paremeterType标识这条SQL接收的参数类型 resultType标识这条SQL返回的 ...

  3. MyBatis数据库连接的基本使用-补充Mapper映射器

    补充 Mapper映射器的使用: Mapper映射器,google添加.Mapper映射器是将mapper.xml中配置的sql id,parameterType和resultMap按照规则一一映射到 ...

  4. Java框架之MyBatis 06-全局配置-mapper映射-分步查询

    MyBatis MyBatis是Apache的一个开源项目iBatis, iBatis一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架. iBatis  提供的持 ...

  5. mybatis基础知识

    一.什么是Mybatis 这里借用官网的一句话介绍什么是mybatis:MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC ...

  6. Mybatis基于XML配置SQL映射器(二)

    Mybatis之XML注解 之前已经讲到通过 mybatis-generator 生成mapper映射接口和相关的映射配置文件: 下面我们将详细的讲解具体内容 首先我们新建映射接口文档  sysUse ...

  7. Mapper映射器

    在两个独立的对象之间建立通信的对象 需要在两个必须相互隔离的子系统间建立通信. 可能是因为无法修改已有的子系统,或者不愿意在两者之间建立依赖关系.甚至不愿意这两个子系统与另一个部件间建立依赖关系. 运 ...

  8. 小峰mybatis(5)mybatis使用注解配置sql映射器--动态sql

    一.使用注解配置映射器 动态sql: 用的并不是很多,了解下: Student.java 实体bean: package com.cy.model; public class Student{ pri ...

  9. Mybatis笔记六:Mybatis中SqlSessionFactoryBuilder/SqlSessionFactory/SqlSession/映射器实例的作用域(Scope)和生命周期

    SqlSessionFactoryBuilder 这个类可以被实例化.使用和丢弃,一旦创建了 SqlSessionFactory,就不再需要它了.因此 SqlSessionFactoryBuilder ...

随机推荐

  1. Android自定义组件之ListView

    1-ListView简介 在android开发中ListView是比较常用的组件,它以列表的形式展示具体内容,并且能够根据数据的长度自适应显示.一个ListView通常有两个职责. (1)将数据填充到 ...

  2. Vue中mixin的用法

    在项目中我们经常会遇到多个组件调用同一个方法的问题,为了避免每次都在.vue文件中定义并调用,我们可采用vue的mixin的用法: 具体使用如下: 我们需要在main.js中引入mixins文件夹下的 ...

  3. python--pycharm汉化

    一.准备工具 1.pycharm软件 2.汉化包 二.解压汉化包 三.将resources_cn.jar复制到pycharm文件中lib目录下 四.重新打开pycharm

  4. vue mint ui 手册文档对于墙的恐惧

    http://www.cnblogs.com/smallteeth/p/6901610.html npm 安装 推荐使用 npm 的方式安装,它能更好地和 webpack 打包工具配合使用. npm ...

  5. python_函数中使用*和**

    Python在函数中,使用*接收元组,使用**接收键/值对 当要使函数接收元组或字典形式的参数 的时候,有一种特殊的方法,它分别使用*和**前缀 .这种方法在函数需要获取可变数量的参数 的时候特别有用 ...

  6. CodeForces - 687D: Dividing Kingdom II (二分图&带权并查集)

    Long time ago, there was a great kingdom and it was being ruled by The Great Arya and Pari The Great ...

  7. 深入理解Spring IOC

    转载自 http://www.cnblogs.com/xdp-gacl/p/4249939.html 学习过Spring框架的人一定都会听过Spring的IoC(控制反转) .DI(依赖注入)这两个概 ...

  8. QAbstractSocket::connectToHost() called when already looking up or connecting/connected to

    tcpSocket_connect_HBJ->abort();//取消已有连接,重置套接字,tcpSocket_connect_HBJ是QTcpSocket类的对象 就不会报错了.

  9. UEditor富文本编辑器的图片上传 http://fex.baidu.com/ueditor/#server-deploy

    http://fex.baidu.com/ueditor/#server-deploy http://fex.baidu.com/ueditor/#server-path 首先 editor配置文件中 ...

  10. Python内置函数:strip()

    文章转载于:http://www.cnblogs.com/itdyb/p/5046472.html(博主:波比12) 在python API中这样解释strip()函数: