怎么在SpringBoot中使用Mybatis

怎么在SpringBoot中使用Mybatis?

在公司这么久了一直用的是SpringBoot JPA,在之前我做毕业设计的时候是Spring+SpringMVC+Mybatis(说实话都快忘记了,就记得Mybatis配置Mapper.xml了)!

现在来用Springboot来重新学习一下Mybatis,废话少说,上代码!

开发工具:IDEA
DB: PostgreSQL
  • 新建一个SpringBoot项目,设置JDK版本为1.8
    在这里插入图片描述
    在这里插入图片描述

  • 选择依赖

在这里插入图片描述

选好之后next->Finish就ok了。

  • 依赖pom.xml代码
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.3.3.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.example</groupId>
	<artifactId>demo</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>demo</name>
	<description>Demo project for Spring Boot</description>

	<properties>
		<java.version>1.8</java.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-jdbc</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter</artifactId>
			<version>2.1.3</version>
		</dependency>

		<dependency>
			<groupId>org.postgresql</groupId>
			<artifactId>postgresql</artifactId>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
			<exclusions>
				<exclusion>
					<groupId>org.junit.vintage</groupId>
					<artifactId>junit-vintage-engine</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

  • 配置yml文件
server:
  port: 8080

spring:
  datasource:
    username: root
    password: 12345
    url: jdbc:postgresql://localhost:5432/smartplm
    driver-class-name: org.postgresql.Driver


mybatis:
  # 配置Mapper.xml地址
  mapper-locations: classpath:mapping/*Mapper.xml
  # 配置实体地址
  type-aliases-package: com.example.demo.domain.entity

#showSql
logging:
  level:
    com:
      example:
        mapper : debug
  • 目录结构

在这里插入图片描述

  • 在SpringBoot启动类上面添加Mapper扫描地址
@MapperScan("com.example.demo.domain.mapper")
@SpringBootApplication
public class DemoApplication {

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

}
  • 先在PostgreSQL创建一张Book表,插入一些数据:
CREATE TABLE public.book (
	id int8 NOT NULL,
	"name" varchar NULL,
	author varchar NULL,
	CONSTRAINT book_pk PRIMARY KEY (id)
);

在这里插入图片描述

  • 创建Book实体
package com.example.demo.domain.entity;

/**
 * 2 * @Author: CDJ
 * 3 * @Date: 2020/8/21 14:44
 * 4
 */
public class BookEntity {
    Long id;
    String name;
    String author;

    public Long getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAuthor() {
        return author;
    }

    public void setAuthor(String author) {
        this.author = author;
    }

    @Override
    public String toString() {
        return "BookEntity{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", author='" + author + '\'' +
                '}';
    }
}

  • 编写Mapper映射接口BookMapper.java和BookMapper.xml文件

BookMapper.java

package com.example.demo.domain.mapper;

import com.example.demo.domain.entity.BookEntity;
import org.springframework.stereotype.Repository;

/**
 * 2 * @Author: CDJ
 * 3 * @Date: 2020/8/21 14:53
 * 4
 */
@Repository
public interface BookMapper {
    BookEntity findBook(Long id);
}

BookMapper.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.example.demo.domain.mapper.BookMapper">

    <!--type是你的实体地址-->
    <resultMap id="BaseResultMap" type="com.example.demo.domain.entity.BookEntity">
        <!-- column是你数据库的book表的栏位名, property是你的实体对应的属性名-->
        <result column="id" jdbcType="INTEGER" property="id"/>
        <result column="name" jdbcType="VARCHAR" property="name"/>
        <result column="author" jdbcType="VARCHAR" property="author"/>
    </resultMap>

    <!--id记住要对应Mapper接口的方法名,不然报找不到Mapper-->
    <select id="findBook" resultType="com.example.demo.domain.entity.BookEntity">
        <!-- 编写sql-->
        select * from book where id= #{id}
    </select>

</mapper>
  • 编写Service

BookService.java

package com.example.demo.service;

import com.example.demo.domain.entity.BookEntity;
import com.example.demo.domain.mapper.BookMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

/**
 * 2 * @Author: CDJ
 * 3 * @Date: 2020/8/21 14:51
 * 4
 */
@Service
public class BookService {
    @Autowired
    BookMapper bookMapper;

    public BookEntity findBook(Long id) {
        return bookMapper.findBook(id);
    }

}

  • 编写Controller

BookController.java

package com.example.demo.controller;

import com.example.demo.service.BookService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;

/**
 * 2 * @Author: CDJ
 * 3 * @Date: 2020/8/21 14:50
 * 4
 */
@RestController
public class BookController {
    @Autowired
    BookService bookService;

    @GetMapping(value = "getBook/{id}")
    public String getBook(@PathVariable Long id) {

        return bookService.findBook(id).toString();
    }
}

  • 最后到浏览器上面访问Controller指定的地址
    在这里插入图片描述
  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值