Spring boot整合mybatis实现过程图解

导入mybatis jar包

右键pom.xml


模拟springboot底层实现类

1.

定义接口

@Mapper

public interface GoodsDao {
	/**
	 * 基于商品id删除商品
	 * @param id 商品id
	 * @return 删除行数
	 * 数据层方法对象的sql映射
	 */

     @Delete("delete from tb_goods where id=#{id}")
      //当传入的参数只有一个且不是数组时
      //#{id}这个地方的变量可以不是传入的参数名(自己随意)
     int deleteById(Integer id);

}

测试

@SpringBootTest
public class TestGoods {

	@Autowired
	private GoodsDao gd;
	@Test
	void TestGoods() {
		int i =gd.deleteById(10);
		System.out.println(i);
	}
}

2.

自己实现

接口方法

@Mapper

public interface GoodsDao {
	/**
	 * 基于商品id删除商品
	 * @param id 商品id
	 * @return 删除行数
	 * 数据层方法对象的sql映射
	 */

     @Delete("delete from tb_goods where id=#{id}")

     int deleteById(Integer id);

}
@Component
public class GoodsDaoImpl {

	@Autowired
	private SqlSession sqlSession;

	public int deleteById(Integer id) {
		return sqlSession.delete("com.cy.demo.goods.dao.GoodsDao.deleteById", id);
		//sqlSession.delete("com.cy.demo.goods.dao.deleteById",id)
	}
}

@SpringBootTest
public class GoodsDaoImpTest {

	@Autowired
	private GoodsDaoImpl gdi;
	@Test
	void testdelete() {
		int i = gdi.deleteById(9);

		System.out.println(i);
	}
}

直接导mapper文件找对应的元素

3.

当sql语句比较复杂时使用映射文件

接口:

 /**
      *GoodsDao.java
     * ids可以接受多个参数
      * 在mapper文件中直接使用array来接受,
     * @param ids
     * @return
     */
     int deleteObject(/*@Param("ids")*/Integer...ids);
      //当mybatis过低时需要加上@Param("ids")才能识别

不加@Param("ids")报错


使用xml映射

获取xml头文件(去官网)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.cy.demo.goods.dao.GoodsDao">
	<delete id="deleteObject">
		delete from tb_goods
		<where>

			<if test="ids!=null and ids.length>0">
			id in
				<foreach collection="ids" open="(" close=")" separator=","
					item="i">
					#{i}
				</foreach>
			</if>
			or 1=2
		</where>

	</delete>
</mapper>

配置:

测试:

	@Autowired
	private GoodsDao gd;

	@Test
	void deleteObject() {
		int rows=gd.deleteObject(1,2,3);
		System.out.println(row);
	}

当我们在执行此方法时,其实现类内部会检测接口方法上是否有定义sql映射

假如没有,然后基于接口类全名找到对应的映射文件(mapper映射文件的id),然后在基于方法名

再找到对应映射文件的元素,进而获取sql映射

错误解决:


binding异常还有可能时参数异常,还有可能是配置文件有问题

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • SpringBoot如何通过yml方式整合Mybatis

    本来打算写个使用Sharding-JDBC的例程,但是在搭建Mybatis的过程中,一波三折,因为好久没搭建项目了,另外加上换了电脑.所以很破折,在这里记录一下Spring Boot整合Mybatis吧.可能很简单,但是我长时间没用忘记了,我这里备忘一下吧. 一.项目目录结构 注意这里Application文件的位置,它是与controller.entity.mapper.service等包处于并列的关系. 二.数据库文件 SET NAMES utf8mb4; SET FOREIGN_KEY_C

  • SpringBoot整合mybatis结合pageHelper插件实现分页

    SpringBoot整合mybatis分页操作 SpringBoot整合Mybatis进行分页操作,这里需要使用Mybatis的分页插件:pageHelper, 关于pageHelper的介绍,请查看官方文档: https://pagehelper.github.io/ 1.使用前配置 关于pageHelper的使用配置,主要有以下2个步骤: 1.1.在pom文件中导入pageHelper依赖 <dependency> <groupId>com.github.pagehelper&

  • SpringBoot整合MybatisSQL过滤@Intercepts的实现

    场景: 系统模块查询数据库需要根据用户的id去筛选数据.那么如果在 每个sql加user_id的过滤显然不明确.所以要在查询前将sql拼接上条件,做统一管理. 开发环境: spring boot + mybatis 只需一个拦截类即可搞定(在看代码前需要了解注解@Intercepts()): @Component @Intercepts({ @Signature(type = Executor.class, method = "query", args = {MappedStateme

  • Spring boot整合Mybatis实现级联一对多CRUD操作的完整步骤

    前言 在关系型数据库中,随处可见表之间的连接,对级联的表进行增删改查也是程序员必备的基础技能.关于Spring Boot整合Mybatis在之前已经详细写过,不熟悉的可以回顾Spring Boot整合Mybatis并完成CRUD操作,这是本文操作的基础.本文先准备一个测试的数据库,然后使用MyBatis Generator进行部分代码自动生成,再以一个例子来展示稍微高级点的操作:使用Mybatis完成级联一对多的CRUD操作. 数据库准备 数据库用到三张表:user表,role表,user_ro

  • 详解mall整合SpringBoot+MyBatis搭建基本骨架

    SpringBoot实战电商项目mall(20k+star)地址:https://github.com/macrozheng/mall 摘要 本文主要讲解mall整合SpringBoot+MyBatis搭建基本骨架,以商品品牌为例实现基本的CRUD操作及通过PageHelper实现分页查询. mysql数据库环境搭建 下载并安装mysql5.7版本,下载地址:https://dev.mysql.com/downloads/installer/ 设置数据库帐号密码:root root 下载并安装客

  • 解决SpringBoot整合Mybatis扫描不到Mapper的问题

    闲来无事,想学学springboot,开始搭建一个项目,但是一直显示mapper扫描不到的错误: "Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'userController': Unsa

  • SpringBoot整合MyBatis实现乐观锁和悲观锁的示例

    本文以转账操作为例,实现并测试乐观锁和悲观锁. 全部代码:https://github.com/imcloudfloating/Lock_Demo GitHub Page:https://cloudli.top 死锁问题 当 A, B 两个账户同时向对方转账时,会出现如下情况: 时刻 事务 1 (A 向 B 转账) 事务 2 (B 向 A 转账) T1 Lock A Lock B T2 Lock B (由于事务 2 已经 Lock A,等待) Lock A (由于事务 1 已经 Lock B,等

  • SpringBoot整合MyBatis-Plus3.1教程详解

    一.说明 Mybatis-Plus是一个Mybatis框架的增强插件,根据官方描述,MP只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑.并且只需简单配置,即可快速进行 CRUD 操作,从而节省大量时间.代码生成,分页,性能分析等功能一应俱全,最新已经更新到了3.1.1版本了,3.X系列支持lambda语法,让我在写条件构造的时候少了很多的"魔法值",从代码结构上更简洁了. 二.项目环境 MyBatis-Plus版本: 3.1.0 SpringBoot版本:2.1.5 JDK

  • Spring boot整合mybatis实现过程图解

    导入mybatis jar包 右键pom.xml 模拟springboot底层实现类 1. 定义接口 @Mapper public interface GoodsDao { /** * 基于商品id删除商品 * @param id 商品id * @return 删除行数 * 数据层方法对象的sql映射 */ @Delete("delete from tb_goods where id=#{id}") //当传入的参数只有一个且不是数组时 //#{id}这个地方的变量可以不是传入的参数名

  • Spring Boot整合Mybatis并完成CRUD操作的实现示例

    MyBatis 是一款优秀的持久层框架,被各大互联网公司使用,本文使用Spring Boot整合Mybatis,并完成CRUD操作. 为什么要使用Mybatis?我们需要掌握Mybatis吗? 说的官方一点: MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordina

  • Spring Boot整合MyBatis操作过程

    1.加入mybatis-spring-boot-stater的Maven依赖 <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.1.1</version> </dependency> 2.配置数据源 在src/main/re

  • Spring Boot整合mybatis(一)实例代码

    sprig-boot是一个微服务架构,加快了spring工程快速开发,以及简便了配置.接下来开始spring-boot与mybatis的整合. 1.创建一个maven工程命名为spring-boot-entity,pom.xml文件配置如下: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:s

  • Spring Boot 整合 Mybatis Annotation 注解的完整 Web 案例

    前言 距离第一篇 Spring Boot 系列的博文 3 个月了.虽然 XML 形式是我比较推荐的,但是注解形式也是方便的.尤其一些小系统,快速的 CRUD 轻量级的系统. 这里感谢晓春 http://xchunzhao.tk/ 的 Pull Request,提供了 springboot-mybatis-annotation 的实现. 一.运行 springboot-mybatis-annotation 工程 然后Application 应用启动类的 main 函数,然后在浏览器访问: http

  • Spring Boot 整合mybatis 与 swagger2

    之前使用springMVC+spring+mybatis,总是被一些繁琐的xml配置,有时候如果配置出错,还要检查各种xml配置,偶然接触到了spring boot 后发现搭建一个web项目真的是1分钟的事情,再也不用去管那么多xml配置,简直神清气爽,不用看那么多一坨xml,下面是我把以前的一些ssm项目改成了spring boot + mybatis,相对于来说优点太明显了 1. 创建独立的Spring应用程序 2. 嵌入的Tomcat,无需部署WAR文件 3. 简化Maven配置 4. 自

  • spring boot整合mybatis利用Mysql实现主键UUID的方法

    前言 本文主要给大家介绍了关于spring boot整合mybatis利用Mysql实现主键UUID的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 实现 基础项目的pom.xml部分代码如下 <properties> <java.version>1.8</java.version> </properties> <!-- Inherit defaults from Spring Boot --> <parent&

  • Spring Boot整合mybatis并自动生成mapper和实体实例解析

    最近一直都在学习Java,发现目前Java招聘中,mybatis出现的频率挺高的,可能是目前Java开发中使用比较多的数据库ORM框架.于是我准备研究下Spring Boot和mybatis的整合. 1.在pom.xml文件中添加下面的配置 <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-

  • Spring Boot 整合mybatis 使用多数据源的实现方法

    前言 本篇教程偏向实战,程序猿直接copy代码加入到自己的项目中做简单的修修改改便可使用,而对于springboot以及mybatis不在此进行展开介绍,如有读者希望了解可以给我留言,并持续关注,我后续会慢慢更新.(黑色区域代码部分,安卓手机可手动向左滑动,来查看全部代码) 整合 其实整合很简单,如果是用gradle的话,在build.gradle文件里加入 compile('org.mybatis.spring.boot:mybatis-spring-boot-starter:1.3.1')

  • Spring Boot整合MyBatis连接Oracle数据库的步骤全纪录

    前言 本文主要分享了Spring Boot整合MyBatis连接Oracle数据库的相关内容,下面话不多说了,直接来详细的步骤吧. 步骤如下: 1.Spring Boot项目添加MyBatis依赖和Oracle驱动: <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <ver

随机推荐