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_学习_00_资源帖

    一.官方资料 1.Elasticsearch 权威指南(中文版) 二.精选资料 1. 全文搜索引擎 Elasticsearch 入门教程-阮一峰 2. 三.参考资料

  2. css Flex布局(一)

    网页布局(layout) 布局的传统解决方案,基于盒状模型,依赖 display属性 + position属性 + float属性.它对于那些特殊布局非常不方便,比如,垂直居中就不容易实现. 6个属性 ...

  3. 在winform中给GridView加checkbox在按钮点击的时候获取选中的checkbox

    dataGridView绑定后 bool[] mark = new bool[this.dataGridView1.Rows.Count]; ; i < mark.Length; i++) { ...

  4. BEC listen and translation exercise 12

    More than 220 cities now have air quality monitoring systems and 42 others will have systems in plac ...

  5. mysql字段设计坑

    对varchar, char类型的字段进行排序 把价格设计成decimal的时候,要注意 "有效位数", "小数位数", 不然会发现,插入的时候最多达到上限

  6. Android Volley完全解析(四),带你从源码的角度理解Volley

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/17656437 经过前三篇文章的学习,Volley的用法我们已经掌握的差不多了,但是 ...

  7. BZOJ2120:数颜色(分块版)

    浅谈分块:https://www.cnblogs.com/AKMer/p/10369816.html 题目传送门:https://lydsy.com/JudgeOnline/problem.php?i ...

  8. 在ARM模式下捕获VM并创建新VM

    在ASM模式下,可以通过Manage Portal上捕获VM的Image,并创建新的VM.在ARM模式下,在Portal上目前还没有这个功能,要做VM镜像的捕获和创建新的VM需要用powershell ...

  9. QtCreator开启-O编译优化的方式

    首先,编译优化必须是在Release模式下进行,保证程序没有任何bug的条件下进行执行.编译优化能极大提升程序的运行效率,级别越高速度越快,但是对代码健壮性要求也越高! 选择编译release模式,在 ...

  10. 蓝桥杯 算法训练 ALGO-125 王、后传说

    算法训练 王.后传说   时间限制:1.0s   内存限制:256.0MB 问题描述 地球人都知道,在国际象棋中,后如同太阳,光芒四射,威风八面,它能控制横.坚.斜线位置. 看过清宫戏的中国人都知道, ...