Springboot 整合 Mybatis

第1关:Springboot 整合 Mybatis

任务描述

本关任务:实现 Springboot 整合 Mybatis。

相关知识

为了完成本关任务,你需要掌握:

  1. 什么是 Mybatis;
  2. 为什么用 Mybatis;
  3. Springboot 整合 Mybatis。
什么是 Mybatis

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

为什么用 Mybatis

Mybatis 有如下优点:

  1. MyBatis 是免费且开源的。与 JDBC 相比,减少了 50% 以上的代码量。
  2. MyBatis 是最简单的持久化框架,小巧并且简单易学。
  3. MyBatis 相当灵活,不会对应用程序或者数据库的现有设计强加任何影响,SQL 写在 XML 中,和程序逻辑代码分离,降低耦合度,便于同一管理和优化,提高了代码的可重用性。
  4. 提供 XML 标签,支持编写动态 SQL 语句。
  5. 提供映射标签,支持对象与数据库的 ORM 字段关系映射。
  6. 支持存储过程。MyBatis 以存储过程的形式封装 SQL,可以将业务逻辑保留在数据库之外,增强应用程序的可移植性、更易于部署和测试。

当然,Mybatis 缺点有如下:

  1. 编写 SQL 语句工作量较大,对开发人员编写 SQL 语句的功底有一定要求。
  2. SQL 语句依赖于数据库,导致数据库移植性差,不能随意更换数据库。
Springboot 整合 Mybatis
  1. 导入依赖:
     
      
    1. <!--web项目依赖-->
    2. <dependency>
    3. <groupId>org.springframework.boot</groupId>
    4. <artifactId>spring-boot-starter-web</artifactId>
    5. </dependency>
    6. <!--mybatis依赖-->
    7. <dependency>
    8. <groupId>org.mybatis.spring.boot</groupId>
    9. <artifactId>mybatis-spring-boot-starter</artifactId>
    10. <version>2.1.4</version>
    11. </dependency>
    12. <!--mysql依赖-->
    13. <dependency>
    14. <groupId>mysql</groupId>
    15. <artifactId>mysql-connector-java</artifactId>
    16. <scope>runtime</scope>
    17. </dependency>
  2. 配置数据源:
     
      
    1. spring:
    2. datasource:
    3. #链接地址,指定编码格式,指定时区
    4. url: jdbc:mysql://127.0.0.1:3306/mistore?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&useAffectedRows=true
    5. #用户名
    6. username: root
    7. #密码
    8. password: 123123
    9. #驱动包地址
    10. driver-class-name: com.mysql.cj.jdbc.Driver
  3. 配置 Mybaits:
    1. 配置包扫描
       
          
      1. #配置mybatis
      2. #pojo别名扫描包
      3. mybatis.type-aliases-package=com.lxc.entity
      配置了别名包扫描后就可以直接使用类名且不区分大小写,如下代码:
       
          
      1. <select id="findUser" parameterType="int" resultType="user">
      2. select * from users where user_id=#{user_id}
      3. </select>
      因为配置了别名包扫描所以可以直接 parameterType="user",否则就要直接使用类名地址,如下写法:
       
          
      1. resultType="com.lxc.entity.User"
    2. 配置 mybatis 映射文件:也就是使用 xml 式 sql 时的 xml 文件地址。
       
          
      1. mybatis.mapper-locations=classpath:dao/*.xml
      示意图如下:

  4. 注解配置:
    1. 在 dao 层文件里加入 @Mapper 注解,如下:
       
          
      1. @Mapper
      2. public interface UserDao {
      3. User findUser(int user_id);
      4. }
    2. 也可以不使用 @Mapper 注解,使用 @Repository 注解把 dao 文件注册到容器,同时在 Application.java 项目启动文件里加入 @MapperScan("com.lxc.dao") 注解扫描 dao 层,如下:
       
          
      1. @Repository
      2. public interface UserDao {
      3. User findUser(int user_id);
      4. }
      5. @MapperScan("com.lxc.dao")
      6. public class Application {
      7. public static void main(String[] args) {
      8. SpringApplication.run(Application.class, args);
      9. }
      10. }

编程要求

在右侧编辑器 application.properties、application-dev.yaml、UserDao.java、Application.java 文件里 Begin-End 处根据提示补充代码。

测试说明

平台会对你编写的代码进行测试:发送请求检验结果集是否正确。

预期输出:

 
  1. {"product_id":1,"product_name":"Redmi K30","category_id":1,"product_title":"120Hz流速屏,全速热爱","product_intro":"120Hz高帧率流速屏/ 索尼6400万前后六摄 / 6.67'小孔径全面屏 / 最高可选8GB+256GB大存储 / 高通骁龙730G处理器 / 3D四曲面玻璃机身 / 4500mAh+27W快充 / 多功能NFC","product_picture":"public/imgs/phone/Redmi-k30.png","product_price":2000.00,"product_selling_price":1599.00,"product_num":10,"product_sales":0,"status":1}

开始你的任务吧,祝你成功!

application.properties

#指定生效的配置文件
spring.profiles.active=dev
##################Begin##################
#配置mybatis
#pojo别名扫描包
mybatis.type-aliases-package=com.lxc.entity
#加载mybatis映射文件
mybatis.mapper-locations=classpath:dao/*.xml 
##################End##################

application-dev.yaml

#####################配置数据源#####################
#####################Begin#####################
spring:
  datasource:
    #链接地址,指定编码格式,指定时区
    url: jdbc:mysql://127.0.0.1:3306/mistore?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&useAffectedRows=true
    #用户名
    username: root
    #密码
    password: 123123
    #驱动包地址
    driver-class-name: com.mysql.cj.jdbc.Driver 
#####################End#####################

UserDao.java

package com.lxc.dao;

import com.lxc.entity.User;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;

//补充注解
/*******************Begin*******************/
@Repository
/*******************End*******************/
public interface UserDao {
    User findUser(int user_id);
}

Application.java

package com.lxc;


import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;


@SpringBootApplication
//补充注解
/************************Begin************************/
@MapperScan("com.lxc.dao")
/************************End************************/
public class Application {

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

}

加油哦,同学们!

  • 6
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值