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 注意一點,你需要在自己的資料庫表裡面進行查詢數據
今天分享的內容就到這裡結束了,上面的程式碼配置好,就可以運行了。