springboot整合mybatis实现数据库操作

10 篇文章 2 订阅
2 篇文章 0 订阅

1、创建springboot项目,过程忽略,详细参考我已写好的springboot环境搭建:https://mp.csdn.net/postedit/90175419

2、搭建好之后,大致目录如下图

3、pom.xml

<!-- jdbc两种方式 -->
<!--<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jdbc</artifactId>
</dependency>-->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.1.9</version>
</dependency>
<!-- 引入前端web,此注解不存在Controller层注解会报一系列错误 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- mybatis -->
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.1.1</version>
</dependency>
<!-- 引入mysql依赖,解决application-dev.xml中驱动driver-class-name无法加载问题 -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
</dependency>

4、application.yml

spring:
  profiles:
    active: dev

5、在resources目录下新建application-dev.yml和application-prod.yml配置文件,注意标红部分数据库使用你们自己的(有些人说中文注释会出错,看情况的,出错再找解决方案。我这里亲测通过

server:
  port: 8080    # HTTP(Tomcat) Port

spring:
  datasource:
    username: root
    password: 123456
    url: jdbc:mysql://localhost:3306/springboot?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC #数据库的连接,springboot是数据库名
    driver-class-name: com.mysql.cj.jdbc.Driver # 加载驱动

mybatis:
  mapper-locations: classpath:mapper/*Mapper.xml
  type-aliases-package: com.example.demo.entity  # mybatis自动扫描到自定义POJO,写完就可以简写了。比如:resultType="类名"

#showSql
logging:
  level:
    com:
      example:
        mapper : debug

6、application-prod.yml和application-dev.yml内容一样,项目上线将application.yml中dev修改成prod即可

7、com.example.demo新建controller、service、mapper(接口)、entity目录。resources下新建mapper(存放*Mapper.xml文件)、static、templates目录...

8、数据库结构

create table user(
   id INT(100) NOT NULL AUTO_INCREMENT,
   name VARCHAR(100) NOT NULL,
   age INT(40) NOT NULL,
   PRIMARY KEY (id)
);

9、entity

package com.example.demo.entity;

public class User {
    private Integer id;
    private String name;
    private Integer age;

    public User(Integer id, String name, Integer age) {
        this.id = id;
        this.name = name;
        this.age = age;
    }

    public User() {
    }

    public Integer getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

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

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

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

10、UserMapper(从后开始写吧,不容易出错

import com.example.demo.entity.User;
import org.springframework.stereotype.Repository;

@Repository
public interface UserMapper {
    User Sel(int id);
}

11、UserService

import com.example.demo.mapper.UserMapper;
import com.example.demo.entity.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class UserService {
    @Autowired
    private UserMapper userMapper;

    public User Sel(int id){
            return userMapper.Sel(id);
    }
}

12、UserController,这里若不是用@RestController,使用@Controller注解,在方法上务必将@ResponseBody加上,否则不报错,为什么犯错都不知道

13、resources下mapper目录中的UserMapper.xml文件(下面resultType可以直接写User,因为在application-dev.yml中已经配置过自动扫描项了。如果不加扫描,必须具体到全路径,不然报找不到错误,已经亲测,可以自己尝试一下。。

<?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目录下接口路径 -->
<mapper namespace="com.example.demo.mapper.UserMapper">
    <resultMap id="BaseResultMap" type="com.example.demo.entity.User">
        <result column="id" jdbcType="INTEGER" property="id" />
        <result column="name" jdbcType="VARCHAR" property="name" />
        <result column="age" jdbcType="INTEGER" property="age" />
    </resultMap>

<!-- 简单来说,resultType是返回的单个实例,也就是当前实例的类型
    resultMap返回的是一个List,resultMap=“BaseResultMap”,和id对应。通过映射而找到User这个类型List<User
> -->
    <select id="Sel" resultType="com.example.demo.entity.User">
        select * from user where id = #{id}
    </select>
</mapper>

14、启动类里加上注解用于给出需要扫描的mapper文件路径@MapperScan("com.example.mapper") 

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

@SpringBootApplication
@MapperScan("com.example.demo.mapper") //扫描mapper下的所有接口
public class DemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}

15、网址输入:http://localhost:8080/testBoot/getUser/2,另一种方式在UserController中写了注释,只是用于测试

http://localhost:8080/testBoot/getUser?id=2

16、注意点:UserMapper.xml中namespace对应的全路径,type对应的类全路径,resultType对应的全路径以及启动类中扫描mapper下所有接口的目录路径,别复制我的,使用自己的路径。

17、项目我已上传至百度云

链接:https://pan.baidu.com/s/138e6h801R-xu0IiNqXXsvw 
提取码:5lng

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值