1. 程式人生 > >Springboot+mybatis 搭建並完美整合

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很多坑,還沒地方百度,入門很痛苦,所有博主我熬夜將此詳細簡單的貼出來,希望大家少走彎路