干货Spring Boot系列:使用MyBatis

Spring Boot入门(12):从零开始!轻松掌握Spring Boot整合MyBatis-Plus的最佳实践! 一文吃透SpringBoot整合mybatis-plus及实战演练,赶紧来学! 阅读详情

通过优锐课核心java学习笔记中,我们可以看到,MyBatis是用于高级映射和存储过程的SQL框架。码了很多专业的相关知识, 分享给大家参考学习。

MyBatis是一个SQL映射框架,支持自定义SQL,存储过程和高级映射。
SpringBoot不为MyBatis集成提供官方支持,但是MyBatis社区为MyBatis构建了SpringBoot入门程序。

创建一个SpringBoot Maven项目并添加以下MyBatis Starter依赖项。


<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>1.0.0</version>
</dependency>

我们将重用在上一篇文章SpringBoot中创建的User.java,schema.sql和data.sql文件:使用JdbcTemplate

创建MyBatis SQL Mapper接口UserMapper.java,只需执行以下数据库操作即可:

package com.sivalabs.demo.domain;
public interface UserMapper
{
    void insertUser(User user);
    User findUserById(Integer id);
    List<User> findAllUsers();
}

我们需要创建Mapper XML文件,以定义对应Mapper接口方法的映射SQL语句的查询。

在src / main / resources / com / sivalabs / demo / mappers /目录中创建UserMapper.xml文件,如下所示:

<!DOCTYPE mapper
    PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.sivalabs.demo.mappers.UserMapper">
    <resultMap id="UserResultMap" type="User">
        <id column="id" property="id" />
        <result column="name" property="name" />
        <result column="email" property="email" />
    </resultMap>
    <select id="findAllUsers" resultMap="UserResultMap">
        select id, name, email from users
    </select>
    <select id="findUserById" resultMap="UserResultMap">
        select id, name, email from users WHERE id=#{id}
    </select>
    <insert id="insertUser" parameterType="User" useGeneratedKeys="true" keyProperty="id">
        insert into users(name,email) values(#{name},#{email})
    </insert>
</mapper>

这里要注意的几件事是:

Mapper XML中的命名空间应与Mapper接口的完全限定名称(FQN)相同
声明ID值应与Mapper接口方法名称相同。

如果查询结果列名称与bean属性名称不同,则可以使用配置在列名称及其对应的bean属性名称之间提供映射。

MyBatis还提供基于注释的查询配置,而无需Mapper XML。

我们可以创建UserMapper.java接口并使用注释配置映射的SQL,如下所示:

public interface UserMapper
{
    @Insert("insert into users(name,email) values(#{name},#{email})")
    @SelectKey(statement="call identity()", keyProperty="id",
    before=false, resultType=Integer.class)
    void insertUser(User user);
    @Select("select id, name, email from users WHERE id=#{id}")
    User findUserById(Integer id);
    @Select("select id, name, email from users")
    List<User> findAllUsers();
}

SpringBoot MyBatis入门程序提供以下MyBatis配置参数,我们可以使用这些参数自定义MyBatis设置。

mybatis.config = mybatis config file name
mybatis.mapperLocations = mappers file locations
mybatis.typeAliasesPackage = domain object's package
mybatis.typeHandlersPackage = handler's package
mybatis.check-config-location = check the mybatis configuration exists
mybatis.executorType = mode of execution. Default is SIMPLE

在application.properties中配置typeAliasesPackage和映射器位置。

mybatis.typeAliasesPackage=com.sivalabs.demo.domain
mybatis.mapperLocations=classpath*:**/mappers/*.xml

创建入口点类

SpringbootMyBatisDemoApplication.java。
@SpringBootApplication
@MapperScan("com.sivalabs.demo.mappers")
public class SpringbootMyBatisDemoApplication
{
    public static void main(String[] args)
    {
        SpringApplication.run(SpringbootMyBatisDemoApplication.class, args);
    }
}

观察到我们已经使用@MapperScan(“ com.sivalabs.demo.mappers”)注释指定在何处查找Mapper接口。

现在创建一个JUnit测试类并测试我们的UserMapper方法。

@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(SpringbootMyBatisDemoApplication.class)
public class SpringbootMyBatisDemoApplicationTests
{
    @Autowired
    private UserMapper userMapper;
    @Test
    public void findAllUsers() {
        List<User> users = userMapper.findAllUsers();
        assertNotNull(users);
        assertTrue(!users.isEmpty());
    }
    @Test
    public void findUserById() {
        User user = userMapper.findUserById(1);
        assertNotNull(user);
    }
    @Test
    public void createUser() {
        User user = new User(0, "Siva", "siva@gmail.com");
        userMapper.insertUser(user);
        User newUser = userMapper.findUserById(user.getId());
        assertEquals("Siva", newUser.getName());
        assertEquals("siva@gmail.com", newUser.getEmail());
    }
}

你可以在http://www.mybatis.org/spring/上了解有关MyBatis和Spring集成的更多信息

文章写到这里,欢迎朋友们交流讨论。

STM32的DMA模块及Protues仿真实验 (一)DMA简介      DMA(Direct Memory Access,直接存储器访问), 用于在外设与存储器之间以及存储器与存储器之间提供高速数据传输。可以在无需任何 CPU 操作的情况下通过 DMA 快速移动数据。这样节省的 CPU 资源可 供其它操作使用。      STM32F407共有两个 DMA 控制器,总共有 16 个数据流(每个控制器 8 个),每一个 DMA 控制器都用于管理 一个或多 阅读详情

相关推荐

Windows 10下三菱PLC控件安装报错Error Number:-119的终极解决方案(附详细步骤)

本文针对Windows 10系统安装三菱PLC控件时常见的Error Number:-119报错,提供了深度分析与终极解决方案。文章剖析了该错误源于oleaut32.dll文件版本冲突,并详细介绍了通过设置兼容性模式、手动注册DLL、直接安装MX Component以及高级系统修复等多种方法,帮助用户彻底解决此安装难题,顺利搭建PLC开发环境。

weixin_29289821的博客 333

not find typeAliasesPackage:classpath*:com/metaShare/modules/*/entity/*.class

Failed to instantiate [org.apache.ibatis.session.SqlSessionFactory]: Factory method ‘sqlSessionFactory’ threw exception; nested exception is com.baomidou.mybatisplus.exceptions.MybatisPlusException: not find typeAliasesPackage:classpath*:com/metaShare/modu

weixin_41748029的博客 1456

CP2102 USB 转 UART 模块 PCB 设计项目

不幸的是,我的笔记本电脑只有 USB 端口,所以我需要在 USB 端口和 UART 接口之间进行转换。PCB 布局将足够小,因此我们不一定需要高速布线 USB 线路,但我们将在此将其作为一个简单的示例来实现,以展示如何在这种类型的电路板上实现它。相反,我们只使用屏幕左侧的电路。在这里,我们利用对之间的间距和到 L1 上的铜灌注的距离将差分阻抗设置为目标值。初始布局分为两个部分:USB 连接器和 USB 线路的 TVS 二极管放置在电路板左侧,带有二极管 D4 和 D5 的引脚接头放置在电路板右侧。

jkh920184196的博客 2401

SpringBoot整合MyBatis坑点----type-aliases-package无效

yml配置myBatis 别名后不生效。 SpringBoot整合MyBatis坑点----type-aliases-package无效

weixin_43849636的博客 1929

【电机学复习笔记】同步电机的特性及参数的求取

同步电机的主要特性包括:空载特性、短路特性、零功率因数负载特性、外特性和调整特性。 基于以上特性我们可以实现: 从空载特性和短路特性求同步电抗的不饱和值和短路比; 从零功率因数负载特性和空载特性确定保梯电抗(定子漏抗)和电枢反应电动势

Pantrick_的博客 2万+

2024年【MCM/ICM】美国大学生数学建模竞赛优秀论文(免费下载)

美国大学生数学建模竞赛(MCM/ICM)由美国数学及其应用联合会主办,是最高的国际性数学建模竞赛,也是世界范围内最具影响力的数学建模竞赛,一般也指数学建模竞赛。赛题内容涉及经济、管理、环境、资源、生态、医学、安全、等众多领域。竞赛要求三人(本科生和研究生均可参加)为一组,在四天时间内,就指定的问题完成从建立模型、求解、验证到论文撰写的全部工作,体现了参赛选手研究问题、解决方案的能力及团队合作精神。为现今各类数学建模竞赛之鼻祖。

weixin_43608857的博客 1841

myBaties集到springboot中,别名配置失效

我的配置 mybatis: ##如果直接这样配置启动项目会报错,错误如下 type-aliases-package: com.yao.**.entity mapper-locations: classpath*:/mapper/**/**Mapper.xml,classpath*:/mapper/**Mapper.xml config-location: classpath:/config/mybaties.cfg.xml 报错信息(有删减): org.springframework.bea

yao_1996的博客 1690

H.264 Profile与Level详解:如何为不同应用场景选择合适的编码配置

本文深入解析了H.264编码标准中的Profile与Level概念,指导开发者如何为不同应用场景选择合适的配置。文章对比了Baseline、Main和High三大Profile的特性与适用场景,并解释了Level如何限定视频的分辨率、帧率与码率上限。通过实战指南,帮助读者在视频通话、在线点播和专业制作等场景中,平衡画质、兼容性与性能,实现高效编码。

rgv2345678的博客 238

type-aliases-package不生效问题记录

yml文件配置后,但在mapper.xml中通过parameterType使用却并未生效。在resource目录下,新建config.xml,并配置别名。

m0_50932526的博客 2438

CloudCompare点云变换保姆级教程:从平移、旋转到绕任意点旋转,一次搞定

本文提供CloudCompare点云变换的全面教程,涵盖从基础平移、旋转到绕任意点旋转的高级技巧。通过详细的操作步骤和实战案例,帮助用户掌握点云数据处理的核心技能,提升三维模型对齐和变换的效率与精度。

weixin_28717969的博客 291

SQL中的时间计算:员工每日工作时长

摘要:本文介绍了一个使用SQL查询计算员工每日工作时长的实用方法。通过分析包含员工打卡记录的数据库表,利用CTE(公共表表达式)将日期分组,计算最早和最晚打卡时间差,最终以"小时:分钟"格式输出工作时长。该方法适用于每日两次打卡的场景,并提示了处理漏打卡等特殊情况时的注意事项,为企业考勤管理提供了有效的数据支持方案。(148字)

m0_74337424的博客 412

mybatis-plus的mapper.xml路径配置:Invalid bound statement (not found):...

起初是这样的配置,没什么问题,区别就是平时是resources/mapper/xxxMapper.xml,今天换了resources/mybatis/mapper/xxxMapper,xml 所以在application.yml中这样配置 mybatis: type-aliases-package: com.jjj.springcloud.pojo #没有这句,parameterType="Dept"就得写成parameterType="com.jjj.springcloud.pojo.Dept"

qq_42438330的博客 1920

自抗扰控制(ADRC)理论与工程实践:8.1 自适应ADRC与参数在线整定

自适应自抗扰控制(AADRC)针对传统固定参数ADRC在动态变化系统中的局限性,提出通过在线调整关键参数(如观测器带宽ω₀、控制器带宽ω_c)以适应对象动态变化。主要方法包括基于稳定性理论的自适应律设计和基于性能指标的优化调节,前者保证闭环稳定但设计复杂,后者通过梯度搜索或模糊规则实现性能优化但缺乏严格稳定性证明。当前挑战在于非线性时变系统的稳定性分析、参数变化速率限制及工程实现的计算负担。AADRC拓展了ADRC在变参数系统(如无人机、软体机器人)中的应用,是迈向自主智能控制的关键技术。

技术工作者 215

Spring Boot干货系列:(十一)数据存储篇-Spring Boot整合Mybatis通用Mapper插件

前言上次介绍了Spring Boot中Mybatis的简单整合,本篇深入来结合通用Mapper、Mybatis Geneator以及分页PageHelper来打造适合企业开发的模板框架。正文项目框架还是跟上一篇一样使用Spring Boot的ace后端模板,不过最近在使用vue,所以前端引用了vue进来改写,代码变得更加简洁。项目配置:Spring Boot: 1.5.9.RELEASE Mave

嘟爷java超神学堂 3619

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Spring Boot干货系列:数据存储篇-SQL关系型数据库之MyBatis的使用

Spring Boot干货系列:数据存储篇-SQL关系型数据库之MyBatis的使用 前言 上篇我们介绍了Spring Boot对传统JdbcTemplate的集成,这次换一下,介绍下Spring Boot中如何集成MyBatis。这里分别介绍注解方式以及XML方式的整合。喜欢哪种方式自己选择。 正文 项目框架还是跟上一篇一样使用Spring Boot的ace后端模板,你可以基于它来...

zhangbijun1230的专栏 444

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

文章标题Spring Boot干货系列:(十一)数据存储篇-Spring Boot整合Mybatis通用Mapper插件

前言上次介绍了Spring Boot中Mybatis的简单整合,本篇深入来结合通用Mapper、Mybatis Geneator以及分页PageHelper来打造适合企业开发的模板框架。正文项目框架还是跟上一篇一样使用Spring Boot的ace后端模板,不过最近在使用vue,所以前端引用了vue进来改写,代码变得更加简洁。项目配置: Spring Boot: 1.5.9.RELEASE

嘟嘟MD的专栏 1430

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Spring Boot干货系列:(九)数据存储篇-SQL关系型数据库之MyBatis的使用

前言上篇我们介绍了Spring Boot对传统JdbcTemplate的集成,这次换一下,介绍下Spring Boot中如何集成MyBatis。这里分别介绍注解方式以及XML方式的整合。喜欢哪种方式自己选择。正文项目框架还是跟上一篇一样使用Spring Boot的ace后端模板,你可以基于它来跟着博主一起来调整代码,如果没看过上一篇,那就下载本篇源码研究吧。跟上篇一样先添加基础的依赖和数据源。添加

嘟爷java超神学堂 794

干货必看|Spring Boot整合MyBatis框架详解

Spring Boot默认采用整合Spring Data的方式统一处理数据访问层,通过添加大量自动配置,引入各种数据访问模板xxxTemplate以及统一的Repository接口,从而达到简化数据访问层的操作。引入的druid-spring-boot-starter依赖,是阿里巴巴为了迎合Spring Boot项目而适配的Druid数据源启动器,当在pom.xml文件中引入该启动器后,不需要再进行其他额外配置,Spring Boot项目会自动识别配置Druid数据源。然后编写数据库表对应的实体类。

希望我的博客,能帮上你解决学习中工作中所遇到的问题 1518

Spring Boot 集成 MyBatis-Plus 完整教程(从建项目到跑通)

单表操作不用写SQL。BaseMapper 已经封装好了常用的增删改查,开发效率提升很多。如果你还在手写大量XML,值得试试这款工具。

DoubleZ137的博客 240
上一篇: 总结分享-使用ELK堆栈部署Kafka(part:2)
下一篇: 小白必须要懂的MongoDB:基础知识总结
程序员plus
博客等级 码龄8年 41粉丝 151原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值