使用Tk.maybatis整合orm框架

Tk.maybatis是集成好的一套簡單的增刪改查的orm框架。
--------------------------分割線----------------------
1、首先我們在建好的springboot的工程的pom.xml中加入tk.mybatis的maven依賴

    <dependency>
        <groupId>tk.mybatis</groupId>
        <artifactId>mapper-spring-boot-starter</artifactId>
        <version>2.0.4</version>
    </dependency>
    <!--分頁插件-->
    <dependency>
        <groupId>com.github.pagehelper</groupId>
        <artifactId>pagehelper-spring-boot-starter</artifactId>
        <version>1.2.9</version>
    </dependency>
    <!-- 引入mysql數據庫依賴 -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>${mysql.version}</version>
    </dependency>

2、在application.properties中配置mybatis的掃描路徑
在這裏插入圖片描述
3、在mybatis底下創建mapper文件夾,並在mapper文件夾下新建一個mybatis_user.xml

<?xml version="1.0" encoding="UTF-8"?>
<resultMap type="com.test.demo.sys.entity.Tuser" id="UserMap">
	<id property="user_id" column="user_id"/>
	<result property="name" column="name"/>
	<result property="psw" column="psw"/>
</resultMap>

在這裏插入圖片描述

3、在application-dev.properties中配置數據庫以及端口號
logging.config=classpath:config/logback-spring-dev.xml

spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/demo?characterEncoding=utf-8&serverTimezone=GMT
spring.datasource.username=root
spring.datasource.password=123456

工程訪問的端口

server.port=8080

在這裏插入圖片描述

4、打開DemoApplication.Java ,注意2個地方
1)引入的是tk.mybatis.spring.annotation.MapperScan;而不是傳統的mybatis的類
2) MapperScan代表當前的mybatis自動掃描dao的位置,如果不配置這個掃描,在我們調用dao層方法的時候將會報我們調用的方法沒綁定的錯誤,因此一定

package com.test.demo;

import org.apache.ibatis.annotations.Mapper;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import tk.mybatis.spring.annotation.MapperScan;

@SpringBootApplication
@MapperScan(“com.test.demo.*.dao”)
public class DemoApplication {

public static void main(String[] args) {
    SpringApplication.run(DemoApplication.class, args);
}

}
在這裏插入圖片描述
------------------------------分割線---------------------------------
到此我們就完成了我們的mybatis的orm框架的集成。
1、下面我們將創建UUIdGenId.java進行測試,該工具類主要是用於生成基於我們tk.mybatis插件的數據庫表的主鍵的生成規則,代碼內容如下:

package com.test.demo.base;

import tk.mybatis.mapper.genid.GenId;

import java.util.UUID;

public class UUIdGenId implements GenId {
@Override
public String genId(String table, String column) {
return UUID.randomUUID().toString().replaceAll("-","");
}
}
2、實體類的創建
package com.test.demo.sys.entity;

import com.test.demo.base.UUIdGenId;
import tk.mybatis.mapper.annotation.KeySql;

import javax.persistence.Column;
import javax.persistence.Id;
import javax.persistence.Table;

/**

  • create by lj on 2018/11/23
    /
    /
    *

    • @Id 告訴我們的tk.mybatis插件這個字段是一個主鍵
    • @Column(name = “userId”)告訴我們的tk.mybatis插件我們的實體中定義的屬性與數據庫中屬性的映射關係
    • 假定我們數據庫的字段命名是user_id,然後我們實體中是private String userId,那麼這時候我們的註解的寫法是@Column(name = “user_id”),這樣他們就會自動產生映射關係
    • @KeySql(genId = UUIdGenId.class) 這是tk.mybatis插件給予的一個自動生成自定義主鍵的支持,因此主鍵的生成規則將會使用UUIdGenId中的主鍵生成規則來進行生成
      */
      @Table(name = “t_user”)
      public class Tuser {

    @Id
    @Column(name = “user_id”)
    @KeySql(genId = UUIdGenId.class)
    private String user_id;

    // 用戶賬號
    @Column(name = “name”)
    private String name;

    // 用戶密碼
    @Column(name = “psw”)
    private String psw;

    public String getUser_id() {
    return user_id;
    }

    public void setUser_id(String user_id) {
    this.user_id = user_id;
    }

    public String getName() {
    return name;
    }

    public void setName(String name) {
    this.name = name;
    }

    public String getPsw() {
    return psw;
    }

    public void setPsw(String psw) {
    this.psw = psw;
    }
    }

在這裏插入圖片描述

3、創建dao
package com.test.demo.sys.dao;

import tk.mybatis.mapper.common.Mapper;
import com.test.demo.sys.entity.Tuser;
/**

  • create by lj on 2018/11/23
    */
    public interface UserDao extends Mapper {
    }

在這裏插入圖片描述
4、因爲前面已經創建了一個user.xml所以此處就不再創建了
5、在service包中創建一個userservice.java的文件
package com.test.demo.sys.service;

import com.test.demo.sys.dao.UserDao;
import com.test.demo.sys.entity.Tuser;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

@Service
@Transactional(rollbackFor = {IllegalArgumentException.class})
public class UserService {
@Autowired
private UserDao userDao;

public Tuser selectByPrimaryKey(Tuser entity) {
    return userDao.selectByPrimaryKey(entity);
}

//刪除
public int delectByPrimaryKey(Tuser entity) {
    return userDao.deleteByPrimaryKey(entity.getUser_id());
}

//添加
public int addByPrimaryKey(Tuser entity) {
    return userDao.insertSelective(entity);
}

//修改
public int changeByPrimaryKey(Tuser entity) {
    return userDao.updateByPrimaryKey(entity);
}

}

在這裏插入圖片描述
6、創建controller層的類
package com.test.demo.sys.controller;

import com.test.demo.sys.entity.Tuser;
import com.test.demo.sys.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

/**

  • create by lj on 2018/11/9
    */

@Controller
@RequestMapping("/main")
public class firstController {

@GetMapping("/welcome")
public String welcome() {
    return "welcome";
}


@Autowired
private UserService userService;

@GetMapping("selectByPrimaryKey")
@ResponseBody
public Tuser selectByPrimaryKey(Tuser entity) {
    return userService.selectByPrimaryKey(entity);
}

@GetMapping("deleteByPrimaryKey")
@ResponseBody
public int deleteByPrimaryKey(Tuser entity) {
    return userService.delectByPrimaryKey(entity);
}

@GetMapping("addByPrimaryKey")
@ResponseBody
public int addByPrimaryKey(Tuser entity) {
    return userService.addByPrimaryKey(entity);
}
@GetMapping("updateByPrimaryKey")
@ResponseBody
public int updateByPrimaryKey(Tuser entity) {
    return userService.changeByPrimaryKey(entity);
}

}

現在我們就可以運行工程,如查詢,我的工程中目前的數據如下
在這裏插入圖片描述
http://127.0.0.1:8080/main/selectByPrimaryKey?user_id=3
在這裏插入圖片描述
-----------------------------分割線------------------------------
以上是用瀏覽器來測試接口,現在我們可以使用swagger2,來對有post接口進行何測試。

1、pom.xml加入如下的maven依賴:

<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>2.6.1</version>
</dependency>

<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>2.6.1</version>
</dependency>

2、
在這裏插入圖片描述

package com.test.demo.base;

import com.google.common.base.Predicate;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import springfox.documentation.RequestHandler;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

/**

  • create by lj on 2018/11/23
    */

@Configuration
@EnableSwagger2
public class SwaggerConfig {

@Bean
public Docket createRestApi() {
    Predicate<RequestHandler> predicate = new Predicate<RequestHandler>() {
        @Override
        public boolean apply(RequestHandler input) {
            Class<?> declaringClass = input.declaringClass();
            if (declaringClass.isAnnotationPresent(RestController.class)) // 被註解的類
                return true;
            if (input.isAnnotatedWith(ResponseBody.class)) // 被註解的方法
                return true;
            return false;
        }
    };
    return new Docket(DocumentationType.SWAGGER_2)
            .apiInfo(apiInfo())
            .useDefaultResponseMessages(false)
            .select()
            .apis(predicate)
            .build();
}

private ApiInfo apiInfo() {
    return new ApiInfoBuilder()
            .title("swagger2 接口測試專用頁面!")//大標題
            .version("1.0")//版本
            .build();
}

}

接着我們啓動我們的工程,訪問http:\127.0.0.1:8080\swagger-ui.html,當大家看到如下的頁面的時候說明我們的接口測試工具已經集成完成了,以後我們所有通過controller註解的接口都會在這個頁面上展示出來。在這裏插入圖片描述

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