springboot项目整合mybatis基础使用

在web应用常用的持久层框架有hibernate与mybatis,两个框架都有各自的优缺点,mybatis属于轻量级框架,在互联网行业常使用mybatis作为持久层框架,在springboot项目中引入mybatis-spring-boot-starter可以实现与springboot无缝衔接,降低了框架配置,上手更容易

1.引入maven依赖,springboot web模块、MySQL-jdbc驱动、mybatis-start

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
     <!-- springboot父类 -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.6.RELEASE</version>
        <relativePath/>
    </parent>
    <groupId>com.beauhou</groupId>
    <artifactId>mybatis_spring</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>
     	<!-- 引入web模块 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!-- 引入mysql jdbc驱动 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
         <!-- 引入mybatis start-->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.1.2</version>
        </dependency>
    </dependencies>

    <build>
     <!-- 引入springbootmaven插件,打jar包必须添加此插件-->
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <fork>true</fork>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

2.配置yml文件(PS:由于引入了mybatis-spring-boot-start,其配置会在IOC容器中注入DataSource,该操作可从源码中获取,在yml配置文件中,需配置好DataSource属性,否则将无法启动)

server:
  servlet:
    context-path: /mybatis_spring
  port: 8081
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver #com.mysql.jdbc.Driver 8.0之后驱动依赖已过时
    #mysql8.0之后必须指定时区,否则连接会报错
    url: jdbc:mysql://localhost:3306/cv?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai
    username: root
    password: root
mybatis:
  #指定mapper文件位置
  mapper-locations: classpath:mybatis/mapper/*.xml

3.控制器

/**
 * @author beauhou
 * @version 1.0
 * @date 2020/8/17 0017 22:05
 */
@RestController
@RequestMapping("test")
public class TestController {
    @Autowired
    private TestService service;

    @GetMapping("queryAll")
    public Object queryAll(){
        Object list = service.queryAllList();
        return list ;
    }
}

4.service服务

/**
 * @author beauhou
 * @version 1.0
 * @date 2020/8/17 0017 22:06
 */
@Service
public class TestService {

    @Autowired
    private UserMapper userMapper;

    public Object queryAllList(){
        List<User> users = userMapper.queryAll();
        return users;
    }
}

5.持久层mapper

/**
 * @author beauhou
 * @version 1.0
 * @date 2020/8/17 0017 22:08
 */
//mapper接口必须引用此注解,注入的IOC容器中
@Repository
public interface UserMapper {   
    List<User> queryAll();
}

6.编写po实体对象


public class User {

    private Integer  id;

    private String username;

    private String password;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

7.mapper.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">
<!--namespace 指定usermapper的全类名-->
<mapper namespace="com.beauhou.mapper.UserMapper" >
<!--    指定返回数据的类型-->
    <resultMap id="BaseResultMap" type="com.beauhou.po.User" >
        <id column="id" property="id" jdbcType="BIGINT" />
        <result column="username" property="username"  />
        <result column="password" property="password" />
    </resultMap>
    <sql id="userVo" >
       select * from t_user
    </sql>
  <!--    id必须与mapper接口中的方法名一致,具体其他实现可以参照mybatis官方文档-->  
    <select id="queryAll" resultMap="BaseResultMap"  >
       select id,username,password from t_user
    </select>
</mapper>

8.文件目录结构
在这里插入图片描述

9.启动类

/**
 * @author beauhou
 * @version 1.0
 * @date 2020/8/17 0017 22:04
 */
@SpringBootApplication
//此注解非常重要,会将mapper接口扫描注册到IOC容器中
//故此接口可以在service层直接注入
@MapperScan("com.beauhou.mapper")
public class StartApplication {
    public static void main(String[] args) {
        SpringApplication.run(StartApplication.class,args);
    }
}

本篇只讲解了mybatis在springboot中基础应用,mybatis详细配置可以可以参照官方文档说明,由于mybatis每一个接口都会对应一个mapper文件,虽然有插件可以生成基础的sql操作,但是对于数据库的移植不是特别方便,于是有了针对mybatis优化的版本 ,mybatis-plus,地址:https://baomidou.com/,有兴趣的朋友可以去学习一下

猜你喜欢

转载自blog.csdn.net/qq_38318330/article/details/108065348
今日推荐