SprintBoot整合MyBatis简易教程

2024-04-25 23:48

本文主要是介绍SprintBoot整合MyBatis简易教程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

SprintBoot整合MyBatis简易教程

MyBatis导入及配置

  • 使用Maven管理
<!-- https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter -->
<dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>1.3.2</version>
</dependency>
  • 需要在启动主类添加@MapperScan 使得Mapper文件被扫描到
    即添加下面这行代码到启动主类中,com.imoor.dataobject.mapper为mapper所在包
    @MapperScan(basePackages = "com.imooc.dataobject.mapper")
@SpringBootApplication
@MapperScan(basePackages = "com.imooc.dataobject.mapper")
public class SellApplication {public static void main(String[] args) {SpringApplication.run(SellApplication.class, args);}
}
  • 在控制台打印出MyBatis的sql语句
    application.yml配置文件上配置
logging:level:com.imooc.dataobject.mapper:trace

将mapper包下的所有类的日志等级设置为最低的trace等级

MyBatis基本操作

package com.imooc.dataobject.mapper;import com.imooc.dataobject.ProductCategory;
import org.apache.ibatis.annotations.*;import java.util.List;
import java.util.Map;//采用MyBatis操作数据库
public interface ProductCategoryMapper {//使用Map插入数据//注意!!! #{categoryName,jdbcType=VARCHAR} map中的键值需要与categoryName保持一致//即map.put("categoryName","testName")//jdbcType=VARCHAR是规定写法,jdbcType后面的类型一定要全部大写!!!(只有传入Map对象作为参数,jdbcType才是必写的)@Insert("insert into product_category(category_name,category_type) values (#{categoryName,jdbcType=VARCHAR},#{categoryType,jdbcType=INTEGER})")int insertByMap(Map<String,Object> map);//使用对象插入数据//注意!!!  #{categoryName,jdbcType=VARCHAR}    categoryName一定要与ProductCategory类中的属性名称一致//且ProductCategory中属性的get和set方法一定要有@Insert("insert into product_category(category_name,category_type) values (#{categoryName},#{categoryType})")int insertByObject(ProductCategory productCategory);//查询结果只有单条//注意!!! 查询需要返回结果,格式如下,column的值为数据库中的字段名,而property的值为对应类的属性名@Select("select * from product_category where category_type = #{categoryType}")@Results({@Result(column = "category_type",property = "categoryType"),@Result(column = "category_name",property = "categoryName"),@Result(column = "category_id",property = "categoryId"),})ProductCategory findByCategoryType(Integer categoryType);//查询结果有多个//注意!!! 查询需要返回结果,格式如下,column的值为数据库中的字段名,而property的值为对应类的属性名@Select("select * from product_category where category_name = #{categoryName}")@Results({@Result(column = "category_type",property = "categoryType"),@Result(column = "category_name",property = "categoryName"),@Result(column = "category_id",property = "categoryId"),})List<ProductCategory> findByCategoryName(String categoryName);//更新//注意!!! 传多个参数时需要使用@Param映射一下@Update("update product_category set category_name=#{categoryName} where category_type=#{categoryType}")int updateByCategoryType(@Param("categoryName") String categoryName,@Param("categoryType") Integer categoryType);//使用对象更新@Update("update product_category set category_name=#{categoryName} where category_type=#{categoryType}")int updateByObject(ProductCategory productCategory);//删除数据@Delete("delete from product_category where category_type = #{categoryType}")int deleteByCategoryType(Integer categoryType);
}

对应测试代码


package com.imooc.dataobject.mapper;import com.imooc.dataobject.ProductCategory;
import lombok.extern.slf4j.Slf4j;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;import java.util.HashMap;
import java.util.List;
import java.util.Map;import static org.junit.Assert.*;@RunWith(SpringRunner.class)
@SpringBootTest
@Slf4j
public class ProductCategoryMapperTest {@Autowiredprivate ProductCategoryMapper mapper;@Testpublic void insertByMap() {Map<String, Object> map = new HashMap<>();map.put("category_name","fine");map.put("category_type",90);int result = mapper.insertByMap(map);Assert.assertNotEquals(0,result);}@Testpublic void insertByObject(){ProductCategory productCategory = new ProductCategory();productCategory.setCategoryId(30);productCategory.setCategoryName("testName");productCategory.setCategoryType(100);int result = mapper.insertByObject(productCategory);Assert.assertNotEquals(0,result);}@Testpublic void findByCategoryTypeTest(){ProductCategory productCategory = mapper.findByCategoryType(3);Assert.assertNotNull(productCategory);}@Testpublic void findByCategoryNameTest(){List<ProductCategory> resultList = mapper.findByCategoryName("food");Assert.assertNotEquals(1,resultList.size());}@Testpublic void updateByCategoryTypeTest(){int result = mapper.updateByCategoryType("helloTest", 11);Assert.assertEquals(1,result);}@Testpublic void updateByObjectTest(){ProductCategory productCategory = new ProductCategory();productCategory.setCategoryName("worldTest");productCategory.setCategoryType(11);int result = mapper.updateByObject(productCategory);Assert.assertEquals(1,result);}@Testpublic void deleteByCategoryTypeTest(){int result = mapper.deleteByCategoryType(11);Assert.assertNotEquals(0,result);}
}

这篇关于SprintBoot整合MyBatis简易教程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/936134

相关文章

JavaWeb项目创建、部署、连接数据库保姆级教程(tomcat)

《JavaWeb项目创建、部署、连接数据库保姆级教程(tomcat)》:本文主要介绍如何在IntelliJIDEA2020.1中创建和部署一个JavaWeb项目,包括创建项目、配置Tomcat服务... 目录简介:一、创建项目二、tomcat部署1、将tomcat解压在一个自己找得到路径2、在idea中添加

MyBatis配置文件中最常用的设置

《MyBatis配置文件中最常用的设置》文章主要介绍了MyBatis配置的优化方法,包括引用外部的properties配置文件、配置外置以实现环境解耦、配置文件中最常用的6个核心设置以及三种常用的Ma... 目录MyBATis配置优化mybatis的配置中引用外部的propertis配置文件⚠️ 注意事项X

MyBatis中的两种参数传递类型详解(示例代码)

《MyBatis中的两种参数传递类型详解(示例代码)》文章介绍了MyBatis中传递多个参数的两种方式,使用Map和使用@Param注解或封装POJO,Map方式适用于动态、不固定的参数,但可读性和安... 目录✅ android方式一:使用Map<String, Object>✅ 方式二:使用@Param

SpringBoot项目整合Netty启动失败的常见错误总结

《SpringBoot项目整合Netty启动失败的常见错误总结》本文总结了SpringBoot集成Netty时常见的8类问题及解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录一、端口冲突问题1. Tomcat与Netty端口冲突二、主线程被阻塞问题1. Netty启动阻

MyBatis-Plus使用动态表名分表查询的实现

《MyBatis-Plus使用动态表名分表查询的实现》本文主要介绍了MyBatis-Plus使用动态表名分表查询,主要是动态修改表名的几种常见场景,文中通过示例代码介绍的非常详细,对大家的学习或者工作... 目录1. 引入依赖2. myBATis-plus配置3. TenantContext 类:租户上下文

Python + Streamlit项目部署方案超详细教程(非Docker版)

《Python+Streamlit项目部署方案超详细教程(非Docker版)》Streamlit是一款强大的Python框架,专为机器学习及数据可视化打造,:本文主要介绍Python+St... 目录一、针对 Alibaba Cloud linux/Centos 系统的完整部署方案1. 服务器基础配置(阿里

SpringBoot+Vue3整合SSE实现实时消息推送功能

《SpringBoot+Vue3整合SSE实现实时消息推送功能》在日常开发中,我们经常需要实现实时消息推送的功能,这篇文章将基于SpringBoot和Vue3来简单实现一个入门级的例子,下面小编就和大... 目录前言先大概介绍下SSE后端实现(SpringBoot)前端实现(vue3)1. 数据类型定义2.

SpringBoot整合Kafka启动失败的常见错误问题总结(推荐)

《SpringBoot整合Kafka启动失败的常见错误问题总结(推荐)》本文总结了SpringBoot项目整合Kafka启动失败的常见错误,包括Kafka服务器连接问题、序列化配置错误、依赖配置问题、... 目录一、Kafka服务器连接问题1. Kafka服务器无法连接2. 开发环境与生产环境网络不通二、序

Spring Boot 集成 mybatis核心机制

《SpringBoot集成mybatis核心机制》这篇文章给大家介绍SpringBoot集成mybatis核心机制,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值... 目录Spring Boot浅析1.依赖管理(Starter POMs)2.自动配置(AutoConfigu

Spring IOC核心原理详解与运用实战教程

《SpringIOC核心原理详解与运用实战教程》本文详细解析了SpringIOC容器的核心原理,包括BeanFactory体系、依赖注入机制、循环依赖解决和三级缓存机制,同时,介绍了SpringBo... 目录1. Spring IOC核心原理深度解析1.1 BeanFactory体系与内部结构1.1.1