• 超级码客 超级码客
  • 首页
  • ▾题库
    • 数据结构与算法面试题 ( 2619 + )
    • Java工程师面试题 ( 6549 + )
    • 前端工程师面试题 ( 6906 + )
    • Python工程师面试题 ( 4195 + )
    • C++工程师面试题 ( 4458 + )
    • Android工程师面试题 ( 3218 + )
    • IOS工程师面试题 ( 2330 + )
    • PHP工程师面试题 ( 3790 + )
    • C#工程师面试题 ( 3411 + )
    • Golang工程师面试题 ( 3522 + )
    • 分布式工程师面试题 ★★ ( 2847 + )
    • 运维+DevOPS工程师面试题 ( 3463 + )
    • 大数据工程师面试题 ( 3093 + )
    • 数据库工程师面试题 ( 3246 + )
    • 软件测试工程师面试题 ( 2402 + )
    • 网络通讯工程师面试题 ( 1768 + )
  • 笔试
    • 算法数据结构笔试  ( 1200 + )
    • Java 笔试题  ( 1000 + )
    • 前端笔试题  ( 800 + )
    • PHP 笔试题  ( 150 + )
    • Python 笔试题  ( 150 + )
    • C++ 笔试题  ( 1200 + )
    • C# 笔试题  ( 180 + )
    • Golang 笔试题  ( 150 + )
    • 数据库笔试题  ( 800 + )
    • 运维笔试题  ( 260 + )
    • 网络通讯笔试题  ( 900 + )
    • 分布式笔试题  ( 80 + )
    • Android 笔试题  ( 120 + )
    • IOS 笔试题  ( 120 + )
    • 大数据 笔试题  ( 160 + )
    • 软件测试笔试题  ( 100 + )
  • 宝典
  • 专栏
  • 大厂题
    • 互联网大厂面试真题资料下载 📥
    • 互联网企业历年真题卷 (面试题)
    • 互联网企业历年真题卷 (笔试题)
  • 框架
  • 校招
  • 模拟
  • 组卷
  • 导题
  • 码客
    • Java 编程 ( 1297 篇技术文摘 )
    • PHP 编程 ( 3397 篇技术文摘 )
    • Python 编程 ( 1330 篇技术文摘 )
    • 前端开发 ( 9328 篇技术文摘 )
    • C / C++ ( 1375 篇技术文摘 )
    • C# 编程 ( 904 篇技术文摘 )
    • Golang 编程 ( 1144 篇技术文摘 )
    • 数据库开发 ( 4549 篇技术文摘 )
    • Linux 运维 ( 2346 篇技术文摘 )
    • Docker容器 ( 1489 篇技术文摘 )
    • 网络安全 ( 789 篇技术文摘 )
    • Git代码协同 ( 1498 篇技术文摘 )
    • 更多分类
  • 下载
    • IT图谱资料下载
    • Java资料下载
    • PHP资料下载
    • Python资料下载
    • 前端技术资料下载
    • IOS资料下载
    • DevOps资料下载
    • 公有云资料下载
    • C++专区资料下载
    • 数据库资料下载
    • 大数据资料下载
    • 架构设计资料下载
    • 职业发展资料下载
    • 更多分类
  • 书籍
  • 简历
  • 🎁VIP
    Spring Boot中使用MyBatis实现数据访问和持久化
    2025-04-21 06:49:04  [ 作者:WBOY ]  阅读数:2029

        

    Spring Boot是一种快速开发框架,可以帮助开发人员快速搭建WEB应用程序。而MyBatis是一种优秀的ORM框架,可以简化Java与数据库之间的数据访问和持久化。本文将介绍如何在Spring Boot中使用MyBatis实现数据访问和持久化。

    一、Spring Boot集成MyBatis

    1. 添加依赖

    在pom.xml文件中添加MyBatis和MySQL依赖:

    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>1.3.1</version>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.42</version>
    </dependency>

    这里我们使用mybatis-spring-boot-starter来集成MyBatis。

    1. 配置数据源

    在application.properties中添加数据库连接属性:

    spring.datasource.url=jdbc:mysql://localhost:3306/test?useSSL=false
    spring.datasource.username=root
    spring.datasource.password=123456
    spring.datasource.driverClassName=com.mysql.jdbc.Driver

    这里我们使用MySQL数据库,并且使用root账户连接,密码为123456。

    1. 配置MyBatis

    Spring Boot默认会自动扫描mapper路径,我们只需要在application.properties中配置mapper路径即可:

    mybatis.mapper-locations=classpath:mapper/*.xml

    该配置表示mapper文件在项目的classpath下的mapper文件夹中。

    在完成以上配置后,Spring Boot就已经完成了对MyBatis的集成工作。

    二、编写实体类和Mapper

    1. 编写实体类

    定义一个User类,表示数据库中的一张用户表:

    public class User {
        private Long id;
        private String name;
        private Integer age;
        // 省略getter和setter方法
    }
    1. 编写Mapper

    定义一个UserMapper接口,用于定义User表的增删改查操作:

    public interface UserMapper {
        void saveUser(User user);
        void updateUser(User user);
        void deleteUser(Long id);
        User findUserById(Long id);
        List<User> findAllUsers();
    }

    这里我们定义了增删改查以及查询所有用户的方法。

    三、编写Mapper.xml

    接下来,我们需要编写UserMapper.xml文件,实现UserMapper中定义的操作:

    <?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.example.demo.mapper.UserMapper">
        <insert id="saveUser" parameterType="com.example.demo.entity.User">
            insert into user(name, age) values (#{name}, #{age})
        </insert>
    
        <update id="updateUser" parameterType="com.example.demo.entity.User">
            update user set name = #{name}, age = #{age} where id = #{id}
        </update>
    
        <delete id="deleteUser" parameterType="java.lang.Long">
            delete from user where id = #{id}
        </delete>
    
        <select id="findUserById" parameterType="java.lang.Long"
                resultType="com.example.demo.entity.User">
            select * from user where id = #{id}
        </select>
    
        <select id="findAllUsers" resultType="com.example.demo.entity.User">
            select * from user
        </select>
    </mapper>

    在该文件中,我们实现了UserMapper中定义的所有方法,其中parameterType表示参数类型,resultType表示返回值类型。

    四、编写Service类和控制器

    1. 编写Service类

    定义一个UserService类,用于封装对User表的操作:

    @Service
    public class UserService {
        @Autowired
        private UserMapper userMapper;
    
        public void saveUser(User user) {
            userMapper.saveUser(user);
        }
    
        public void updateUser(User user) {
            userMapper.updateUser(user);
        }
    
        public void deleteUser(Long id) {
            userMapper.deleteUser(id);
        }
    
        public User findUserById(Long id) {
            return userMapper.findUserById(id);
        }
    
        public List<User> findAllUsers() {
            return userMapper.findAllUsers();
        }
    }

    在这个类中,我们使用@Autowired注解注入了UserMapper,即可以使用UserMapper中定义的方法。

    1. 编写控制器

    定义一个UserController类,实现对用户的增删改查操作:

    @RestController
    @RequestMapping("/user")
    public class UserController {
        @Autowired
        private UserService userService;
    
        @PostMapping("/")
        public String saveUser(@RequestBody User user) {
            userService.saveUser(user);
            return "success";
        }
    
        @PutMapping("/")
        public String updateUser(@RequestBody User user) {
            userService.updateUser(user);
            return "success";
        }
    
        @DeleteMapping("/{id}")
        public String deleteUser(@PathVariable Long id) {
            userService.deleteUser(id);
            return "success";
        }
    
        @GetMapping("/{id}")
        public User getUserById(@PathVariable Long id) {
            return userService.findUserById(id);
        }
    
        @GetMapping("/")
        public List<User> findAllUsers() {
            return userService.findAllUsers();
        }
    }

    在这个类中,我们使用@RestController注解表示当前类是一个控制器,使用@RequestMapping注解指定了访问路径。同时,使用@Autowired注解注入了UserService,即可以使用UserService中定义的方法。

    五、测试

    现在,我们已经完成了整个项目的搭建和代码编写。接下来,我们可以使用Postman等工具来测试控制器中定义的API。

    使用POST请求来保存用户信息,请求体为:

                    3. 简述Mysql中表student_table(id,
    				
    					
    推荐等级: ★★★  难度: 中级
  • 4. 简述StrictMode组件的作用是 ?
    推荐等级: ★★★★  难度: 初级
  • 5. 以下代码是哪一句可能导致的编译错误? ?
    推荐等级: ★★★★  难度: 中级
  • 6. 简述数组常用的两种基本操作是( ) ?
    推荐等级: ★★★  难度: 初级
  • 7. 简述如何设计一个高效的Kylin Cube ?
    推荐等级: ★★★  难度: 中级
  • 8. 简述以下代码的运行结果为: ?
    推荐等级: ★★  难度: 中级
  • 9. 使用C/C++代码实现斐波那契数列 ?
    推荐等级: ★★  难度: 高难
  • 10. 简述AIDL的关键类,方法和工作流程 ?
    推荐等级: ★★★★  难度: 高难
  • IT 软件大厂热门真题( 现场卷 )
  • 查看更多
    •    中国平安银行-软件测试笔试题卷2021
          企业名称:平安银行   [ 图文版 ]
         奇虎360-软件测试工程师面试题卷A
          企业名称:奇虎360   [ 图文版 ]
         【笔试真题】网易游戏校招-游戏插件研发岗1
          企业名称:网易集团   [ PDF 资源 ]
         滴滴打车-算法部分试题整理收纳
          企业名称:滴滴打车   [ PDF 资源 ]
         牛客网-2022年度Java笔试题面试题卷子
          企业名称:牛客网   [ PDF 资源 ]
         深圳总部-银盛支付-Java中级研发社招面试
          企业名称:银盛支付   [ PDF 资源 ]
    
    ICP备案号:沪ICP备17025979号-8 上海勤革软件版权所有 @2021-2025

    关于我们   商务合作   用户协议   隐私协议   微信小程序   APP 下载   在线咨询

    超级码客(含 APP)成立于2021年是一款针对IT程序员,软件工程师,运维,数据库,测试,软件PM等IT技术工作者打造的面试题库平台,IT岗位技术线覆盖Java,PHP,Python,Android,IOS,Linux,分布式,大数据,云计算等20大各主流技术栈,超级码客提供超过46580道优质的面试题库,技术学习文档等为用户提供全面的IT方面面试辅助以及技术指导
    APP 备案号: ICP备案号:沪ICP备17025979号-10A , 版本号:4.6 开发者:上海勤革信息技术有限公司
    超级码客