使用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注解的接口都会在这个页面上展示出来。在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/ljljlj1993/article/details/84502981
今日推荐