Springboot+mybatis 搭建並完美整合
為了減少初學springboot的人少走些彎路,我將我個人覺得最容易操作的方法和最好用的方法介紹給大家。
第一步搭建springboot專案,可以通過建一個maven專案,也可以通過eclipse整合spring suite tool外掛。這裡通過外掛new一個springboot專案。
整合的操作步驟:eclipse --help---Eclipse Maketplace Search Find 中輸入STS 查詢的結果中點選Install安裝,有的時候會比較慢。
整合成功後我們來new一個springboot,file -new --找到spring ,點開spring
整合後就會有spring相關選項,選擇spring Sarter Project;
點next;
Package 中將com.demo改成com.main, next;
找到web勾上;生成的專案目錄如下,上圖中選的springboot的版本不同生成的目錄可能不會有點不同。
點開pom.xml檔案新增依賴;
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
</plugins>
</build>
將我上面貼出的依賴程式碼覆蓋掉下圖中pom.xml中藍色選中部分.
接下來,更新依賴下載對應的jar:右鍵專案--maven-update project,
接著新增資料庫配置;找到application.properties檔案,點開,新增如下配置
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=xxx
spring.datasource.password=xxxx
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
server.port=1111
mybatis.typeAliasesPackage=com.main
mybatis.mapperLocations=classpath:mapper/*.xml
如果上面的包名沒改的應該是com.demo
接著新增一個mapper資料夾,裡面放mybaits的SQL檔案。目錄如下
將你平時用的SQL檔案放進去就行了:
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.demo.dao.UserMapper">
<resultMap id="BaseResultMap" type="com.entity.User">
<id column="id" property="id" jdbcType="INTEGER" />
<result column="username" property="username" jdbcType="VARCHAR" />
<result column="password" property="password" jdbcType="VARCHAR" />
<result column="cellphone" property="cellphone" jdbcType="VARCHAR" />
<result column="email" property="email" jdbcType="VARCHAR" />
</resultMap>
<sql id="Base_Column_List">
id,username,password, cellphone, email
</sql>
<select id="findUserByName" parameterType="HashMap" resultType="com.entity.User">
select
<include refid="Base_Column_List" />
from user
where username = #{username}
</select>
</mapper>
接著新增controller,dao資料夾,和entity資料夾
注意,註解controller,dao資料夾要放在DemoApplication類(啟動)類的相同的包(我的啟動類在com.demo包中,剛開始我沒改package包名,就是com.demo,你們改成com.main的啟動類就在com.main中)或者其子包下才有效,因為springboot的掃描註解的順序是從啟動類的包往下掃描,包括其子包,放在其他包下無效,註解相關的都要如此,切記(想要試錯的你可以試試).entity包沒有註解不用,位置你們隨意放。
資料夾我們建好了,要開始寫control類和dao介面了,實體類我就不寫了出來了。(SQL語句那個配置檔案我上面已經給出個樣例子)
mapper介面:
package com.dome.dao;
import java.util.ArrayList;
import java.util.HashMap;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Service;
import com.entity.User;
@Service
@Mapper
public interface UserMapper {
//本方法無需maper.xml檔案
@Select("select * from user where username = #{username}")
ArrayList<User> findUser(@Param("username")String username);
//本方法為使用mapper.xml檔案的形式
ArrayList<User> findUserByName(HashMap<String,String>map);
}
這個介面比較牛掰的,可以直接寫SQL在上面,也可以用配置檔案的形式寫,簡單的時候我們就不用寫配置檔案了,方便吧。
controller:程式碼:
package com.dome.controller;
import java.util.ArrayList;
import java.util.HashMap;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import com.dome.dao.UserMapper;
import com.entity.User;
@RestController
@RequestMapping({"/home"})
public class UserController {
@Autowired
UserMapper userMapper;
@RequestMapping(value = "/user")
@ResponseBody
public String user(@RequestParam("name") String name){
HashMap<String,String>map= new HashMap<String,String>();
map.put("username",name);
ArrayList<User> user = userMapper.findUserByName(map);
System.out.println("------------------------");
if(user.isEmpty()){
user=userMapper.findUser("admin");
}
return user.isEmpty()?"沒有查到任何使用者":("查到存在使用者名稱為:"+user.get(0).getUsername()+" 的使用者資訊");
}
}
你們自己新增entity類,和資料庫表這些是基本東西后,我們執行專案。
User實體類:
package com.entity;
import java.io.Serializable;
public class User implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
//ID
private int id;
//密碼
private String username;
//使用者名稱
private String password;
//電話號碼
private String cellphone;
//郵件
private String email;
public User() {
super();
// TODO Auto-generated constructor stub
}
public User(int id, String username, String password, String cellphone, String email) {
super();
this.id = id;
this.username = username;
this.password = password;
this.cellphone = cellphone;
this.email = email;
}
public int getId() {
return id;
}
public void setId(int 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;
}
public String getCellphone() {
return cellphone;
}
public void setCellphone(String cellphone) {
this.cellphone = cellphone;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
右鍵專案-run as spring boot app
瀏覽器輸入:http://localhost:1111/home/user?name=test
之前我也老覺得這個spring boot很多坑,還沒地方百度,入門很痛苦,所有博主我熬夜將此詳細簡單的貼出來,希望大家少走彎路