一个项目了解 SpringBoot 集成 MyBatis

SpringBoot 知识点目录: SpringBoot 核心知识点整理!

创建项目

首先创建一个 springboot集成mybatisMaven - WebApp 项目;

默认的项目结构是这样的:在这里插入图片描述
本着 约定大于配置 的原则,我们要修改成 springboot 标准项目结构:

友情提示:
java 目录建完后要 右键 -> Mark Dictory As -> Sources Root
resources 目录建完后要 右键 -> Mark Dictory As -> Resources Root
test.java 目录建完后要 右键 -> Mark Dictory As -> Test Sources Root
test.resources 目录建完后要 右键 -> Mark Dictory As -> Test Resources Root

test.javatest.resources 用不到可以不创建。
在这里插入图片描述
Application.java 在引入完依赖以后再写。

1.引入依赖

首先 继承springboot父项目引入web支持lombook的依赖

这些依赖的最新版都可以在这个网站查到:MavenRepository

<!--继承父项目-->
<parent>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-parent</artifactId>
  <version>2.2.5.RELEASE</version>
</parent>
<!--引入web支持包-->
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--引入lombook-->
<dependency>
  <groupId>org.projectlombok</groupId>
  <artifactId>lombok</artifactId>
  <version>1.18.8</version>
  <scope>provided</scope>
</dependency>

mybatis-spring-boot-starter 依赖

然后引入 mybatis-spring-boot-starter 的依赖,可以在这个网站查询最新的依赖:mybatis-spring-boot-starter 依赖

说明:由于 springboot 整合 mybatis 版本中默认依赖 mybatis,因此不需要额外引入 mybatis 版本,否则会出现冲突。

<!--整合mybatis-->
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.1.2</version>
</dependency>

<dependency>
	<groupId>com.alibaba</groupId>
	<artifactId>druid</artifactId>
	<version>1.1.12</version>
</dependency>

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.38</version>
</dependency>

建立入口类 Application

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

完整的 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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.yusael</groupId>
  <artifactId>springboot集成mybatis</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>war</packaging>

  <name>springboot集成mybatis Maven Webapp</name>
  <!-- FIXME change it to the project's website -->
  <url>http://www.example.com</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.7</maven.compiler.source>
    <maven.compiler.target>1.7</maven.compiler.target>
  </properties>
  <!--继承父项目-->
  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.2.5.RELEASE</version>
  </parent>
  <dependencies>
    <!--引入web支持包-->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    
    <!--引入lombook-->
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <version>1.18.8</version>
      <scope>provided</scope>
    </dependency>
    
    <!--整合mybatis-->
    <dependency>
      <groupId>org.mybatis.spring.boot</groupId>
      <artifactId>mybatis-spring-boot-starter</artifactId>
      <version>2.1.2</version>
    </dependency>

    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>druid</artifactId>
      <version>1.1.12</version>
    </dependency>

    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.38</version>
    </dependency>
  </dependencies>

  <build>
    <finalName>springboot集成mybatis</finalName>
    <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
      <plugins>
        <plugin>
          <artifactId>maven-clean-plugin</artifactId>
          <version>3.1.0</version>
        </plugin>
        <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
        <plugin>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.8.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.22.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-war-plugin</artifactId>
          <version>3.2.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-install-plugin</artifactId>
          <version>2.5.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>2.8.2</version>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
</project>

2.配置文件

修改配置文件 application.properties

server.servlet.context-path=/sm

数据库配置文件:

#指定连接池类型
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
#指定驱动
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
#指定url
spring.datasource.url=jdbc:mysql://localhost:3306/sm
#指定用户名
spring.datasource.username=root
#指定密码
spring.datasource.password=1234

加入mybatis配置

mybatis 的配置:

#指定mapper配置文件位置
mybatis.mapper-locations=classpath:/com/yusael/mapper/*.xml
#指定起别名来的类
mybatis.type-aliases-package=com.yusael.entity

在入口类 Application 中添加 @MapperScan

@SpringBootApplication
@MapperScan("com.yusael.dao")
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

完整的配置文件

server.servlet.context-path=/sm

#指定连接池类型
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
#指定驱动
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
#指定url
spring.datasource.url=jdbc:mysql://localhost:3306/sm
#指定用户名
spring.datasource.username=root
#指定密码
spring.datasource.password=1234

#指定mapper配置文件位置
mybatis.mapper-locations=classpath:/com/yusael/mapper/*.xml
#指定起别名来的类
mybatis.type-aliases-package=com.yusael.entity

3. 数据库建表

sm 数据库下建立 t_user 表:

CREATE TABLE `t_user` (
  `id` varchar(100) NOT NULL,
  `name` varchar(100) DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  `bir` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

4. 开发实体类

java.com.yusael.entity 包下创建 User 类;
在这里插入图片描述

@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class User {
    private String id;
    private String name;
    private Integer age;
    private Date bir;
}

5. 开发DAO接口以及Mapper

java.com.yusael.dao 包下创建 UserDAO 类;
resources.com.yusael.mapper 下创建 UserDAOMapper
在这里插入图片描述

public interface UserDAO {
    void save(User user);
    List<User> findAll();
}
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yusael.dao.UserDao">

    <!--save-->
    <insert id="save" parameterType="User">
        insert into t_user values (#{id}, #{name}, #{age}, #{bir})
    </insert>

    <!--findAll-->
    <select id="findAll" resultType="User">
        select id,name,age,bir from t_user
    </select>

</mapper>

6. 开发Service以及实现

java.com.yusael.service 包下创建 UserService 类、UserServiceImpl 类;
在这里插入图片描述

// 接口
public interface UserService {
    void save(User user);
    List<User> findAll();
}
// 实现
@Service
@Transactional
public class UserServiceImpl implements UserService {
    @Autowired
    private UserDAO userDAO;
    
    @Override
    public void save(User user) {
        user.setId(UUID.randomUUID().toString());
        userDAO.save(user);
    }

    @Override
    public List<User> findAll() {
        return userDAO.findAll();
    }
}

7. 编写控制器进行测试

com.yusael.controller 包下创建 UserController 类;
在这里插入图片描述

@RestController
@RequestMapping("user")
public class UserController {

    @Autowired
    private UserService userService;

    @GetMapping("findAll")
    public List<User> findAll() {
        return userService.findAll();
    }

    @GetMapping("save")
    public void save(User user) {
        userService.save(user);
    }
}

完整的项目结构

在这里插入图片描述

开始测试

运行项目;

浏览器输入 localhost:8080/sm/user/save?name=zhangsan&age=25&bir=2012/12/12 来保存一条记录。

回车,页面看不到什么效果;

浏览器再次输入 http://localhost:8080/sm/user/findAll 来查询所有记录;

可以成功的查询出刚刚添加的记录:

[
  {
    "id": "fb91da88-8a54-4f1b-83e7-09d2217ae2cb",
    "name": "zhangsan",
    "age": 25,
    "bir": "2012-12-11T16:00:00.000+0000"
  }
]

尝试多保存几条数据:
localhost:8080/sm/user/save?name=lisi&age=21&bir=2011/11/11
localhost:8080/sm/user/save?name=wangwu&age=18&bir=2014/12/11
localhost:8080/sm/user/save?name=zhaoliu&age=19&bir=2011/6/11

再次查询所有记录: http://localhost:8080/sm/user/findAll
在这里插入图片描述

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

萌宅鹿同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值