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 ...
随机推荐
- ElasticSearch_学习_00_资源帖
一.官方资料 1.Elasticsearch 权威指南(中文版) 二.精选资料 1. 全文搜索引擎 Elasticsearch 入门教程-阮一峰 2. 三.参考资料
- css Flex布局(一)
网页布局(layout) 布局的传统解决方案,基于盒状模型,依赖 display属性 + position属性 + float属性.它对于那些特殊布局非常不方便,比如,垂直居中就不容易实现. 6个属性 ...
- 在winform中给GridView加checkbox在按钮点击的时候获取选中的checkbox
dataGridView绑定后 bool[] mark = new bool[this.dataGridView1.Rows.Count]; ; i < mark.Length; i++) { ...
- BEC listen and translation exercise 12
More than 220 cities now have air quality monitoring systems and 42 others will have systems in plac ...
- mysql字段设计坑
对varchar, char类型的字段进行排序 把价格设计成decimal的时候,要注意 "有效位数", "小数位数", 不然会发现,插入的时候最多达到上限
- Android Volley完全解析(四),带你从源码的角度理解Volley
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/17656437 经过前三篇文章的学习,Volley的用法我们已经掌握的差不多了,但是 ...
- BZOJ2120:数颜色(分块版)
浅谈分块:https://www.cnblogs.com/AKMer/p/10369816.html 题目传送门:https://lydsy.com/JudgeOnline/problem.php?i ...
- 在ARM模式下捕获VM并创建新VM
在ASM模式下,可以通过Manage Portal上捕获VM的Image,并创建新的VM.在ARM模式下,在Portal上目前还没有这个功能,要做VM镜像的捕获和创建新的VM需要用powershell ...
- QtCreator开启-O编译优化的方式
首先,编译优化必须是在Release模式下进行,保证程序没有任何bug的条件下进行执行.编译优化能极大提升程序的运行效率,级别越高速度越快,但是对代码健壮性要求也越高! 选择编译release模式,在 ...
- 蓝桥杯 算法训练 ALGO-125 王、后传说
算法训练 王.后传说 时间限制:1.0s 内存限制:256.0MB 问题描述 地球人都知道,在国际象棋中,后如同太阳,光芒四射,威风八面,它能控制横.坚.斜线位置. 看过清宫戏的中国人都知道, ...