快速开始
我们将通过一个简单的 Demo 来阐述 wueasy
的强大功能,在此之前,我们假设您已经:
- 拥有 Java 开发环境以及相应 IDE
- 熟悉 Spring Boot
- 熟悉 Maven
- 熟悉 MyBatis
- 熟悉 MySql
现有一张 user
表,其表结构如下:
id | name | age | |
---|---|---|---|
1 | wueasy | 2 | server@wueasy.com |
2 | fallsea | 18 | fallsea@wueasy.com |
其对应的数据库 Schema 脚本如下:
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键id',
`name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '姓名',
`age` int(11) NULL DEFAULT NULL COMMENT '年龄',
`email` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '邮箱',
PRIMARY KEY (`id`)
) AUTO_INCREMENT = 1 ;
其对应的数据库 Data 脚本如下:
DELETE FROM `user`;
INSERT INTO `user` VALUES (1, 'wueasy', 2, 'server@wueasy.com');
INSERT INTO `user` VALUES (2, 'fallsea', 18, 'fallsea@wueasy.com');
[!question] 如果从零开始用
wueasy
来实现该表的增删改查接口,我们需要做什么呢?
导入工程
[!TIP] 通过导入演示demo,快速搭建环境。
分别导入demo-datamodel
、demo-bus
、demo-web
自动生成mybatis接口
[!TIP] 通过自动生成mybatisi接口文件,减少开发成功。
打开demo-datamodel
项目工程
配置信息
打开文件src\test\resources\generatorConfig.xml
- 修改数据库连接配置
- 修改生成的映射信息
- 修改需要生成的表
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
<context id="Mysql" targetRuntime="MyBatis3Simple" defaultModelType="flat">
<property name="javaFileEncoding" value="UTF-8"/>
<property name="useMapperCommentGenerator" value="true"/>
<plugin type="org.mybatis.generator.plugins.SerializablePlugin" />
<plugin type="tk.mybatis.mapper.generator.MapperPlugin">
<property name="mappers" value="tk.mybatis.mapper.common.Mapper"/>
<!-- <property name="beginningDelimiter" value="`"/> -->
<!-- <property name="endingDelimiter" value="`"/> -->
<property name="caseSensitive" value="true"/>
<property name="forceAnnotation" value="false"/>
<property name="generateColumnConsts" value="false"/>
<property name="generateDefaultInstanceMethod" value="false"/>
<property name="lombok" value="Data"/>
</plugin>
<!--通用代码生成器插件-->
<!--mapper接口-->
<plugin type="tk.mybatis.mapper.generator.TemplateFilePlugin">
<property name="targetProject" value="src/main/java"/>
<property name="targetPackage" value="com.ruruan.demo.mapper"/>
<property name="templatePath" value="generator/mapper.ftl"/>
<property name="mapperSuffix" value="Mapper"/>
<property name="fileName" value="${tableClass.shortClassName}${mapperSuffix}.java"/>
</plugin>
<!--mapper.xml-->
<plugin type="tk.mybatis.mapper.generator.TemplateFilePlugin">
<property name="targetProject" value="src/main/resources"/>
<property name="targetPackage" value="mybatis.ruruan.demo"/>
<property name="mapperPackage" value="com.ruruan.demo.mapper"/>
<property name="templatePath" value="generator/mapperXml-wueasy.ftl"/>
<property name="mapperSuffix" value="Mapper"/>
<property name="fileName" value="${tableClass.shortClassName}${mapperSuffix}.xml"/>
</plugin>
<!-- 数据库连接 -->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/test"
userId="easyadmin"
password="easyadmin">
</jdbcConnection>
<!-- <jdbcConnection driverClass="oracle.jdbc.driver.OracleDriver" -->
<!-- connectionURL="jdbc:oracle:thin:@localhost:1521:orcl" -->
<!-- userId="think_framework" -->
<!-- password="think_framework"> -->
<!-- 针对oracle数据库增加注释 -->
<!-- <property name="remarksReporting" value="true"></property> -->
<!-- </jdbcConnection> -->
<javaTypeResolver type="com.wueasy.auto.resolver.MyJavaTypeResolverDefaultImpl"/>
<!--模型配置-->
<javaModelGenerator targetPackage="com.ruruan.demo.entity" targetProject="src/main/java">
<property name="enableSubPackages" value="true"/>
</javaModelGenerator>
<!-- 表配置 -->
<table tableName="demo">
<generatedKey column="id" sqlStatement="JDBC"/>
</table>
</context>
</generatorConfiguration>
执行自动生成类
[!TIP] 通过执行自动生成类,生成对应的
mapper
和entity
。
打开文件src\test\java\Generator.java
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import org.mybatis.generator.api.MyBatisGenerator;
import org.mybatis.generator.config.Configuration;
import org.mybatis.generator.config.xml.ConfigurationParser;
import org.mybatis.generator.internal.DefaultShellCallback;
public class Generator {
public static InputStream getResourceAsStream(String path){
return Thread.currentThread().getContextClassLoader().getResourceAsStream(path);
}
public static void main(String[] args) throws Exception {
List<String> warnings = new ArrayList<String>();
boolean overwrite = true;
ConfigurationParser cp = new ConfigurationParser(warnings);
Configuration config = cp.parseConfiguration(getResourceAsStream("generatorConfig.xml"));
DefaultShellCallback callback = new DefaultShellCallback(overwrite);
MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
myBatisGenerator.generate(null);
for (String warning : warnings) {
System.out.println(warning);
}
}
}
执行完成后,将在对应的包中生成对应的文件。
接口配置
[!TIP] 接口配置是一种暴露服务接口的信息,配置后,其他服务可以调用此接口,也可以在配置中做一些接口验证处理。
打开demo-bus
项目工程
查询分页
- 配置一个查询分页的功能号:
function
- 指定功能号id:
id="DEMO0001"
- 设置功能号调用
mapper
接口type="m"
指定功能号需要分页
isPage="1"
设置请求的接口地址
resource
,值为mapper接口路径+方法名称
- 设置接口中文名称
description
<function id="DEMO0001" type="m" isPage="1">
<params>
<param name="名称" id="name" operateType="Like"/>
</params>
<resource>com.ruruan.demo.mapper.DemoMapper.selectByExample</resource>
<description>查询分页</description>
</function>
新增
- 配置一个新增的功能号:
function
- 指定功能号id:
id="DEMO0002"
设置功能号调用
mapper
接口type="m"
参数配置:
param
,一般只有参数验证的时候,才需要编写,也可以当作接口文档。- 姓名不能为空配置:
<param id="name" name="姓名" required="1"/>
id
为参数名,name
为参数中午名称,required="1"
不能为空设置请求的接口地址
resource
,值为mapper接口路径+方法名称
- 设置接口中文名称
description
<function id="DEMO0002" type="m">
<params>
<param id="name" name="名称" required="1" maxLength="50"/>
<param id="createdTime" name="创建时间" value="$date()"/>
</params>
<resource>com.ruruan.demo.mapper.DemoMapper.insertSelective</resource>
<description>新增</description>
</function>
修改
<function id="DEMO0003" type="m">
<params>
<param id="id" name="id" required="1"/>
<param id="name" name="名称" required="1" maxLength="50"/>
<param id="updatedTime" name="修改时间" value="$date()"/>
</params>
<checks><!-- 检查资源信息 -->
<check isEmpty="1">
<msg>记录不存在</msg>
<resource>com.ruruan.demo.mapper.DemoMapper.selectByPrimaryKey</resource>
</check>
</checks>
<resource>com.ruruan.demo.mapper.DemoMapper.updateByPrimaryKeySelective</resource>
<description>修改</description>
</function>
查询单个数据
<function id="DEMO0004" type="m">
<params>
<param id="id" name="id" required="1"/>
</params>
<resource>com.ruruan.demo.mapper.DemoMapper.selectByPrimaryKey</resource>
<description>查询单个记录</description>
</function>
删除
<function id="DEMO0005" type="m">
<params>
<param id="id" name="id" required="1"/>
</params>
<checks><!-- 检查资源信息 -->
<check isEmpty="1">
<msg>记录不存在</msg>
<resource>com.ruruan.demo.mapper.DemoMapper.selectByPrimaryKey</resource>
</check>
</checks>
<resource>com.ruruan.demo.mapper.DemoMapper.deleteByPrimaryKey</resource>
<description>删除</description>
</function>
启动服务
执行Application.java
类启动服务
启动业务服务bus
打开demo-bus
项目工程
修改数据库配置
修改数据库连接配置。打开文件src\main\resources\application-dev.yml
wueasy :
data:
datasource :
demo :
isLog: true
mybatis:
basePackage: com.ruruan.demo.mapper
mapperLocations: classpath*:mybatis/ruruan/demo/*.xml
connection:
url : jdbc:mysql://localhost:3306/test?serverTimezone=Asia/Shanghai&&useSSL=false&useUnicode=true&characterEncoding=utf-8
username : easyadmin
password : easyadmin
#连接池配置
initialSize : 10 #初始化大小
minIdle : 10 #最小连接
maxActive : 20 #最大连接
maxWait : 60000 #配置获取连接等待超时的时间
timeBetweenEvictionRunsMillis : 2000 #配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
minEvictableIdleTimeMillis : 600000 #配置一个连接在池中最小生存的时间,单位是毫秒
maxEvictableIdleTimeMillis : 600000 #配置一个连接在池中最大生存的时间,单位是毫秒
validationQuery : SELECT 1 from dual
testWhileIdle : true
testOnBorrow : false
testOnReturn : false
keepAlive : true
启动web服务
打开demo-web
项目工程
请求测试
[!TIP] 系统默认提供调用功能号的
Controller
,可以直接使用。
Controller接口
默认为Controller接口:http://localhost:8080/servlet/功能号
只需要按照此方式调用即可
调用demo
查询分页接口:
http://localhost:8080/servlet/DEMO0001
新增接口:
http://localhost:8080/servlet/DEMO0002?name=测试&age=12&email=xxx@qq.com
修改接口:
http://localhost:8080/servlet/DEMO0003?name=%E6%B5%8B%E8%AF%9522&age=12&email=xxx@qq.com&id=3
查询单个数据接口:
http://localhost:8080/servlet/DEMO0004?id=3
删除接口:
http://localhost:8080/servlet/DEMO0005?id=3