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配置文件

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

配置好的SqlMapConfig.xml

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

 package cn.xiangxu.telecom.login.entity;

 import java.io.Serializable;

 public class Admin implements Serializable {
private Integer id;
private String name;
private String password;
private String gender; public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
} public String toString() {
return "Admin [id=" + id + ", name=" + name + ", password=" + password + ", gender=" + gender + "]";
} }

实体类Admin.java

  2.4 编写 AdminDao 接口  

    接口中方法的要求

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

 package cn.xiangxu.telecom.login.dao;

 import java.util.List;
import java.util.Map; import cn.xiangxu.telecom.login.entity.Admin;
import cn.xiangxu.telecom.login.entity.Admin2; public interface AdminDao {
public void insert(Admin admin); // 插入方法
public List<Admin> findAll(); // 查询所有方法
public Admin findByName(String name); // 限定查询方法
public void modify(Admin admin); // 修改方法
public void deleteByName(String name); // 删除方法 public Map<Object, Object> findByName2(String name); // 查询结果返回Map 的方法
public Admin2 findByName3(String name); // 实体类的属性名和表的字段名不一致的情况
public Admin2 findByName4(String name);
public Admin2 findByName5(String name);
}

编写好的AdminDao.java接口

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

    映射文件需满足的要求

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

 <?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"
"http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd"> <mapper namespace="cn.xiangxu.telecom.login.dao.AdminDao">
<insert id="insert" parameterType="cn.xiangxu.telecom.login.entity.Admin">
<!-- 注意:parameterType的属性值一定要写上类名(基本类型除外) -->
INSERT INTO admin
(name, password, gender)
VALUES(#{name}, #{password}, #{gender})
</insert> <select id="findAll" resultType="cn.xiangxu.telecom.login.entity.Admin">
SELECT * FROM admin
</select> <select id="findByName" parameterType="String" resultType="cn.xiangxu.telecom.login.entity.Admin">
SELECT * FROM admin
WHERE NAME = #{MYNAME}
</select> <update id="modify" parameterType="cn.xiangxu.telecom.login.entity.Admin">
UPDATE admin
SET password=#{password}, gender=#{gender}
WHERE name=#{name}
</update> <delete id="deleteByName" parameterType="String">
DELETE FROM admin
WHERE name=#{deleteName}
</delete> <select id="findByName2" parameterType="String" resultType="Map">
SELECT * FROM admin
WHERE name=#{selectName}
</select> <!-- 如果实体类的属性名和表的字段名不一致,那么不一致的字段将返回null -->
<select id="findByName3" parameterType="String" resultType="cn.xiangxu.telecom.login.entity.Admin2">
SELECT * FROM admin
WHERE name = #{selectName}
</select> <!-- 利用sql的别名解决实体类的属性名和标的字段名不一致的问题 -->
<select id="findByName4" parameterType="String" resultType="cn.xiangxu.telecom.login.entity.Admin2">
SELECT id, name, password word, gender gender1 FROM admin
WHERE name = #{selectName}
</select> <!-- 使用resultMap元素解决实体类的属性名和标的字段名不一致的问题 -->
<resultMap type="cn.xiangxu.telecom.login.entity.Admin2" id="admin2Map">
<result property="word" column="password"></result>
<result property="gender1" column="gender"></result>
</resultMap>
<select id="findByName5" parameterType="String" resultMap="admin2Map">
<!-- 注意:查询的返回值是cn.xiangxu.telecom.login.entity.Admin2类型 -->
SELECT * FROM admin
WHERE name=#{selectName}
</select> </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. ElasticSearch聚合分析API——非常详细,如果要全面了解的话,最好看这个

    转自:http://www.tianyiqingci.com/2016/04/11/esaggsapi/ 前言 说完了ES的索引与检索,接着再介绍一个ES高级功能API – 聚合(Aggregatio ...

  2. hdoj-1276-士兵队列训练问题(队列模拟)

    题意: 新兵蛋子按照两种报数规则报数: 1.1212报数,2出队 2.123123报数,3出队 没报完一轮,检查人数,不大于3,over 略坑,必须每报完一轮检查人数,最初,按照12两种顺序报完检查人 ...

  3. hihocoder 1049 后序遍历树

    #include<cstdio> #include<cstdlib> #include<iostream> #include<cstring> #inc ...

  4. HAWQ 操作笔记

    1.HAWQ 是不支持主键和外建的,官方文档明确给出 Notes Using OIDs in new applications is not recommended. Avoid assuming t ...

  5. 循环比赛日程表(match)(分治)

    [问题描述]     设有N个选手进行循环比赛,其中N=2M,要求每名选手要与其他N-1名选手都赛一次,每名选手每天比赛一次,循环赛共进行N-1天,要求每天没有选手轮空.     输入:M     输 ...

  6. 杂项之rabbitmq

    杂项之rabbitmq 本节内容 rabbitmq简介 AMQP协议 rabbitmq使用 应用举例 rabbitmq简介 介绍rabbitmq之前,先介绍一下AMQP协议,因为rabbitmq就是基 ...

  7. 学习动态性能表(16)--v$rowcache

    学习动态性能表 第16篇--V$ROWCACHE  2007.6.12 本视图显示数据字典缓存(也叫rowcache)的各项统计.每一条记录包含不同类型的数据字典缓存数据统计,注意数据字典缓存有层次差 ...

  8. centos安装yum源

    网易(163)yum源是国内最好的yum源之一 ,无论是速度还是软件版本,都非常的不错,将yum源设置为163yum,可以提升软件包安装和更新的速度,同时避免一些常见软件版本无法找到.具体设置方法如下 ...

  9. 手机访问PC网站自动跳转到手机网站代码(转)

    4G时代,手机网站已经非常普遍了,一般手机网站都有一个二级域名来访问,比如 m.16css.com 如果手机直接访问www.16css.com 就是PC网站,在手机上浏览电脑版网站体验非常不好. 如果 ...

  10. MongoDb学习网站

    http://www.runoob.com/mongodb/mongodb-window-install.html