返回顶部
首页 > 资讯 > 数据库 >mapper的使用
  • 202
分享到

mapper的使用

mybatisjavamysqlPoweredby金山文档 2023-10-18 21:10:51 202人浏览 泡泡鱼
摘要

一、通用mapper概述 它是mybatis的一个插件,单表查询的时候,使用通用mapper会非常的方便。极大地方便开发人员,可以按照需要选择通用方法,还可以自定义通用方法。不过它也有一个非常大的局限性:只支持单表操作,不支持多表查询。

一、通用mapper概述

它是mybatis的一个插件,单表查询的时候,使用通用mapper会非常的方便。极大地方便开发人员,可以按照需要选择通用方法,还可以自定义通用方法。不过它也有一个非常大的局限性:只支持单表操作,不支持多表查询。

1.导入依赖

SpringBoot项目,我们优先找启动器即可,也就是包含starter的依赖,这个是由通用mapper作者自己写的启动器。

导入通用mapper启动器后,我们能发现其本身就包含了jdbc和mybatis的库。所以这两个的依赖就不用导入了。

2.user实体类与数据表

在通用mapper中,表名默认使用类名,驼峰转下划线。比如说tab_user表,我们在Java中可以使用TabUser这个类表示。但这样显然不太合适,我们一般都是用User实体类,那怎么办呢?

① @Table注解

@Table(name="tab_user"),也可以通过name属性指定该实体类对应的表名。

② @Id、@Keysql注解

@Id用来指定Id,这不用多说,其中@KeySql用来获取自增主键。这是一个什么意思呢?大致理解就是:令MyBatis使用JDBC的getGeneratedKeys方法来取出由数据库内部生成的主键。

③ @Column注解

Java中的属性与表字段默认是驼峰匹配,比如说userName就对应着user_name。如果不符合这个原则,就用@Column注解说明表字段名,当然一般给Java实体类属性取名时都会按照驼峰匹配来。

④ @Transient注解

Transient,瞬态的意思,该注解可以忽视Java实体类中的属性,不作为表字段使用。比如说该实体类中比数据表字段多一个属性,就可以使用该注解做一个说明

二、代码编写及测试

1.Mapper层和启动类

mapper层也就是我们以前的dao层。

通用mapper厉害的地方在于,我们不用在mapper中写对应的方法,只需要继承mapper这个接口即可。

在启动类中使用@MapperScan开启mapper包扫描,因为我的mapper都是在com.liuxiaoai.mapper包中的,所以在该注解中说明即可。

注意:和通用mapper相关的包都是以tk开头的,不要弄混了。

2.Controller层和Service层

① Controller层

再次对这些注解做一个回顾:

@RestController就相当于@Controller加上@ResponseBody,前者表明是一个处理器,后者能将响应数据转为JSON格式。

@Autowired表示引入UserService。

@RequestMapping("user")表示该处理器能接受访问路径为user的请求。

@GetMapping("{id}")表示子路径为id。

@PathVariable("id")表示获取访问路径中输入的子路径参数。

②Service层

引入userMapper,使用通用mapper直接完成查询,它的方法都是见名知义的:

selectByPrimaryKey()即根据主键查询。

3.浏览器测试

访问路径user/1,输入1即查询id为1的数据,若是输入2即查询id为2的数据。

响应的数据为json数据格式,我这里是使用的一个json插件,所以格式看起来很好看。

三、通用mapper之增删改

数据库无外乎就是增删改查,上述讲了查询,再说增删改,当然通用mapper中提供的方法也不少,我这边只说下常用的方法。

1.增加方法

这边的话我用一个user对象作为伪数据来测试,实际项目中应该是前端传来的数据。

通用mapper中有两个增加方法:

insert():即增加的意思。

insertSelective():即为选择性的增加。

这两者有什么区别呢?在于sql语句的不同:

直接增加数据sql语句中增加的字段为所有字段,user对象中没有值则为null。

有选择性增加数据,sql语句红增加的字段为user对象中不为空的字段。

2.修改方法

看方法名的意思,也就是根据主键修改数据。

① 非选择性修改

修改id为1的所有数据,如果user对象中的值为null,数据表中对应的值也被修改成null。

② 选择性修改

如果user对象中的值为null,数据表中对应的值不做修改,保持不变。

3.删除方法

① 根据主键删除

例子中即为删除id为12的数据。

② 根据非主键删除

其中属性之间是and连接,比如上述例子中是查询usernname为liuxiaoai,并且name为“刘小爱”的数据,两者都得满足条件才行。

四、高阶查询example

上述编写过根据id查询数据的方法,直接使用的是selectByPrimaryKey()方法。

如果是多条件查询该怎么办?就需要使用到通用mapper提供的example对象。

① example对象

通用mapper中提供的高阶查询就是通过example对象来完成的。

② 条件查询

example的createCriteria()方法,可以创建Criteria对象,Criteria也就是条件的意思。

通过criteria对象可以设定各种条件,方法都是见名知意的:

比如andEqualTo("sex","1")意思就是sex等于1的条件。比如andGreateThan("age","25")意思就是age大于25的条件。当然criteria对象也可以一直添加条件的,满足链式编程,条件是各种各样的,有很多种。

这边就不详细讲了,基本上我们弄懂了英文单词对应的意思,也就知道其作用了。

example的or方法可以将多个条件以or的形式连接起来,同理也有一个and方法。

③添加排序规则

example的setOrderByClause()方法可以添加排序规则,比如“id desc”就表示按照id降序排序。

其中example在修改和删除方法中也可以使用,用法是类似的,就不再赘述了。

参考自:https://baijiahao.baidu.com/s?id=1675770863842950343&wfr=spider&for=pc 作者:刘小爱

个人理解:Mapper是一个封装了对数据表进行增删改查方法的工具,在Service的实现类中可以通过 BaseMapper.方法名()的方式实现对数据表的基本操作,但是只支持对单表进行操作,当所需具体实现方法不满足需求,例如需要查询多个表时,可以在对应的mapper接口中书写抽象方法,并在对应的.xml文件中书写实现操作所需的SQL语句。

CoursePublishVo getCoursePublishInfo(String courseId);//mapper接口中自定义的抽象方法
    

上面是在对应xml文件中书写的SQL具体实现语句。

select id="getCoursePublishInfo",双引号表示内容为实现类中的函数方法名。

resultType="com.atguigu.eduservice.entity.vo.CoursePublishVo”,双引号中内容表示实现类中该方法的返回值类型,其返回的是一个类,要得到这个类的具体包名。

WHERE ec.id=#{courseId},courseId表示getCoursePublishInfo()方法里的参数。

来源地址:https://blog.csdn.net/IsAmant/article/details/129231109

您可能感兴趣的文档:

--结束END--

本文标题: mapper的使用

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

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

猜你喜欢
  • mapper的使用
    一、通用mapper概述 它是mybatis的一个插件,单表查询的时候,使用通用mapper会非常的方便。极大地方便开发人员,可以按照需要选择通用方法,还可以自定义通用方法。不过它也有一个非常大的局限性:只支持单表操作,不支持多表查询。 ...
    99+
    2023-10-18
    mybatis java mysql Powered by 金山文档
  • mybatis的mapper怎么使用
    MyBatis的mapper是用于映射数据库操作的接口,通过这个接口可以方便地调用SQL语句进行数据库的增删改查操作。使用步骤如下:...
    99+
    2023-09-29
    mybatis
  • SpringDao层@Repository与@Mapper的使用
    目录SpringDao层@Repository与@Mapper1、@Mapper2、@Repository3、其他扫描手段4、小结@Mapper和@Repository的区别1、相同...
    99+
    2024-04-02
  • java中mapper怎么使用
    在Java中,"Mapper"通常是指用于将输入数据转换为一组键值对的组件。具体而言,在Hadoop MapRe...
    99+
    2023-09-20
    java mapper
  • 解决tk mapper 通用mapper的bug问题
    如下所示: <bean class="tk.mybatis.spring.mapper.MapperScannerConfigurer"> &...
    99+
    2024-04-02
  • mybatis注解之@Mapper和@MapperScan的使用
    目录mybatis注解之@Mapper和@MapperScan方式一:使用@Mapper注解方式二:使用@MapperScan注解@MapperScan和@Mapper区别及理解作用...
    99+
    2024-04-02
  • @MapperScan注解与@Mapper注解的使用
    目录@MapperScan注解与@Mapper注解使用MapperScan注解和@Mapper的区别@MapperScan注解与@Mapper注解使用 @Mapper一般对应一个接口...
    99+
    2024-04-02
  • Mybatis中mapper的map方法怎么使用
    在MyBatis中,Mapper接口中的map方法是用来执行SQL语句并将结果映射到Java对象的。首先,在Mapper接口中定义一...
    99+
    2023-10-12
    Mybatis
  • 浅谈Mybatis通用Mapper使用方法
    对单表进行增删改查是项目中不可避免的需求,Mybatis的通用Mapper插件使这些操作变得简单添加maven依赖在对应工程的pom.xml文件中添加<dependency> <groupId>javax.pers...
    99+
    2023-05-31
    mybatis mapper pp
  • mybatis中mapper-locations的作用
    目录mapper-locations的作用说明1、mapper-locations2、使用场景3、补充mybatis.mapper-locations作用和Invalid bound...
    99+
    2024-04-02
  • mybatis中映射文件(mapper)中的使用规则
    目录一、增删改1、增加2、删除3、更新二、传入参数处理1、单个参数2、多个参数3、参数中有Collection(List、Set) 类型或者是数组4、参数封装成数据模型5、param...
    99+
    2024-04-02
  • mybatis Mapper的xml文件中resultType值的使用说明
    目录Mapper的xml文件中resultType值①返回一般数据类型的值②当返回类型是javaBean③当返回是List类型④返回类型数Map结构⑤说一下关于mybatis里面ma...
    99+
    2024-04-02
  • MyBatis通用Mapper@Table注解使用的注意点分析
    本篇内容介绍了“MyBatis通用Mapper@Table注解使用的注意点分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!MyBatis通...
    99+
    2023-06-21
  • 关于MyBatis通用Mapper@Table注解使用的注意点
    目录MyBatis通用Mapper@Table注解使用@Table注解的作用通用Mapper使用需要注意的问题首先是实体需要有相关的注解其次需要注意点事具体使用的依赖MyBatis通...
    99+
    2024-04-02
  • 怎么使用mapper传递多个参数
    使用Mapper传递多个参数可以通过以下两种方式实现:1. 使用Map类型作为参数在Mapper接口方法中,使用Map类型作为参数,...
    99+
    2023-10-12
    mapper
  • 使用Spring扫描Mybatis的mapper接口的三种配置
    Spring扫描Mybatis的mapper接口的配置 1.前言 mybatis支持与spring结合使用,使得mybatis中的mapper接口可以作为spring容器中的bean...
    99+
    2024-04-02
  • SpringBoot+Mybatis使用Mapper接口注册的几种方式
    目录I.环境准备1.数据库准备2.项目环境II.实例演示1.实体类,Mapper类2.注册方式2.1@MapperScan注册方式2.2@Mapper注册方式2.3MapperSca...
    99+
    2024-04-02
  • Mybatis中的mapper模糊查询语句LIKE怎么使用
    本篇内容介绍了“Mybatis中的mapper模糊查询语句LIKE怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Mybatis ma...
    99+
    2023-06-21
  • java中mapper的用途是什么
    在Java中,Mapper是一种设计模式,它用于将输入数据转换为另一种格式或结构。Mapper通常用于数据转换、映射和过滤。具体来说...
    99+
    2023-09-29
    java
  • Mybatis中mapper-locations和@MapperScan的作用
    目录SpringBoot集成Mybatis时mybatis.mapper-locations和@MapperScan的作用1、mybatis.mapper-locations的作用2...
    99+
    2023-05-19
    Mybatis locations Mybatis @MapperScan
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作