java之springboot整合mybatis

  • 2019 年 11 月 14 日
  • 筆記

今天我們來分享一下操作資料庫常用的ORM框架-mybatis,其實整理這篇文章是自己想寫點內容進來,因為原來寫的程式程式碼都放在了gitHub上面,自己之前寫的文章大部分都是java的一些內容,沒有涉及到框架的內容。

這樣自己覺得可以幫助需要的人儘快入門一些框架基礎吧。希望可以對需要的人有所幫助,避免找了好長時間是跑不起來的示常式序,費時費力不說,心情估計也是會受到一些影響,所以這篇文章就出現了。

首先自己使用的工具是idea,java版本是1.8的。好了我們開始我們的教程吧。首先你要會在idea上面建立一個web項目,不會的可以看下這篇文章java之JdbcTemplate入門教程,這篇文章可以幫你快速建立一個可以跑起來的web項目,希望可以幫助到你,接下來我們看下示常式序了。

首先,我們的pom文件的內容如下

<?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.2.1.RELEASE</version>          <relativePath/> <!-- lookup parent from repository -->      </parent>      <groupId>com.wpw</groupId>      <artifactId>mybatis-sqlsession</artifactId>      <version>0.0.1-SNAPSHOT</version>      <name>mybatis-sqlsession</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-data-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.1</version>          </dependency>            <dependency>              <groupId>mysql</groupId>              <artifactId>mysql-connector-java</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>          <dependency>              <groupId>org.projectlombok</groupId>              <artifactId>lombok</artifactId>              <version>1.18.8</version>          </dependency>      </dependencies>        <build>          <plugins>              <plugin>                  <groupId>org.springframework.boot</groupId>                  <artifactId>spring-boot-maven-plugin</artifactId>              </plugin>          </plugins>      </build>    </project>

其實pom文件裡面配置的都是我們環境需要依賴的jar包,這樣我們的項目配置資訊就配置好了一部分,接下來,我們需要配置一下連接mysql環境資訊的配置。

在application.properties配置文件裡面進行配置。

server.port=8080  spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver  spring.datasource.url=jdbc:mysql://自己mysql伺服器ip地址:3306/mybatis?characterEncoding=utf-8&useSSL=false  spring.datasource.username=root  spring.datasource.password=123456  ##mybatis配置資訊  mybatis.mapper-locations=classpath:mapper/*.xml  mybatis.type-aliases-package=com.wpw.mybatissqlsession  mybatis.configuration.map-underscore-to-camel-case=true

好了,環境資訊大致上就是這些,接下來我們就開始提供我們的示常式序。

首先,一般web項目的請求流程就是controller介面層,service業務邏輯層,dao資料庫層。

我們看下我們的controller層寫的程式碼吧,主要是調用UserService介面提供的方法進行查詢資料庫的數據,由於本篇文章只是寫了一下查詢的用法,不涉及到其它的操作,因為在我看來,你會了查詢就會了其它的操作。

package com.wpw.mybatissqlsession;    import org.apache.ibatis.session.SqlSession;  import org.springframework.beans.factory.annotation.Autowired;  import org.springframework.util.CollectionUtils;  import org.springframework.web.bind.annotation.GetMapping;  import org.springframework.web.bind.annotation.RestController;    import java.util.List;    /**   * @author 微信公眾號~後端Coder   */  @RestController  public class UserController {      private final UserService userService;      private final SqlSession sqlSession;      @Autowired      public UserController(UserService userService, SqlSession sqlSession) {          this.userService = userService;          this.sqlSession = sqlSession;      }        /**       * 獲取集合數據User資訊       *       * @return 返回集合User數據       */      @GetMapping(value = "/findAll")      public List<User> findAll() {          UserMapper userMapper = sqlSession.getMapper(UserMapper.class);          List<User> userList = userMapper.findAll();          if (!CollectionUtils.isEmpty(userList)){              for (User user:userList) {                  System.out.println(user);              }          }          return userService.findAll();      }      @GetMapping(value = "/findAllUser")      public List<User> findAllUser() {            return userService.findAllUser();      }  }  

然後我們繼續看下我們的業務邏輯層介面提供的方法。

package com.wpw.mybatissqlsession;    import java.util.List;    public interface UserService {      /**       * 返回集合的數據       * @return  返回查詢到的集合數據       */      List<User> findAll();      /**       * 返回集合的數據       * @return  返回查詢到的集合數據       */      List<User> findAllUser();  }

一般我們定義一個介面都會使用一個實現類去實現這個介面,這樣解耦合就非常明確了,希望這句話可以幫助到你。

package com.wpw.mybatissqlsession;    import org.springframework.beans.factory.annotation.Autowired;  import org.springframework.stereotype.Service;    import javax.annotation.Resource;  import java.util.List;    @Service  public class UserServiceImpl implements UserService{      @Resource      @Autowired      private   UserMapper userMapper;        public UserServiceImpl(UserMapper userMapper) {          this.userMapper = userMapper;      }        @Override      public List<User> findAll() {          return userMapper.findAll();      }        @Override      public List<User> findAllUser() {          return  userMapper.findAllUser();      }    }

上面的業務邏輯層基本上就結束了,接下來我們看下操作資料庫數據的dao層,也就是UserMapper這個介面。

package com.wpw.mybatissqlsession;    import org.apache.ibatis.annotations.Mapper;  import org.apache.ibatis.annotations.Result;  import org.apache.ibatis.annotations.Results;  import org.apache.ibatis.annotations.Select;  import org.springframework.stereotype.Component;  import org.springframework.stereotype.Repository;    import java.util.List;    /**   * @author pc   */  @Component  @Repository  @Mapper  public interface UserMapper {      /**       * 返回集合數據       *       * @return 返回集合User數據       */        List<User> findAll();        @Select(value = "select * from user ")      @Results({              @Result(column = "id", property = "id"),              @Result(column = "username", property = "username"),              @Result(column = "password", property = "password")      })      List<User> findAllUser();  }

上面兩個方法都是查詢user表數據的內容,一個是基於註解的方式實現的,一個基於xml方式操作的,其實這兩種方式是大部分企業常用的,但是自己喜歡註解這種方式,所以自己寫了註解的方式提供給需要的人。

我們的UserMapper.xml放在的位置是在resoureces下面的,在resources文件下下面我們定義mapper文件夾,在mapper文件夾下面我們定義一個UserMapper.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.wpw.mybatissqlsession.UserMapper">      <select id="findAll" resultType="com.wpw.mybatissqlsession.User">           select * from user;      </select>  </mapper>

注意一點,我們定義的UserMapper.xml文件的名字要和上面的UserMapper介面的名字保持一致,這是需要注意的點。

UserMapper.xml文件的位置放置其實是隨意的,但是你需要在上面連接mysql伺服器配置裡面進行相應的配置,不然會容易出現錯誤。也就是下面這段配置資訊。

##mybatis配置資訊  mybatis.mapper-locations=classpath:mapper/*.xml  mybatis.type-aliases-package=com.wpw.mybatissqlsession  mybatis.configuration.map-underscore-to-camel-case=true

上面的classpath路徑值得就是resources文件下下的路徑,這個需要注意。

好了,上面的內容就配置好了,到這還沒結束,還有一個實體類定義,一個表結構資訊。

package com.wpw.mybatissqlsession;    public class User {      private Long id;      private String username;      private String password;        public Long getId() {          return id;      }        public void setId(Long 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;      }        @Override      public String toString() {          return "User{" +                  "id=" + id +                  ", username='" + username + ''' +                  ", password='" + password + ''' +                  '}';      }  }

上面的是實體類的定義,下面的是需要的表結構定義語句。

create table user(      -> id int(11),      -> name varchar(32),      -> age int(3))engine=InnoDB;

到這裡我們整個mybatis的流程就結束了,看下我們如何訪問的介面的。

http://localhost:8080/findAllUser    http://localhost:8080/findAll  注意一點,你需要在自己的資料庫表裡面進行查詢數據

今天分享的內容就到這裡結束了,上面的程式碼配置好,就可以運行了。