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 ...
随机推荐
- Android自定义组件之ListView
1-ListView简介 在android开发中ListView是比较常用的组件,它以列表的形式展示具体内容,并且能够根据数据的长度自适应显示.一个ListView通常有两个职责. (1)将数据填充到 ...
- Vue中mixin的用法
在项目中我们经常会遇到多个组件调用同一个方法的问题,为了避免每次都在.vue文件中定义并调用,我们可采用vue的mixin的用法: 具体使用如下: 我们需要在main.js中引入mixins文件夹下的 ...
- python--pycharm汉化
一.准备工具 1.pycharm软件 2.汉化包 二.解压汉化包 三.将resources_cn.jar复制到pycharm文件中lib目录下 四.重新打开pycharm
- vue mint ui 手册文档对于墙的恐惧
http://www.cnblogs.com/smallteeth/p/6901610.html npm 安装 推荐使用 npm 的方式安装,它能更好地和 webpack 打包工具配合使用. npm ...
- python_函数中使用*和**
Python在函数中,使用*接收元组,使用**接收键/值对 当要使函数接收元组或字典形式的参数 的时候,有一种特殊的方法,它分别使用*和**前缀 .这种方法在函数需要获取可变数量的参数 的时候特别有用 ...
- CodeForces - 687D: Dividing Kingdom II (二分图&带权并查集)
Long time ago, there was a great kingdom and it was being ruled by The Great Arya and Pari The Great ...
- 深入理解Spring IOC
转载自 http://www.cnblogs.com/xdp-gacl/p/4249939.html 学习过Spring框架的人一定都会听过Spring的IoC(控制反转) .DI(依赖注入)这两个概 ...
- QAbstractSocket::connectToHost() called when already looking up or connecting/connected to
tcpSocket_connect_HBJ->abort();//取消已有连接,重置套接字,tcpSocket_connect_HBJ是QTcpSocket类的对象 就不会报错了.
- UEditor富文本编辑器的图片上传 http://fex.baidu.com/ueditor/#server-deploy
http://fex.baidu.com/ueditor/#server-deploy http://fex.baidu.com/ueditor/#server-path 首先 editor配置文件中 ...
- Python内置函数:strip()
文章转载于:http://www.cnblogs.com/itdyb/p/5046472.html(博主:波比12) 在python API中这样解释strip()函数: