IDEA创建一个springboot项目(二)整合TKMytis框架

一、框架配置

我是在上一篇的demo基础上增加的,上一篇地址: IDEA创建一个springboot项目(一)

配置的话非常简单,我用的是SpringBoot,直接引入:

<!-- TKMytis框架 mybatis自动生成 -->
		<dependency>
			<groupId>tk.mybatis</groupId>
			<artifactId>mapper-spring-boot-starter</artifactId>
			<version>2.0.2</version>
		</dependency>
		<dependency>
			<groupId>tk.mybatis</groupId>
			<artifactId>mapper</artifactId>
			<version>4.0.0</version>
		</dependency>

application.yml配置

###################################################################
server:
  #端口号
  port: 8088
############################################################################
#链接数据库配置
spring:
  datasource:
    #数据库名称
    name: demo
    url: jdbc:mysql://localhost:3306/demo?useUnicode=true&characterEncoding=utf-8&useSSL=false #url
    #数据库账号
    username: root
    #数据库密码
    password: 123456
    driver-class-name: com.mysql.jdbc.Driver
###########################################################################################33
##mybatis配置
mybatis:
  mapper-locations: classpath:mapper/*.xml
  type-aliases-package: com.example.demo.model.entity


创建一个baseMapper
注意:如果启动报错
原因,项目未扫描到 mapper 包。
解决:在项目启动类上加注解 @MapperScan
参考链接

package com.example.demo.mapper;

import tk.mybatis.mapper.common.ConditionMapper;
import tk.mybatis.mapper.common.ExampleMapper;
import tk.mybatis.mapper.common.IdsMapper;
import tk.mybatis.mapper.common.special.InsertListMapper;

/**
 * @param
 * @return  安装说明https://www.cnblogs.com/jpfss/p/11363367.html
 * @author:liuyu
 * @创建日期:2020年3月5日
 * @功能说明:TKMytis框架通用mapper,用于自动生成增删改查代码
 *https://blog.csdn.net/id19870510/article/details/79552997
 * TKMytis框架通用mapper不能跟其它的mapper放一起,basePackage的属性值 不能包含通用mapper所在的包
 */
public interface baseMapper<T> extends tk.mybatis.mapper.common.BaseMapper<T>, ExampleMapper<T>, ConditionMapper<T>, IdsMapper<T>, InsertListMapper<T> {
}

创建baseService继承自baseMapper

package com.example.demo.service;

import com.example.demo.mapper.baseMapper;

/**
 * @param
 * @return  安装说明https://www.cnblogs.com/jpfss/p/11363367.html
 * @author:liuyu
 * @创建日期:2020年3月5日
 * @功能说明:TKMytis框架通用service,用于自动生成增删改查代码
 */
public interface baseService<T> extends baseMapper<T> {
}

创建baseService的实现类baseServiceImpl implements baseService

package com.example.demo.serviceImpl;

import com.example.demo.service.baseService;
import org.springframework.stereotype.Service;

/**
 * @version Revision 1.0.0
 * @版权:版权所有 (c) 2018  安装说明https://www.cnblogs.com/jpfss/p/11363367.html
 * @see:
 * @创建日期:2020年3月2日 @功能说明: @begin
 * @修改记录:
 * @修改后版本 修改人 修改内容
 * @2020年3月2日 liuyu TKMytis框架通用service,用于自动生成增删改查代码
 * @end
 */
@Service
public abstract class baseServiceImpl<T> implements baseService<T> {
}

这样我们就基本完成了配置。

二、类配置方法

1、实体类

创建一个实体类userEntity与数据库进行映射,此时我们使用JPA的注解:

package com.example.demo.model;

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

/**
 * @version Revision 1.0.0
 * @版权:版权所有 (c) 2018
 * @see:
 * @创建日期:2020年3月2日 @功能说明: @begin
 * @修改记录:
 * @修改后版本 修改人 修改内容
 * @2020年3月2日 liuyu 创建
 * @end
 */
@SuppressWarnings("serial")
@Table(name = "user")
public class userEntity {
    @Column(name = "id")
    @Id
    private String id;
    //姓名
    @Column(name = "user_name")
    private String userName;
    //年龄
    @Column(name = "user_age")
    private String userAge;
    //地址
    @Column(name = "address")
    private String address;
    //职位
    @Column(name = "position")
    private String position;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getUserAge() {
        return userAge;
    }

    public void setUserAge(String userAge) {
        this.userAge = userAge;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String getPosition() {
        return position;
    }

    public void setPosition(String position) {
        this.position = position;
    }
}

其中@Table即数据表表名,@Column即列名,@Id作为主键,需要注意,@Id注解不可有多个,@Transient即冗余字段,不与数据库任何字段对应。

分享一个小技巧,实际项目中我们可能存在多数据源的情况,如果使用的是sqlserver,且多个数据库均在同一台服务器下且配置的账号均拥有权限,

则@Table注解中可以写成“{数据库名}.{架构名}.{表名}”,如:@Table(name=“db.dbo.tableName”)

而不需要再额外配置数据源

2、mapper类

创建userMapper类

package com.example.demo.mapper;

import com.example.demo.model.userEntity;

public interface userMapper extends baseMapper<userEntity> {
}


3、Service类

创建userService接口

package com.example.demo.service;

import com.example.demo.model.userEntity;

public interface userService {
    void deleteUser(String id) throws Exception;
    void updateUser(userEntity userEntity)  throws Exception;
    userEntity selectUser(String id) throws Exception;
    void addUser(userEntity userEntity) throws Exception;
    List<userEntity> getUser(String userName,String userAge) throws Exception;
}


创建userServiceImpl实现类

package com.example.demo.serviceImpl;

import com.example.demo.mapper.userMapper;
import com.example.demo.model.userEntity;
import com.example.demo.service.userService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import tk.mybatis.mapper.entity.Example;

import java.util.List;

/**
 * @version Revision 1.0.0
 * @版权:版权所有 (c) 2018
 * @see:
 * @创建日期:2020年3月2日 @功能说明: @begin
 * @修改记录:
 * @修改后版本 修改人 修改内容
 * @2020年3月2日 liuyu 创建
 * @end
 */
@Service
public class userServiceImpl implements userService {
    @Autowired
    private userMapper mapper;

    /**
     * @param
     * @return
     * @author:liuyu
     * @创建日期:2020年3月5日
     * @功能说明:根据id删除
     */
    @Override
    public void deleteUser(String id) throws Exception {
        mapper.deleteByPrimaryKey(id);
    }
/**
 * @param
 * @return
 * @创建日期:2020年3月5日
 * @功能说明:修改
 */
    @Override
    public void updateUser(userEntity userEntity) throws Exception {
        mapper.updateByPrimaryKeySelective(userEntity);
    }

    /**
     * @param
     * @return
     * @创建日期:2020年3月5日
     * @功能说明:根据id查询
     */
    @Override
    public userEntity selectUser(String id) throws Exception {
        userEntity user = mapper.selectByPrimaryKey(id);
        return user;
    }

    /**
     * @param
     * @return
     * @创建日期:2020年3月5日
     * @功能说明:新增
     */
    @Override
    public void addUser(userEntity userEntity) throws Exception {
        mapper.insertSelective(userEntity);

    }

    /**
     * @param
     * @return
     * @author:liuyu
     * @创建日期:2020年3月5日
     * @功能说明:根据名字和年龄获取信息
     */
    @Override
    public List<userEntity> getUser(String userName, String userAge) throws Exception {
        Example example = new Example(userEntity.class);
        Example.Criteria criteria = example.createCriteria();
        if (userName!=null&&userName!=null) {
            criteria.andEqualTo("userName", userName);
        }
        if (userAge!=null&&userAge!=null) {
            criteria.andEqualTo("userAge", userAge);
        }
//        example.setOrderByClause(" create_time desc");//这句话是根据create_time字段倒叙排序
        List<userEntity> selectByExample = mapper.selectByExample(example);
        return selectByExample;
    }
}

4、Controller类

创建userController类

package com.example.demo.controller;

import com.example.demo.model.userEntity;
import com.example.demo.service.userService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

/**
 * @version Revision 1.0.0
 * @版权:版权所有 (c) 2018
 * @see:
 * @创建日期:2020年3月2日 @功能说明: @begin
 * @修改记录:
 * @修改后版本 修改人 修改内容
 * @2020年3月2日 liuyu 创建
 * @end
 */
@RestController
@RequestMapping("/user")
public class userController {
    @Autowired
    private userService service;
    /**
     * @param
     * @return
     * @author:liuyu
     * @创建日期:2020年3月5日
     * @功能说明:插入数据
     * 浏览器地址输入:http://127.0.0.1:8088/user/insertUser
     */
    @RequestMapping("insertUser")
    public void insertUser(){
        try {
            userEntity entity = new userEntity();
            entity.setId("2727625255252");
            entity.setUserName("张三");
            entity.setUserAge("23");
            entity.setAddress("北京胡同");
            entity.setPosition("学生");
            service.addUser(entity);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    /**
     * @param
     * @return
     * @author:liuyu
     * @创建日期:2020年3月5日
     * @功能说明:根据id查询信息
     * 浏览器地址输入:http://127.0.0.1:8088/user/selectUserById
     */
    @RequestMapping("selectUserById")
    public void selectUserById(){
        try {
            userEntity entity = service.selectUser("2727625255252");
            //这边输出的是引用地址,debug看就可以看到entity是有值的
            System.out.println(entity);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    /**
     * @param
     * @return
     * @author:liuyu
     * @创建日期:2020年3月5日
     * @功能说明:根据条件查询
     * 浏览器地址输入:http://127.0.0.1:8088/user/selectUser
     */
    @RequestMapping("selectUser")
    public void selectUser(){
        try {
            String userName = "李四";
            String age = "22";
            List<userEntity> list = service.getUser(userName,age);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * @param
     * @return
     * @author:liuyu
     * @创建日期:2020年3月5日
     * @功能说明:根据id删除
     * http://127.0.0.1:8088/user/deleteUserById
     */
    @RequestMapping("deleteUserById")
    public void deleteUserById(){
        try {
            service.deleteUser("2727625255257");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

然后启动浏览器输入地址就可以访问了,如果要看整合了swagger效果的看我下一篇,
界面是这样的:
在这里插入图片描述

三、出现的错误

  1. 启动 springboot 项目报错:

Field xxMapper in xx.service.impl.xxServiceImpl required a bean of type ‘xx.mapper.xxMapper’
在这里插入图片描述
原因:项目未扫描到 mapper 包。

解决:在项目启动类上加注解 @MapperScan
在这里插入图片描述2. 启动 springboot 项目报错:
原因:TKMytis框架通用mapper跟其它的mapper放一起,我这边的就是baseMapper和userMapper放一起了,

在这里插入图片描述
解决:我把baseMapper移到其它文件下去了
在这里插入图片描述

上面的demo下载

链接:https://pan.baidu.com/s/1FVqqzQo3t6wJ26y8tZcDhA
提取码:j13i

数据库下载地址:
链接:https://pan.baidu.com/s/1_zOSjyF9abk6pZb5cuqZLQ
提取码:oso7

其它下载地址:https://download.csdn.net/download/weixin_43085797/12291906

/*
 Navicat Premium Data Transfer

 Source Server         : liuyu
 Source Server Type    : MySQL
 Source Server Version : 50724
 Source Host           : localhost:3306
 Source Schema         : demo

 Target Server Type    : MySQL
 Target Server Version : 50724
 File Encoding         : 65001

 Date: 01/04/2020 14:55:43
*/

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user`  (
  `id` char(18) CHARACTER SET utf8 COLLATE utf8_croatian_ci NOT NULL COMMENT 'id',
  `user_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '姓名',
  `user_age` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '年龄',
  `address` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '地址',
  `position` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '职位',
  `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES ('2727625255252', '张三', '23', '北京胡同', '学生', NULL);
INSERT INTO `user` VALUES ('2727625255253', '李四', '66', '上海胡同', '小白领', NULL);
INSERT INTO `user` VALUES ('2727625255254', '李四', '22', '厦门胡同', '销售员', NULL);
INSERT INTO `user` VALUES ('2727625255255', '李四', '22', '广州胡同', '美女', NULL);
INSERT INTO `user` VALUES ('2727625255256', '李四', '22', '深圳胡同', '作家', NULL);
INSERT INTO `user` VALUES ('2727625255257', '删除', '44', '删除', '纱窗', NULL);

SET FOREIGN_KEY_CHECKS = 1;

下一篇:springboot项目(三)整合swagge接口测试框架

参考文章:https://www.cnblogs.com/jpfss/p/11363367.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值