Mybatis初步实现增删改查

这篇具有很好参考价值的文章主要介绍了Mybatis初步实现增删改查。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.单张表的增删改查

首先介绍idea中的一个功能,叫做单元测试

我们使用@Test来作为一个类中的一个方法的上标志,需要引入import org.junit.Test;

此时,这个方法就可以单独执行,我们就不需要每次都在main方法进行方法定义来测试方法中的代码,直接就可运行方法中的代码,还可进行debug运行。

1.查

(1)单个参数直接传递即可

注:只有基本类型可以直接传入,引用类型必须要使用下面两种方式(八个基本类型对应的引用类型因为可以自动转型,所以也可以单个参数直接传递)。

(2)多个参数进行查询时我们需要改变Dao中的抽象方法中的参数形式,例如:

Admin findAdmin(@Param("account") String account,@Param("password") String password);

此时mappers中的映射文件中的sql中就不需要写parameterType这一属性

(3)当我们有更多参数需要传入时,可以将数据封装进对象中,将对象作为参数传入,sql语句中使用参数对象中的哪个值,就从这个对象中取即可,不用对这个对象中所有属性都赋值,用什么赋什么即可。

此时的映射文件中对应sql 中parameterType=这个对象的类型。

2.增

注:当我们使用的sql语句对数据库中数据进行了改动时,我们就需要在sqlsession调用的最后,即

sqlSession.close之前,进行sqlsession.commit() ,即提交数据库事务,告诉数据库所有的逻辑执行完了,你可以将所有的sql执行 。查询操作不改变数据,所以不需要 这个操作。

当我们进行增加操作时,一般都是将对象当做参数传入,这个对象其中的属性值我们要提前设置好,但此时的这个对象并没有主键id,因为它在数据库是自增的,要想让其id号映射进刚才传入的对象也很简单,我们不需要再进行一个查询操作,只需要在刚才的<update>标签中加入三个属性即可,如下所示:

Mybatis初步实现增删改查

通过设置以后,这个对象中的id号就会映射进来。

3.删

删除操作使用<delete>标签,我们一般通过id号进行删除,其余与别的操作基本类似,例如:

Mybatis初步实现增删改查

4.改

改操作使用<update>标签,我们一般使用对象作为参数传入,要记住对要改的属性以及条件属性赋值,其余基本一致,例如:

Mybatis初步实现增删改查

 

注:在mappers sql映射文件中,resultType是返回值的类型定义,我们自定义的类的全类名已经定义了别名,那么java API中常见的类的全类名其实也已经在Mybatis jar包中进行了别名的定义,我们直接使用即可

2.#{}和${}的区别

#{} 占位符,是经过预编译的,编译好 SQL 语句再取值,#方式能够防止 sql 注入

#{}:select * from t_user where uid=#{uid}

${} 拼接符,会传入参数字符串,取值以后再去编译 SQL 语句,$方式无法防止 Sql

注入 ${}

${}:select * from t_user where uid= '1'

注意:MyBatis 排序时使用 order by 动态参数时需要注意,用$而不是#

总之可以理解为两个都能拿到值,但是#{}拿到的值会相当于经过预编译,带来一个‘ ’,而${}就相当于将拿来的值直接传入,适合在order by 的场景使用。

3.数据库与java的对象映射

sql语句的查询结果是一条记录,可以实现将数据记录的数据自动封装到对象中去,这个过程也称为数据库与java的对象映射。

在这个过程中,数据库的sql语言其实并未改变,Mybatis框架主要进行的作用就是将sql语句查询出来的数据封装在对应的对象中,就不用想我们以前那样很麻烦的进行封装,使用Mybatis框架进行更加方便的封装。

能够进行自动封装的三种情况

1、表中的列名与java中类的属性完全一致

2、可以出现不一致,但是数据库中属性要是经典数据命名即admin_phone,

此时java的属性为adminPhone驼峰,两个相互对应即可。

需要在全局配置文件中<settings>目录下进行一个配置:

3、当数据库中列名和java中属性名不一致时,我们可以在sql语句中给查询出的数据设置别名,让其与java中属性名一致。

4、当数据库中列名和java中属性名不一致时,也可单独进行处理(多表关联时经常使用,单张表几乎用不到,我们先以单表举例);

我们自定义resultMap,其中column指的是数据库中的列名,property指的是java中的属性名,实际意义可以理解为将从数据库中查出的列名为gender的数据映射到java中为xb的属性中;

<resultMap id="adminMap" type="admin">

<result column="gender" property="xb"></result>

</resultMap>

     select * from admin where id=#{id} 

最终使用resultMap即可解决。

4.多表关联的查询:

首先,我们还是需要知道的是,Mybatis框架对jdbc进行了轻量级封装,它可以实现java与数据库的映射,在我们的sql语句只涉及单张表时,如上面所示解决。而当我们使用到多张表时,这里的映射就不像单张表那么简单。

这里以学生表和年级表为例,学生表中的列应该有年级id来存储学生的年级,这里对应的java中的学生类中的属性也应该要存储年级,在这里为了防止冗余,学生类的属性中用来存放年级信息的就是年级类,不应该放年级名,这样会导致数据冗余。

在这里我们要重点使用学习的是<resultMap>标签,这个标签主要的作用就是将数据库的各个列名与java中属性名相互对应,这样在进行映射时就可直接进行映射。

下面是举例:通过id查询学生表的信息,并且将查询信息封装在student对象中

Mybatis初步实现增删改查

 

如上图所示,<resultMap>中的id指的是它的名字,下面的sql可以通过名字来调用这个<resultMap>,

在其下使用这三种标签:

(1)<id>标签指的是主属性,即映射主键

(2)<result >标签映射普通的属性

(3)<association>标签映射关联属性,即一个类,property指的是java中这个类的引用,javaType指的是这个类,在这个标签下我们使用<result>设置我们对应的映射。

上面的SQL语句我们使用了<sql>标签进行封装,在底下通过id号并使用<include>进行调用。

在这里我们会发现一个问题,那个关联的属性需要我们自定义也就罢了,其他普通属性凭什么还要再次定义啊,在这里,如果我们不想对普通属性再次定义映射,那我们就需要对全局配置文件中<settings>进行设置,如下:

<setting name="autoMappingBehavior" value="FULL"/>

设置是否自动映射,指的是多表关联时,除了特殊属性(指属性类,用到association标签)外的其他普通属性,进行自动映射。 使用时需要注意,它会将你为查询的特殊属性(属性是类)中的其余属性进行自动映射,但往往不是我们想要的,所以我们注释掉

FULL:一直开启自动映射

NONE:不自动映射

PARIAL(默认):单张表自动映射,有嵌套关联关闭自动映射

总结:完成以上配置后,创建test进行student的id查询,我们即可完成一个简单的多表关联查询。文章来源地址https://www.toymoban.com/news/detail-404578.html

到了这里,关于Mybatis初步实现增删改查的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Springboot整合mybatis实现增删改查(crud)

    今天我们来学习一个Springboot案例!! 那么什么是SpringBoot技术呢? Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。 该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。 Spring Boot致力于在蓬

    2024年01月22日
    浏览(32)
  • spring整合mybatis(实现数据的增删改查)

    一、专业术语解释 1、spring:是分层的Java SE/EE应用full - stack 轻量级开源框架 , 以IoC(控制反转)和AOP(面向切面编程)为内核 ,提供展现层spring MVC 和 spring JDBC等众多企业级应用技术。 2、mybatis:是一个持久层框架。原始连接数据库是通过JDBC的API来操作的,过程繁琐,而 mybati

    2024年02月08日
    浏览(30)
  • mybatis实现CRUD详解(使用mapper映射文件实现增删改查)

    创建maven项目:项目结构如图所示 准备数据库表: 准备pom.xml所需的依赖: 编写核心配置文件加载所需要的资源 编写config.xml文件 创建工厂连接数据处理工具SqlSessionUtil.java SqlSessionUtil.java 创建学生实体类对象Student.java 1、查询所有学生信息: 创建接口StudentDao.java:向其中添加

    2023年04月23日
    浏览(29)
  • SpringBoot+Mybatis-Plus实现增删改查超详细步骤

    目录 一、介绍 视频讲解 二、前期准备工作 (一) 创建springboot项目和创建数据库 三、项目配置 (一)pom.xl导入相关依赖  1.导入依赖 (二)yml文件中配置连接数据库 2.配置yml文件  四、代码的编写 数据库展示 项目提前展示!!! (三)MySQL表绑定到spring boot(实体层)

    2024年02月13日
    浏览(27)
  • 使用Spring+SpringMVC+Mybatis实现留言板的增删改查

    目的 1)掌握使用maven来创建SSM项目 2)掌握web.xml和pom.xml的使用 3)掌握Spring、SpringMVC和Mybatis,学会整合SSM 4)掌握的controller层注解@Autowired,@RequestMapping和@RequestParam的使用 5)用学会配置SpringMVC.xml、applicationContext.xml和mybatis-config.xml等配置文件 6)掌握spring+springMVC+mybatis 对于留言板

    2024年02月04日
    浏览(80)
  • Spring Boot+Mybatis实现增删改查接口开发+测试(超详细建议收藏)

    Java也是测试必知必会的内容,特别是现在类似spring boot 等Java框架更是成为主流。之前实现的图书增删改查是用Python实现的,没看过的请移步:Flask+mysql 实现增删改查接口开发+测试(图文教程附源码),本次给大家带来用Java实现的后端接口版本,并根据之前的项目总结有做一

    2024年02月03日
    浏览(33)
  • MyBatis-Plus 基础操作指南:实现高效的增删改查

        大家好,今天我们来聊聊如何使用 MyBatis-Plus(接下来简称为 MP),一个流行的 MyBatis 增强工具,来简化和加速我们的数据库操作。如果你是一位初学者,不用担心,我将带你从头到尾详细了解 MP 的使用方法,特别是如何实现基本的增删改查操作。     在开始详细介绍之

    2024年02月05日
    浏览(24)
  • springBoot + mybatis-plus 实现监听 mysql的数据增删改的监听

    在Spring Boot + MyBatis-Plus中实现MySQL数据增删改的监听,可以通过以下步骤: 1. 添加MyBatis-Plus依赖,在pom.xml文件中添加以下依赖:   2. 配置MyBatis-Plus,通常在application.yml文件中进行配置: 3. 创建监听器类,实现com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor接口。  4. 在My

    2024年02月15日
    浏览(80)
  • SpringBoot+Mybatis-Plus实现增删改查(配视频讲解)--项目阶段1

    目录 一、介绍 视频讲解 二、前期准备工作 (一) 创建springboot项目和创建数据库 三、项目配置 (一)pom.xl导入相关依赖  1.导入依赖 (二)yml文件中配置连接数据库 2.配置yml文件  四、代码的编写 数据库展示 项目提前展示!!! (三)MySQL表绑定到spring boot(实体层)

    2024年02月11日
    浏览(24)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包