一個項目瞭解 SpringBoot 集成 MyBatis

創建項目

首先創建一個 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
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章