Spring+Springboot+Mybatis框架搭建

本教程适合对Java有浓厚兴趣的初学者!

一、首先新建一个新项目

1、基本环境:IDEA2019.2.1(其他更高版本也可以,不局限),jdk1.8版本

2、根据以下截图勾选spring web,Mybatis,选中数据库类型,这里本人用的是sql server

到这里项目已经新建完成,等待项目加载完成在做以下配置吧

二、下载Easy code插件,并做一下配置

1、接下来我们需要下载一个插件Easy code,如下图所示,由于本人已经下好了,看下图即可

2、接下来进入Settings找到下好的Easy code插件做出以下配置,根据下面贴出来的代码替换相应的文件(方便接下来编译器自动生成)

注意:以上下载Easy code插件会自动生成一些xml、java等文件,不要去管他,根据下面贴出来的代码去做替换,也可将.xml删除,这里不影响

(1)、找到(这里自动生成的是controller.xml)controller.java,没有的话新建一个controller.java,将其选中把以下代码替换帖进去

##定义初始变量
#set($tableName = $tool.append($tableInfo.name, "Controller"))
##设置回调
$!callback.setFileName($tool.append($tableName,'.java'))
$!callback.setSavePath($tool.append($tableInfo.savePath, "/controller"))

##拿到主键
#if(!$tableInfo.pkColumn.isEmpty())
    #set($pk = $tableInfo.pkColumn.get(0))
#end

#if($tableInfo.savePackageName)package $!{tableInfo.savePackageName}.#{end}controller;

import $!{tableInfo.savePackageName}.model.$!{tableInfo.name};
import $!{tableInfo.savePackageName}.mapper.$!{tableInfo.name}Mapper;
import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;

import javax.annotation.Resource;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 * $!{tableInfo.comment}($!{tableInfo.name})业务控制类
 *
 * @author $!author
 * @since $!time.currTime()
 */
@RestController
@EnableAutoConfiguration
@RequestMapping("/$!{tableName}")
public class $!{tableName} {

    @Autowired
    private $!{tableInfo.name}Mapper dao;

    @RequestMapping("/selectById")
    public String selectById(HttpServletRequest request, HttpServletResponse response,
        String userid) throws IOException {
        request.setCharacterEncoding("utf-8");
		response.setCharacterEncoding("utf-8");
		response.setContentType("application/json");
		
		return "";
    }

    @RequestMapping("/selectAllByPage")
    public String selectAllByPage(HttpServletRequest request, HttpServletResponse response,
        String userid) throws IOException {
        request.setCharacterEncoding("utf-8");
		response.setCharacterEncoding("utf-8");
		response.setContentType("application/json");
		
		return "";
    }
    
    
    @RequestMapping("/selectAll")
    public String selectAll(HttpServletRequest request, HttpServletResponse response,
        String userid) throws IOException {
        request.setCharacterEncoding("utf-8");
		response.setCharacterEncoding("utf-8");
		response.setContentType("application/json");
		
		return "";
    }

    
    @RequestMapping("/insert")
    public String insert(HttpServletRequest request, HttpServletResponse response,
        String userid) throws IOException {
        request.setCharacterEncoding("utf-8");
		response.setCharacterEncoding("utf-8");
		response.setContentType("application/json");
		
		return "";
    }
    
    @RequestMapping("/deleteById")
    public String deleteById(HttpServletRequest request, HttpServletResponse response) throws IOException {
        request.setCharacterEncoding("utf-8");
		response.setCharacterEncoding("utf-8");
		response.setContentType("application/json");
		
		return "";
    }
}

(2)、找到(这里自动生成的是mapper.xml)mapper.java,没有的话新建一个mapper.java,将其选中把以下代码替换帖进去

##定义初始变量
#set($tableName = $tool.append($tableInfo.name, "Mapper"))
##设置回调
$!callback.setFileName($tool.append($tableName, ".java"))
$!callback.setSavePath($tool.append($tableInfo.savePath, "/mapper"))

##拿到主键
#if(!$tableInfo.pkColumn.isEmpty())
    #set($pk = $tableInfo.pkColumn.get(0))
#end

#if($tableInfo.savePackageName)package $!{tableInfo.savePackageName}.#{end}mapper;

import $!{tableInfo.savePackageName}.model.$!{tableInfo.name};
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Delete;
import java.util.List;

/**
 * $!{tableInfo.comment}($!{tableInfo.name})表数据库访问层
 *
 * @author $!author
 * @since $!time.currTime()
 */
public interface $!{tableName} {

    /**
     * 通过ID查询单条数据
     *
     * @param $!pk.name 主键
     * @return 实例对象
     */
     @Select("select * from $!{tableInfo.obj.parent.name}.$!tableInfo.obj.name where $!pk.obj.name = #{$!pk.name}")
    $!{tableInfo.name} selectById(@Param("$!pk.name") $!pk.shortType $!pk.name);

    /**
     * 查询指定行数据
     *
     * @param page 查询页数
     * @param pageSize 查询条数
     * @return 对象列表
     */
     @Select("select top #{pageSize} * from $!{tableInfo.obj.parent.name}.$!tableInfo.obj.name where $!pk.name not in (select top (#{page}*#{pageSize}-1) $!pk.name from $!{tableInfo.obj.parent.name}.$!tableInfo.obj.name)")
    List<$!{tableInfo.name}> selectAllByPage(@Param("page") int page, @Param("pageSize") int pageSize);

    /**
     * 通过实体作为筛选条件查询
     *
     * @return 对象列表
     */
     @Select("select * from $!{tableInfo.obj.parent.name}.$!tableInfo.obj.name")
    List<$!{tableInfo.name}> selectAll();

    /**
     * 新增数据
     *
     * @param $!tool.firstLowerCase($!{tableInfo.name}) 实例对象
     * @return 影响行数
     */
     @Insert("insert into $!{tableInfo.obj.parent.name}.$!{tableInfo.obj.name}(#foreach($column in $tableInfo.otherColumn)$!column.obj.name#if($velocityHasNext), #end#end) values (#foreach($column in $tableInfo.otherColumn)#{$!{column.name}}#if($velocityHasNext), #end#end)")
    int insert($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}));

    /**
     * 通过主键删除数据
     *
     * @param $!pk.name 主键
     * @return 影响行数
     */
     @Delete("delete from $!{tableInfo.obj.parent.name}.$!{tableInfo.obj.name} where $!pk.obj.name = #{$!pk.name}")
    int deleteById(@Param("$!pk.name") $!pk.shortType $!pk.name);

}

(3)、找到(这里自动生成的是model.xml)model.java,没有的话新建一个model.java,将其选中把以下代码替换帖进去

##引入宏定义
$!define

##使用宏定义设置回调(保存位置与文件后缀)
#save("/model", ".java")

##使用宏定义设置包后缀
#setPackageSuffix("model")

##使用全局变量实现默认包导入
$!autoImport
import java.io.Serializable;

##使用宏定义实现类注释信息
#tableComment("实体类")
public class $!{tableInfo.name} implements Serializable {
    private static final long serialVersionUID = $!tool.serial();
#foreach($column in $tableInfo.fullColumn)
    #if(${column.comment})/**
    * ${column.comment}
    */#end

    private $!{tool.getClsNameByFullName($column.type)} $!{column.name};
#end

    public $!{tableInfo.name}(){
        super();
    }
    
    public $!{tableInfo.name}(#foreach($column in $tableInfo.fullColumn)$!{tool.getClsNameByFullName($column.type)} $!{column.name}#if($velocityHasNext), #end#end){
    #foreach($column in $tableInfo.fullColumn)
    this.$!{column.name}=$!{column.name};
    #end
}
#foreach($column in $tableInfo.fullColumn)
##使用宏定义实现get,set方法
    #getSetMethod($column)
#end

}

(4)、找到(这里自动生成的是service.xml)service.java,没有的话新建一个service.java,将其选中把以下代码替换帖进去

##定义初始变量
#set($tableName = $tool.append($tableInfo.name, "MapperImpl"))
##设置回调
$!callback.setFileName($tool.append($tableName, ".java"))
$!callback.setSavePath($tool.append($tableInfo.savePath, "/service"))

##拿到主键
#if(!$tableInfo.pkColumn.isEmpty())
    #set($pk = $tableInfo.pkColumn.get(0))
#end

#if($tableInfo.savePackageName)package $!{tableInfo.savePackageName}.#{end}service;

import $!{tableInfo.savePackageName}.model.$!{tableInfo.name};
import $!{tableInfo.savePackageName}.mapper.$!{tableInfo.name}Mapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;

/**
 * $!{tableInfo.comment}($!{tableInfo.name})表服务实现类
 *
 * @author $!author
 * @since $!time.currTime()
 */
@Primary
@Service
public class $!{tableName} implements $!{tableInfo.name}Mapper {

    @Autowired
    private $!{tableInfo.name}Mapper $!tool.firstLowerCase($!{tableInfo.name})Dao;

    /**
     * 通过ID查询单条数据
     *
     * @param $!pk.name 主键
     * @return 实例对象
     */
    @Override
    public $!{tableInfo.name} selectById($!pk.shortType $!pk.name) {
        $!{tableInfo.name} $!{tool.firstLowerCase($!{tableInfo.name})} = $!{tool.firstLowerCase($!{tableInfo.name})}Dao.selectById($!pk.name);
        if($!{tool.firstLowerCase($!{tableInfo.name})} != null && !$!{tool.firstLowerCase($!{tableInfo.name})}.equals("")){
            return $!{tool.firstLowerCase($!{tableInfo.name})};
        }else{
            return null;
        }
    }

    /**
     * 查询多条数据
     *
     * @param page 查询页数
     * @param pageSize 查询条数
     * @return 对象列表
     */
    @Override
    public List<$!{tableInfo.name}> selectAllByPage(int page, int pageSize) {
        List<$!{tableInfo.name}> $!{tool.firstLowerCase($!{tableInfo.name})}list = $!{tool.firstLowerCase($!{tableInfo.name})}Dao.selectAllByPage(page, pageSize);
        if($!{tool.firstLowerCase($!{tableInfo.name})}list != null && $!{tool.firstLowerCase($!{tableInfo.name})}list.size()>0){
            return $!{tool.firstLowerCase($!{tableInfo.name})}list;
        }else{
            return null;
        }
    }
    
    /**
     * 查询所有数据
     *
     * @return 实例对象
     */
    @Override
    public List<$!{tableInfo.name}> selectAll() {
        List<$!{tableInfo.name}> $!{tool.firstLowerCase($!{tableInfo.name})}list = $!{tool.firstLowerCase($!{tableInfo.name})}Dao.selectAll();
        if($!{tool.firstLowerCase($!{tableInfo.name})}list != null && $!{tool.firstLowerCase($!{tableInfo.name})}list.size()>0){
            return $!{tool.firstLowerCase($!{tableInfo.name})}list;
        }else{
            return null;
        }
    }

    /**
     * 新增数据
     *
     * @param $!tool.firstLowerCase($!{tableInfo.name}) 实例对象
     * @return 实例对象
     */
    @Override
    public int insert($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name})) {
        return $!{tool.firstLowerCase($!{tableInfo.name})}Dao.insert($!tool.firstLowerCase($!{tableInfo.name}));
    }

    /**
     * 通过主键删除数据
     *
     * @param $!pk.name 主键
     * @return 是否成功
     */
    @Override
    public int deleteById($!pk.shortType $!pk.name) {
        return $!{tool.firstLowerCase($!{tableInfo.name})}Dao.deleteById($!pk.name);
    }
}

以上基本配置已经完成啦,这里的配置将会自动生成基础的增删查改代码,如还需要其他操作,后续自己添加

Easy code的配置已经完啦,如下图所示:

三、配置数据源

1、选中一个已有的数据库做数据源配置

2、数据源配置成功,接下来就用Easy code插件来逆向工程吧

(1)、选中要逆向的表,如下图:

勾选一下几项内容,点击OK就可以自动生成接口,业务类等java类了

结果如下图所示:

 

四、编写测试代码

1、在application.properties中配置数据库连接

其配置代码如下:

#端口号设置
server.port=8081

#sqlserver数据库连接设置
spring.datasource.url=jdbc:sqlserver://localhost:1433;DatabaseName=db_TransportManage
spring.datasource.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver
spring.datasource.username=sa
spring.datasource.password=123456

#mybatis mapper映射xml文件的所在路径
mybatis.mapper-locations=classpath:mapper/*.xml
#mybatis 实体保存路径
mybatis.type-aliases-package=src.main.java.com.example.ssmproject

2、在启动类SsmprojectApplication中添加注解:@MapperScan(basePackages = {"com.example.ssmproject.mapper"})

3、在TUserController中更改对应要测试的代码,这里我以通过id查询用户信息为例:

4、在浏览器端访问URL地址测试,如下所示成功取到数据库对应数据

以上就是ssm(spring+springboot+mybatis)框架项目的初步搭建!

开源项目地址:https://gitee.com/sunshitao/ssm_framework_project

  • 4
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值