广告
返回顶部
首页 > 资讯 > 后端开发 > Python >MyBatis映射器mapper快速入门教程
  • 889
分享到

MyBatis映射器mapper快速入门教程

2024-04-02 19:04:59 889人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录通用mapper简介通用mapper快速入门(文档)添加依赖和spring集成XML 配置1.使用 MapperScannerConfigurer2.XML配置使用 Config

通用mapper简介

通用 Mapper 是一个可以实现任意 mybatis 通用方法的框架项目提供了常规的增删改查操作以及Example相关的单表操作,与mybatisplus相似,对mybatis制作增强不做修改。为什么要用通用mapper?我们这里列举一下原生Mybatis的痛点:

1、mapper.xml文件里有大量的sql,当数据库表字段变动,配置文件就要修改

2、需要自己实现sql分页,select * from table where . . . limit 1,3

自己手写分页,除了传参page、pageSize,还需要返回条目总数count。

3、数据库可移植性差:如果项目更换数据库,比如oracle-->Mysql,mapper.xml中的

sql要重新写,因为Oracle的PLSQL 和mysql 支持的函数是不同的。

4、生成的代码量过大。

5、批量操作,批量插入,批量更新,需要自写。而这些,通过通用mapper就可以很轻松的解决了。

通用mapper快速入门(文档)

在线官方文档:https://gitee.com/free/Mapper/wikis/Home

官方的文档中介绍了通用mapper的三种使用方式 ,纯java使用方式、与Spring集成方式、与SpringBoot集成方式。我们这里给大家介绍的是与Spring集成方式,其他方式可自行学习

添加依赖

在开始配置前,先添加相关的依赖。

正常情况下,Spring 和 MyBatis 的集成环境中,应该已经存在下面的依赖:

<dependency>
  <groupId>org.mybatis</groupId>
  <artifactId>mybatis</artifactId>
  <version>版本号</version>
</dependency>
<dependency>
  <groupId>org.mybatis</groupId>
  <artifactId>mybatis-spring</artifactId>
  <version>版本号</version>
</dependency>
<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-context</artifactId>
  <version>版本号</version>
</dependency>
<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-tx</artifactId>
  <version>版本号</version>
</dependency>
<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-jdbc</artifactId>
  <version>版本号</version>
</dependency>

通用 Mapper 支持 MyBatis 3.2.4+

集成通用 Mapper 在上面的基础上添加下面的依赖:

<dependency>
    <groupId>tk.mybatis</groupId>
    <artifactId>mapper</artifactId>
    <version>最新版本</version>
</dependency>

tk.mybatis:mapper 依赖包含了通用 Mapper 的基础代码以及和 Spring 集成必须的代码

和Spring集成

和 Spring 进行集成时,分为 XML 和注解配置两种方式,每种方式又有不同的配置方式。

这里提供了很多配置方式,使用时选择一种改动最小的方式即可!

XML 配置

1.使用 MapperScannerConfigurer

和通用 Mapper 以前版本一样,可以直接使用 tk.mybatis 提供的 tk.mybatis.spring.mapper.MapperScannerConfigurer 进行配置,这个配置和 MyBatis 官方提供的 org.mybatis.spring.mapper.MapperScannerConfigurer 区别只是第一层的包名,tkorg。所以使用这种方式时,如果你项目已经使用 org. 进行了配置,只需要改成 tk. 即可。

<bean class="tk.mybatis.spring.mapper.MapperScannerConfigurer">
    <property name="basePackage" value="扫描包名"/>
</bean>

如果你需要对通用 Mapper 进行特殊配置,可以按下面的方式进行配置:

<bean class="tk.mybatis.spring.mapper.MapperScannerConfigurer">
    <property name="basePackage" value="tk.mybatis.mapper.mapper"/>
    <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
    <property name="properties">
        <value>
            参数名=值
            参数名2=值2
            ...
        </value>
    </property>
</bean>

可用配置的参数请看后续的配置文档,配置参数时一行写一个值。

2.XML配置使用 Configuration

如果某些第三方也需要特殊的 MapperScannerConfigurer 时,就不能用上面的方式进行配置了,此时可以选择下面这种方式,这种方式要求使用MyBatis (3.4.0+) 和 mybatis-spring (1.3.0+),配置方式如下:

<!--使用 Configuration 方式进行配置-->
<bean id="mybatisConfig" class="tk.mybatis.mapper.session.Configuration">
    <!-- 配置通用 Mapper,有三种属性注入方式 -->
    <property name="mapperProperties">
        <value>
            notEmpty=true
        </value>
    </property>
</bean>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="dataSource"/>
    <property name="configuration" ref="mybatisConfig"/>
</bean>
<!-- 不需要考虑下面这个,注意这里是 org 的 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    <property name="basePackage" value="tk.mybatis.mapper.configuration"/>
    <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
</bean>

这里使用了 tk.mybatis.mapper.session.Configuration ,也就是不能通过读取 mybatis-config.xml 进行配置,上面这种配置更直接,使用 Spring setter 配置属性更方便。当需要配置通用 Mapper 时,使用 mapperProperties 属性配置即可,配置方式和前面的相同,一行一个配置即可。

配置了一个 mybatisConfig 的 bean 后,在 SqlSessionFactoryBean 中注入即可。

后面的 MapperScannerConfigurer 只是为了说明这里不需要使用 tk. 开头的类进行配置。

这种配置方式基本上和任何第三方都不会冲突,如果你遇到了第三方重写 SqlSessionFactoryBean 的情况,就使用前一种方式配置即可。

实体类映射

@Table(name = "tb_brand")
public class Brand implements Serializable {
    @Id
    private Integer id;
    private String name;
    private String image;
    private String letter;
    private Integer seq;
    //getter and setter ....
}

@Table 是指定实体类对应的数据库表 @Id 指的是主键映射。经过上面简单的配置后,相 当于就有了 MyBatis 中的关系映射了

创建Mapper接口

public interface BrandMapper extends Mapper<Brand> {
}

这里继承了 tk.mybatis.mapper.common.Mapper 接口,在接口上指定了泛型类 型 Brand 。当你继承了 Mapper 接口后,此时就已经有了针对 Brand 的大量方法,方 法如下:

这些方法中和 MBG 生成的大部分方法都一致,还有一部分 MBG 之外的常用方法。 基础接口 select

List<T> select(T record)

根据 T 对象中的属性名称查询 , 类似于 select * from table where t.name=#{name} and t.passWord = #{password}

T selectOne(T record)

根据实体中的属性进行查询,只能有一个返回值,有多个结果是抛出异常,查询条件使用等号

T selectByPrimaryKey(Object key)

根据主键查询 说明:根据主键字段进行查询,方法参数必须包含完整的主键属性,查询条 件使用等号

int selectCount(T record);

说明:根据实体中的属性查询总数,查询条件使用等号

基础接口 insert

int insert(T record);

说明:保存一个实体, null 的属性也会保存,不会使用数据库默认值

int insertSelective(T record);

说明:保存一个实体, null 的属性不会保存,会使用数据库默认值

基础接口 Update

int updateByPrimaryKey(T record);

说明:根据主键更新实体全部字段, null 值会被更新

int updateByPrimaryKeySelective(T record);

说明:根据主键更新属性不为 null 的值

基础接口 delete

int delete(T record);

说明:根据实体属性作为条件进行删除,查询条件使用等号

int deleteByPrimaryKey(Object key);

说明:根据主键字段进行删除,方法参数必须包含完整的主键属性

到此这篇关于MyBatis mapper快速入门教程的文章就介绍到这了,更多相关MyBatis mapper内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: MyBatis映射器mapper快速入门教程

本文链接: https://www.lsjlt.com/news/168544.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MyBatis映射器mapper快速入门教程
    目录通用mapper简介通用mapper快速入门(文档)添加依赖和Spring集成XML 配置1.使用 MapperScannerConfigurer2.XML配置使用 Config...
    99+
    2022-11-13
  • MyBatis入门学习教程-MyBatis快速入门
    目录Mybatis一、快速开始1、创建 Maven 项目3、配置 Maven 插件4、新建数据库,导入表格5、编写 Mybatis 配置文件6、编写实体类7、编写 mapper 接口...
    99+
    2022-11-12
  • MyBatis快速入门之环境搭建和单表映射
    一.MyBatis简介    一说起对象关系映射框架,大家第一时间想到的肯定是Hibernate。Hibernate作为一个著名的框架,功能十分强大。我们只需要配置好实体类和数据表之间的关系,Hibernate...
    99+
    2023-05-31
    mybatis 快速入门 环境搭建
  • Fluent Mybatis快速入门详细教程
    使用fluent mybatis可以不用写具体的xml文件,通过java api可以构造出比较复杂的业务sql语句,做到代码逻辑和sql逻辑的合一。 不再需要在Dao中组装查询或更新...
    99+
    2022-11-12
  • MyBatis-Plus简介和快速入门教程
    目录 一、MyBatis-Plus简介(来自官网)二、快速开始三、通用CRUD3.1 insert(插入操作)3.2 updateById(更新操作)3.3 查询操作——各...
    99+
    2022-11-12
  • Mybatis结果集映射一对多简单入门教程
    Mybatis 一对多 简单入门 易懂 搭建数据库环境 student 表 DROP TABLE IF EXISTS `student_2`; CREATE TABLE ...
    99+
    2022-11-12
  • Unity3D快速入门教程
    Unity3D游戏引擎介绍 Unity3D是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏...
    99+
    2022-11-12
  • SparkSQL快速入门教程
    目录(一)概述(二)SparkSQL实战(三)非JSON格式的Dataset创建(四)通过JDBC创建DataFrame(五)总结(一)概述 SparkSQL可以理解为在原生的RDD...
    99+
    2022-11-13
  • Springboot快速入门教程
    入门Springboot 项目创建在IDEA中创建即可。 注意点: 1、所有文件都需要放在 : Application文件的同级或下级目录中 2、application.proper...
    99+
    2022-11-12
  • sklearn 快速入门教程
    1. 获取数据 1.1 导入sklearn数据集   sklearn中包含了大量的优质的数据集,在你学习机器学习的过程中,你可以通过使用这些数据集实现出不同的模型,从而提高你的动手实践能力,同时这个过程也可以加深你对理论知识的理解和把握...
    99+
    2023-01-31
    入门教程 快速 sklearn
  • SpringBoot整合mybatis-plus快速入门超详细教程
    目录前言mybatis-plus 简介mybatis-plus 优点相关链接mybatis-plus实例1、示例项目结构2、数据库准备3、pom.xml:4、application....
    99+
    2022-11-12
  • Python OpenCV快速入门教程
    目录OpenCV先决条件我们会在本文中涵盖7个主题读,写和显示图像imread():imshow():imwrite():读取视频并与网络摄像头集成句法调整大小和裁剪图像句法裁剪图像...
    99+
    2022-11-12
  • ASP.NET Core快速入门教程
    目录第一课 基本概念第二课 控制器的介绍第三课 视图与表单第四课 数据验证第五课 路由规则第六课 应用发布与部署源码地址第一课 基本概念 基本概念Asp.Net Core Mvc是....
    99+
    2022-11-13
  • flyway的快速入门教程
    目录 一、简单介绍 二、为什么要使用flyway 三、flyway是如何工作的 四、如何使用flyway 1、先要初始化一个SpringBoot项目,引入依赖 2、在application.yml中添加相关配置 3、根据配置文件中填写的脚本...
    99+
    2023-09-27
    spring boot flyway database mysql
  • BlenderPython编程快速入门教程
    目录Blender Python 编程数据访问访问集合访问属性数据创建/删除自定义属性上下文 Context运算符 Operators (Tools)Operator Poll()将...
    99+
    2022-11-11
  • XXL-Job快速入门+详细教程
    XXL-Job快速入门+详细教程 1 概念 XXL-JOB是一个轻量级分布式任务调度平台 详细说明:XXL-JOB是一个任务调度框架,通过引入XXL-JOB相关的依赖,按照相关格式撰写代码后,可在...
    99+
    2023-09-27
    java 开发语言 xxl-job 定时任务 分布式
  • 一小时快速入门Python教程
    目录为什么使用PythonPython应用场合Hello world国际化支持便易用的计算器字符串,ASCII和UNICODE使用List条件和循环语句如何定义函数文件I/O异常处理...
    99+
    2022-11-12
  • Vue + OpenLayers 快速入门学习教程
    Openlayers 是一个模块化、高性能并且功能丰富的WebGIS客户端的JavaScript包,用于显示地图及空间数据,并与之进行交互,具有灵活的扩展机制。 简单来说,使用 O...
    99+
    2022-11-12
  • 机器学习教程,Python3天快速入门机
    人工智能,现今已经是好多程序员都想学习的技能,毕竟人工智能这么火,对不对?你是否也想学习呢?今天就分享一个机器学习教程,Python3天快速入门机器学习! 该课程是机器学习的入门课程,主要介绍一些经典的传统机器学习算法,如分类算法:KNN算...
    99+
    2023-01-31
    入门 机器 快速
  • Playwright快速上手指南(入门教程)
    目录1. 为什么选择Playwright1.1 Playwright的优势1.2 已知局限性2. Playwright使用2.1 安装2.2 自动录制2.3 定制化编写2.4 网络拦...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作