Tk.maybatis是集成好的一套简单的增删改查的orm框架。
--------------------------分割线----------------------
1、首先我们在建好的springboot的工程的pom.xml中加入tk.mybatis的maven依赖
tk.mybatis
mapper-spring-boot-starter
2.0.4
com.github.pagehelper
pagehelper-spring-boot-starter
1.2.9
mysql
mysql-connector-java
${mysql.version}
2、在application.properties中配置mybatis的扫描路径
3、在mybatis底下创建mapper文件夹,并在mapper文件夹下新建一个mybatis_user.xml
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
@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;
/**
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;
/**
@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依赖:
io.springfox
springfox-swagger2
2.6.1
io.springfox
springfox-swagger-ui
2.6.1
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;
/**
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket createRestApi() {
Predicate predicate = new Predicate() {
@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注解的接口都会在这个页面上展示出来。