本教程适合对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)框架项目的初步搭建!