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 ...
随机推荐
- SFTP服务器使用指南(1)——安装搭建freeSSHd
为什么选择freeSSHd 此软件免费 功能非常丰富且强大,同时支持软件用户.本地系统用户和域用户验证 对各用户选择性开放SFTP,Telnet, Tunneling服务 功能和服务完全不受限制的使用 ...
- MySQL引擎各个引擎对比介绍
1.什么是存储引擎? 存储引擎类似于录制的视频文件,可以转换成不同的格式,如MP4,avi等格式,而存储在我们的磁盘上也会存在于不同类型的文件系统中如:Windows里常见的NTFS,fat32等.存 ...
- kali_linux学习笔记
kali linux ssh登陆: 一.配置SSH参数 修改sshd_config文件,命令为: vi /etc/ssh/sshd_config 将#PasswordAuthentication no ...
- MyBatis嵌套查询column传多个参数描述
代码如下,红色部分为关键代码. 注意parameterType要为java.util.HashMap <resultMap id="baseResultMap" type=& ...
- HIVE-执行distribute by时报错的解决过程---之如何分析hive执行的错误并解决
在执行一条HIVE语句的时候报了以下错误,重新检查了所有步骤,重启所有服务,发现没有问题. 但发现一个有趣的事情 1,select sno,sname,sex,sage,sdept from stud ...
- 12.Selenium+Python案例 -- 今日头条(获取科技栏目的所有新闻标题)
一:具体代码实现 # -*- coding: utf-8 -*-# @Time : 2018/7/26 16:33# @Author : Nancy# @Email : NancyWangDL@163 ...
- 自己写的工具:把Evernote(印象笔记)的笔记导入到博客(Blog)中
Evernote是个强大的工具, 这个伴随了我快4年的工具让我积累好多笔记.但是,如何把evernote(印象笔记)中的笔记发布到博客中呢? 自己空闲时候用python 3写了个工具Evernote2 ...
- shell脚本中常用命令
1 Shell中的特殊符号 1.1 $ 美元符号.用来表示变量的值.如变量NAME的值为Mike,则使用$NAME就可以得到“Mike”这个值. 1.2 ...
- VS编译linux项目生成静态库并在另一个项目中静态链接的方法
VS2017也推出很久了,在单位的时候写linux的服务端程序只能用vim,这让用惯了IDE的我很难受. 加上想自己撸一套linux上的轮子,决定用VS开工远程编写调试linux程序. 在window ...
- Oracle data guard学习
Oracle data guard学习:三思笔记 Data guard 1data guard结构: data guard是一个集合,由一个primary数据库(生产数据库)和一个或多个standby ...