MyBatis02 MyBatis基础知识之Mapper映射器
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映射器的更多相关文章
- Spring集成MyBatis的使用-使用Mapper映射器
Spring集成MyBatis使用 前面复习MyBatis时,发现在测试时,需要手动创建sqlSessionFactory,Spring将帮忙自动创建sqlSessionFactory,并且将自动扫描 ...
- MyBatis(3)-- Mapper映射器
一.select元素 1.select元素的应用 id为Mapper的全限定名,联合称为一个唯一的标识 paremeterType标识这条SQL接收的参数类型 resultType标识这条SQL返回的 ...
- MyBatis数据库连接的基本使用-补充Mapper映射器
补充 Mapper映射器的使用: Mapper映射器,google添加.Mapper映射器是将mapper.xml中配置的sql id,parameterType和resultMap按照规则一一映射到 ...
- Java框架之MyBatis 06-全局配置-mapper映射-分步查询
MyBatis MyBatis是Apache的一个开源项目iBatis, iBatis一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架. iBatis 提供的持 ...
- mybatis基础知识
一.什么是Mybatis 这里借用官网的一句话介绍什么是mybatis:MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC ...
- Mybatis基于XML配置SQL映射器(二)
Mybatis之XML注解 之前已经讲到通过 mybatis-generator 生成mapper映射接口和相关的映射配置文件: 下面我们将详细的讲解具体内容 首先我们新建映射接口文档 sysUse ...
- Mapper映射器
在两个独立的对象之间建立通信的对象 需要在两个必须相互隔离的子系统间建立通信. 可能是因为无法修改已有的子系统,或者不愿意在两者之间建立依赖关系.甚至不愿意这两个子系统与另一个部件间建立依赖关系. 运 ...
- 小峰mybatis(5)mybatis使用注解配置sql映射器--动态sql
一.使用注解配置映射器 动态sql: 用的并不是很多,了解下: Student.java 实体bean: package com.cy.model; public class Student{ pri ...
- Mybatis笔记六:Mybatis中SqlSessionFactoryBuilder/SqlSessionFactory/SqlSession/映射器实例的作用域(Scope)和生命周期
SqlSessionFactoryBuilder 这个类可以被实例化.使用和丢弃,一旦创建了 SqlSessionFactory,就不再需要它了.因此 SqlSessionFactoryBuilder ...
随机推荐
- LeetCode OJ:Minimum Size Subarray Sum(最小子数组的和)
Given an array of n positive integers and a positive integer s, find the minimal length of a subarra ...
- 面试题13:在O(1)时间删除链表结点
题目:给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该结点. 链表结点与函数的定义如下: struct ListNode { int val; ListNode* next; }; ...
- php程序员应该掌握的技能包
作为一名web开发者来说,不论是php还是java web,就我目前掌握的知识来说,个人认为应该掌握以下几个方面的内容 1 基础的编程语言,这个好像是废话 2 软件设计的思想,如面向对象.mvc.各种 ...
- linux monitor and maintanence
@cacti 1.install epel extends source 2.install lamp use yum method yum install -y httpd php php-mysq ...
- Oracle hash分区的秘密
转自:http://www.hellodb.net/2009/12/hash_partition.html 在面试时经常会问一个问题,请列举出hash在数据库内部的应用,hash的原理虽然简单,但是它 ...
- 增加虚拟机ubuntu的硬盘
20150526更新验证日记: (1)首先在虚拟机中增加ubuntu的硬盘大小. (2)在ubuntu中使用Gparted软件对新的空间进行分配(傻瓜式) (3)不能直接将磁盘挂载到home下,只能先 ...
- 首次db查询时延迟明显高于后面几次。
1.如果排查到时db相关的问题的话,一般都是连接池的配置问题. 在配置好连接池时一定要注意对连接也进行初始化配置,否则可能出现连接池初始化了,但是连接并没有初始化,这样在第一次查询的时候可能会出现较大 ...
- 配置文件的继承与覆盖: Machine.config / Web.config /子目录 Web.config
C#有三种级别的配置文件: 机器级别 machine.config 在 C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\machine.c ...
- 蓝桥杯 历届试题 PREV-1 核桃的数量
历届试题 核桃的数量 时间限制:1.0s 内存限制:256.0MB 问题描述 小张是软件项目经理,他带领3个开发组.工期紧,今天都在加班呢.为鼓舞士气,小张打算给每个组发一袋核桃(据传言能补脑 ...
- Windows SID理解
Windows安全性要依赖于几个基本元素.:访问令牌.SID.安全描述符.访问控制列表.密码. 访问令牌:访问令牌在本质上定义了两 上“P”:Permissions(权限)和Privilege(特权) ...