SpringBoot系列:Spring Boot集成MyBatis,xml配置文件方式

Spring Boot集成MyBatis——注解方式 MyBatis是支持定制化SQL、存储过程以及高级映射的优秀的持久层框架,避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。Spring Boot是能支持快速创建Spring应用的Java框架。本文通过一个例子来学习Spring Boot如何集成MyBatis,而且过程中不需要XML配置。 创建数据库 本文的例子使用Mysql数据库,首先创建一个用户表,执行sql语句如下:... 阅读详情

一、关于MyBatis

MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。

MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录。

MyBatis的简单和其使用sql灵活性,以及原生sql所带来的高性能,MyBatis备受欢迎,尤其是对效率有着苛刻要求的新型互联网公司。

二、示例演示

在Spring Boot中,MyBatis的使用和别的框架里没有任何变化,Spring Boot仅仅简化了MyBatis的集成。MyBatis开发有两种方式,一种是基于注解sql,一种是基于xml配置文件sql。

这一节主要讲解基于xml配置文件sql的方式。

同样,我们先引入pom依赖,即mybatis-spring-boot-starter。

<!--mysql连接-->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
</dependency>

<!--druid连接池-->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.0.29</version>
</dependency>

<!--mybatis依赖-->
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>1.3.2</version>
</dependency>

然后配置文中,主要是设置configuration.log-impl打印sql,mapperLocations表示xml配置文件的位置,由于是基于配置文件的方式,所以这里不能省略,这里我将mapper文件放到了resources目录下的mybatis目录。

如果是放在java目录,注意修改pom文件编译打包配置包含xml文件,因为不配置可能存在mapper文件编译后不存在的问题。
在这里插入图片描述
我们的User实体,就是简单的PO对象,不需要任何额外配置。

@Data
public class User {

    private Integer id;

    private String username;

    private String password;

}

UserApi类,即controller。

@RestController
@RequestMapping("user")
public class UserApi {

    @Autowired
    private UserService userService;

    /**
     * 添加用户
     * @param user
     */
    @PostMapping("addUser")
    public String addUser(User user){
        userService.addUser(user);
        return "添加用户成功";
    }

    /**
     * 删除用户
     * @param id
     */
    @GetMapping("delUser")
    public String delUser(@RequestParam(value = "id") int id){
        userService.delUser(id);
        return "删除用户成功";
    }

    /**
     * 修改用户信息
     * @param user
     */
    @PostMapping("updateUser")
    public String updateUser(User user){
        userService.updateUser(user);
        return "修改用户成功";
    }

    /**
     * 获取用户信息
     * @param id
     * @return
     */
    @GetMapping("getUser")
    public User getUser(@RequestParam(value = "id") int id){
        return userService.getUser(id);
    }

    @GetMapping("getUsers")
    public List<User> getUsers(){
        List<User> users = userService.findAll();
        return users;
    }

    @GetMapping("getUserByUP")
    public User getUserByUP(@RequestParam(value = "username") String username, @RequestParam(value = "password") String password){
        return userService.getUser(username, password);
    }

}

UserService类,由于简单,省略了其接口。

@Service
public class UserService {

    @Autowired
    private IUserDao userDao;

    /**
     * 添加用户
     * @param user
     */
    public void addUser(User user){
        userDao.add(user);
    }

    /**
     * 删除用户
     * @param id
     */
    public void delUser(int id){
        userDao.del(id);
    }

    /**
     * 修改用户信息
     * @param user
     */
    public void updateUser(User user){
        userDao.update(user);
    }

    /**
     * 获取用户信息
     * @param id
     * @return
     */
    public User getUser(int id){
        return userDao.find(id);
    }

    /**
     * 获取全部用户信息
     * @return
     */
    public List<User> findAll() {
        return userDao.findAll();
    }

    /**
     * 获取用户
     * @param username
     * @param password
     * @return
     */
    public User getUser(String username, String password) {
        User user = userDao.findByUsernameAndPassword(username, password);
        return user;
    }

}

不同于基于注解sql的方式,基于xml配置文件时,具体数据库操作逻辑都存在于xml配置文件中,所以我们仅仅需要提供接口和抽象方法即可。

@Mapper
public interface IUserDao {

    /**
     * 添加用户
     * @param user
     * @return
     */
    int add(User user);

    /**
     * 根据id删除用户
     * @param id
     * @return
     */
    int del(@Param("id") int id);

    /**
     * 更新用户信息
     * @param user
     * @return
     */
    int update(User user);

    /**
     * 根据id查找用户
     * @param id
     * @return
     */
    User find(@Param("id") int id);

    /**
     * 获取全部用户
     * @return
     */
    List<User> findAll();

    /**
     * 根据用户名和密码查找用户
     * @param username
     * @param password
     * @return
     */
    User findByUsernameAndPassword(@Param("username") String username, @Param("password") String password);

}

@Mapper还是一样,该注解表明这是dao层接口,也可以在启动类上使用@MapperScan,这样就不用为每个dao层接口再单独使用@Mapper注解了。

@MapperScan("com.yanger.*.dao")
@SpringBootApplication
public class SpringbootApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringbootApplication.class, args);
    }

}

基于xml配置文件方式,最后就是mybatis的重点了,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.yanger.mybatis.dao.IUserDao">

    <!-- 通用查询结果对象-->
    <resultMap id="BaseResultMap" type="com.yanger.mybatis.po.User">
        <id column="id" property="id"/>
        <result column="username" property="username"/>
        <result column="password" property="password"/>
    </resultMap>

    <sql id = "Base_Column">
        id, username, password
    </sql>

    <!--添加用户-->
    <insert id="add" parameterType="com.yanger.mybatis.po.User">
        insert into user(username, password) values(#{username}, #{password})
    </insert>

    <!--根据id删除用户-->
    <delete id="del">
        delete from user where id = #{id}
    </delete>

    <!--更新用户信息-->
    <update id="update" parameterType="com.yanger.mybatis.po.User">
        update user set username = #{username}, password = #{password} where id = #{id}
    </update>

    <!-- 根据id查找用户 -->
    <select id="find" resultMap="BaseResultMap" parameterType="map">
        select <include refid="Base_Column"/> from user where id = #{id}
    </select>

    <!--获取全部用户-->
    <select id="findAll" resultMap="BaseResultMap">
        select * from user
    </select>

    <!--根据用户名和密码查找用户-->
    <select id="findByUsernameAndPassword" resultMap="BaseResultMap" parameterType="map">
        select <include refid="Base_Column"/> from user where username = #{username} and password = #{password}
    </select>
</mapper>

xml配置文件中的sql语句和基于注解方式没有太大差别,主要是mybatis的标签及相应属性使用,如resultMap、insert、delete、update、select、sql等。

源码地址:https://github.com/imyanger/springboot-project/tree/master/p8-springboot-mybatis-xml

spring boot整合mybatis的xml方式 1、在pom.xml里面除了引入基本的父工程和starter所生成的依赖外,还需引入如下坐标 &lt;dependency&gt; &lt;groupId&gt;mysql&lt;/groupId&gt; &lt;artifactId&gt;mysql-connector-java&lt;/artifactId&gt; &lt;scope&gt;runtime&lt;/... 阅读详情

相关推荐

Spring Boot教程 - Spring Boot集成Mybatis(XML方式)

项目开发中不可避免需要跟数据库打交道,作者开发的项目的中广泛使用Mybatis作为ORM框架。 本文主要讲解在Spring Boot项目中 如何整合Mybatis。开发环境 JDK 1.8 Spring Boot 1.5.8.RELEASE Mybatis 3.4.4

Ricky 6466

SpringBoot 系列教程 Mybatis+xml 整合篇

MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。本文将通过实例方式,介绍下如何整合 SpringBoot + Mybatis,构建一个支持 CRUD 的 demo 工程。

程序员高级码农的博客 2192

Spring Boot 通过 XML 的方式整合 MyBatis

准备一张user表,有idnameage三个属性,其中id为主键且自增,然后插入三条数据;useridint(11) NOT NULL AUTO_INCREMENT COMMENT ‘主键’,namevarchar(50) DEFAULT NULL COMMENT ‘姓名’,ageint(11) DEFAULT NULL COMMENT ‘年龄’,idINSERT INTO user values (1,“村雨遥”,25);INSERT INTO user values (2,“张三”,26)

2501_90252633的博客 701

SpringBoot——SpringBoot整合MyBatis(注解、XML配置)

目录 一、SpringBoot整合MyBatis 二、Mybatis增删改查(使用注解方式) 三、Mybatis增删改查(XML配置方式) 一、SpringBoot整合MyBatis 跳转到目录 引入依赖 <dependencies> <dependency> <groupId>org.springframework.boot&l...

Guizy 2万+

Spring Boot 集成 MyBatis 全面讲解

ResultMap用于自定义数据库字段与 Java 对象属性的映射。它支持嵌套映射、别名和字段处理,适合复杂的对象映射场景。SqlSessionMapper配置文件和ResultMap是 MyBatis 的核心概念。通过灵活的配置和映射,MyBatis 可以高效地处理各种复杂的数据库操作需求。熟练掌握这些特性可以让开发者在项目中更高效地处理数据访问逻辑。三、Spring Boot 集成 MyBatisMyBatis 是一种轻量级的持久层框架,与 Spring Boot 集成后可以极大地提升开发效率。

m0_74824802的博客 1354

掌握Spring Boot与MyBatis的集成应用

本文还有配套的精品资源,点击获取 简介:Spring Boot与MyBatis是IT行业广泛使用的开源框架,用于构建高效灵活的Java Web应用。Spring Boot简化了初始设置和配置,而MyBatis则提供了直观的数据库操作方式。通过深入探讨两者的集成,包括依赖添加、配置、Mapper接口及XML文件定义,以及Service层实现,开发者可以构建易于维护且性能高效的...

weixin_42360846的博客 1601

Mybatis Springboot配置 基本的增删改查

文章主要是记录一次demo的搭建过程,方便以后回顾。只贴出了关键代码和指明了关键位置。不过也算是比较完整了。 springboot配置 i. pom.xml 主要是这几个依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId

linewon 1031

Spring Boot与MyBatis XML集成实战指南

Spring Boot是由Pivotal团队提供的全新框架,其设计目的是为了简化Spring应用的初始搭建以及开发过程。它使用“约定优于配置”的原则,提供了大量的默认配置,从而减少了开发者的配置工作量。MyBatis是一个用于简化Java数据库操作的持久层框架。相比于JDBC,MyBatis通过使用XML或注解来配置和映射原始类型、接口和Java POJOs(Plain Old Java Objects,普通老式Java对象)为数据库中的记录。

weixin_42607969的博客 889

SpringBoot 整合MyBatis--支持注解版和xml配置文件配置

如果我的博客能够帮到大家能够点个赞,关注一下,以后还会更新更过JavaWeb的高级技术,大家的支持就是我继续更新的动力。谢谢。         我前边的博客,写了有关于Spring和mybaitis、jpa、springData 的整合等,今天呢,使用SpringBoot和Mybatis 整合,支持2种方式的配置 mybatis 注解版 xml配置方式      接下来,我就将这俩种方...

浅瞳夜未的博客 1122

信号完整性入门:为什么工程师总爱用dB来描述衰减?

本文深入探讨了信号完整性分析中工程师偏爱使用dB(分贝)单位描述衰减的原因。dB通过对数转换,将大动态范围的乘除关系简化为加减运算,极大地方便了多级系统分析和链路预算计算。文章重点解释了-3dB点的核心意义,即功率衰减一半的临界状态,并阐述了其在评估信道带宽、插入损耗与回波损耗等关键参数中的实际应用,是高效工程思维和沟通的重要工具。

weixin_29263201的博客 386

RK3588开发板实战:从零开始移植Ubuntu 24.04(讯为SDK版)

本文详细介绍了如何在RK3588开发板上从零开始移植Ubuntu 24.04系统(讯为SDK版),涵盖开发环境准备、SDK解析、根文件系统定制、驱动适配、系统集成与烧录等全流程。通过实战案例,帮助开发者快速掌握RK3588开发板的系统移植技巧,适用于嵌入式开发与定制化Linux系统构建。

sand8的博客 437

在springboot中,利用xml配置mybatis的方法

2. 在resource目录下,创建mybatis的配置文件mybatis-config.xml和映射文件目录mapper,之后的各类映射文件都放在里面。注意,application.yml和mybatis-config.xml中都要配置数据库(驱动、url等)3. 在application.yml文件中配置如下信息。但按照博客中的关键代码和步骤创建的项目无法启动。因此经过参考其他资料,尝试出了不会报错的步骤。成功查出需要的数据库内容。1. 创建springboot工程。这个是避免报错的措施。

qq_53336526的博客 3452

从零搭建无人机仿真环境:ROS 2与Gazebo Fortress实战指南

本文提供了一份详细的无人机仿真环境搭建实战指南,基于Ubuntu 22.04系统,整合ROS 2 Humble与Gazebo Fortress两大核心工具。通过分步讲解安装、配置及桥接过程,并引入PX4飞控与XTDrone2工具链,帮助开发者快速构建一个稳定、高效的无人机算法开发与测试平台,有效降低真机测试的成本与风险。

water的专栏 430

Spring Boot教程(15)-集成mybatis

一、添加依赖 <!-- mybatis --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</arti...

Angus博客 556

宝马项目化流程标准(BMW ABC flyer requirement)

宝马项目化流程标准(BMW ABC flyer requirement)

于大博 7252

全志T113 Tina5.0开发:(零)源码下载&修改调试串口

本文章主要作为自己的笔记,如有错误欢迎指出$ repo start product-da-t113-tina-stable --all # 全部下载完成之后,创建分支运行过程可能会出现版本问题;rm -rf .repo //先删除试试( 我安装的是3.6版本)

u014428915的博客 1166

新人一看就懂:Spring Boot+Spring mvc+Mybatis的基础框架demo

Spring Boot的设计目的是来简化新Spring应用的初始搭建以及开发过程,大大减少了代码量,通过这篇文章你可以清楚的看到。这是一个基于Spring Boot的简单demo,希望读者可以通过这篇文章大概能看懂这一个简单的框架搭建。后续我会陆续更新,微服务架构(Spring Boot、Spring Cloud)、分布式架构(Dobbo+Zookeeper)、大数据架构以及源码解析等相关的文章,感兴趣的话可以关注一下。

程序员云帆哥的博客 2万+

CSAPP performance lab

CSAPP 深入理解计算机系统的performance Lab

weixin_46091531的博客 1253

Java面试-Spring Boot 整合 MyBatis:XML 与 注解方式

《Java面试200问:Spring Boot整合MyBatis全解析》 本文系统讲解了Spring Boot整合MyBatis的两种核心方式:XML配置与注解开发。通过对比分析两种方式的优劣势,配以10000+字的详细指南、丰富代码示例和直观图解,帮助开发者全面掌握MyBatis在Spring Boot项目中的应用。 文章亮点: 深入对比XML与注解方式的适用场景 详细的环境搭建与配置指南 包含动态SQL、分页等高级用法 完整用户管理系统实战案例 高频面试问题全解析 适合人群:准备Java面试的开发者、需

千淘万漉虽辛苦,吹尽狂沙始到金 2万+

Transformer 面试题及详细答案120道(1-10)-- 基础概念

本文总结了Transformer模型的10个常见面试问题及答案,涵盖了其核心结构、创新点、工作机制等关键知识点。主要内容包括:Transformer的自注意力机制和多头注意力机制创新点,相比RNN/CNN的优势,模型在《Attention Is All You Need》论文中的提出背景,以及Encoder-Decoder协同工作流程等。重点解析了位置编码的作用、长距离依赖处理能力、与传统注意力机制的区别等核心问题。每个问题都给出了简明扼要的专业解答,适合作为Transformer相关面试准备的参考资料。

大剑师兰特的GIS世界 849

Android 12.0 系统开机设置默认横屏显示

在12.0的系统产品开发中,对于产品需求来说,由于是宽屏设备所以产品需要开机默认横屏显示,开机横屏显示这就需要从两部分来实现,一部分是开机动画横屏显示,另一部分是系统显示横屏显示,从这两方面就可以做到开机默认横屏显示了。

安卓兼职framework和app工程师的博客 3743

深入解析Spring Boot集成MyBatis的多种方式

以上是三种常见的Spring Boot集成MyBatis的方式,每种方式都有其适用的场景。开发者可以根据项目需求和个人偏好选择最合适的方式。在实际项目中,可以根据项目的规模和复杂度选择合适的方式,或者根据不同的模块采用不同的集成方式。这样的灵活性使得Spring Boot与MyBatis的结合在各种场景下都能够发挥强大的作用。在本文中,我们将深入解析Spring Boot集成MyBatis的多种方式,包括XML配置、注解配置以及使用MyBatis Generator生成代码的方法。

weixin_65175398的博客 1615

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Spring Boot整合MyBatis实现简单的CRUD

这篇文章主要针对java初学者,详细介绍如何创建一个基本的springboot项目来对数据库进行crud操作。

沐雨橙风ιε的博客 4489

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Spring boot整合MyBatis-Flex实现查询、更新、新增、删除以及分页的注解与XML方式教程

阐述了在Spring Boot项目中整合MyBatis-Flex的过程,旨在实现高效、灵活的数据库操作。首先,通过添加MyBatis-Flex、MySQL驱动和Druid数据源等依赖,构建起项目的基础环境。接着,配置了Druid数据源,优化了数据库连接管理。在创建好用户表后,设计了对应的Java实体类,确保与数据库表结构的完美映射。随后,定义了Mapper接口,使用MyBatis-Flex的注解来实现增删改查操作,并通过测试类验证了功能的正确性。

qq_27628229的博客 5031

蓝牙模块HM-10手册

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

从零开始学Spring Boot系列-集成mybatis

通过以上步骤,我们成功地在Spring Boot项目中集成了MyBatis,并通过编写Mapper接口和XML映射文件,实现了数据库的操作。这只是集成MyBatis的基础示例,你可以进一步探索MyBatis的高级特性,如动态SQL、结果映射等,以满足更复杂的业务需求。同时,结合Spring Boot的其他功能,你可以构建出功能强大且易于维护的应用程序。我是代码匠心,和我一起学习更多精彩知识!!!扫描二维码!关注我,实时获取推送。源文来自:https://daimajiangxin.cn。

专注大数据与 Java 全栈技术栈。深耕 Flink 实时计算、Spring Boot 源码解析与高并发系统架构设计。拒绝浅尝辄止,坚持源码级剖析与生产环境实战复盘,致力于为开发者提供有深度的技术干货与架构思维。代码不止,匠心不息。 2061
上一篇: SpringBoot系列:Spring Boot集成MyBatis,基于注解sql方式
下一篇: SpringBoot系列:事务管理器Transactional
杨小格
博客等级 码龄10年 19粉丝 50原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值