JeecgBoot是一个基于Spring Boot的快速开发平台,它可以帮助开发者快速构建企业级应用。这个框架整合了多种流行的技术和组件,如Ant Design Vue、MyBatis Plus等,使得开发过程更加高效和便捷。本文将为您详细介绍如何轻松上手JeecgBoot框架,并分享一些实战经验。
一、JeecgBoot框架简介
1.1 什么是JeecgBoot?
JeecgBoot是一个全栈式框架,涵盖了前后端开发,旨在帮助开发者快速构建企业级应用。它提供了一套完整的解决方案,包括代码生成器、权限管理、表单设计、流程设计等,大大降低了开发难度。
1.2 JeecgBoot的特点
- 快速开发:通过代码生成器,可以快速生成表单、列表、树形选择等页面,提高开发效率。
- 可视化配置:支持可视化配置表单、流程、权限等,无需编写代码。
- 模块化设计:采用模块化设计,方便扩展和维护。
- 兼容性强:兼容多种数据库、前端框架和技术栈。
二、JeecgBoot安装与配置
2.1 安装环境
- 操作系统:Windows、Linux、MacOS
- JDK:1.8及以上
- Maven:3.5及以上
- MySQL:5.7及以上
2.2 创建项目
- 访问JeecgBoot官网,下载最新版本的JeecgBoot源码。
- 解压源码,使用IDE(如IntelliJ IDEA、Eclipse)打开项目。
- 使用Maven命令进行依赖下载,命令如下:
mvn clean install -U
- 启动项目,默认端口为8080。
三、JeecgBoot实战案例
3.1 创建表单
- 在项目中找到
jeecg-boot/jeecg-boot-module-system/src/main/resources/jeecg/config目录,编辑jeecg-boot.properties文件。 - 在文件中添加或修改以下配置:
# 表单页面路径
formPagePath=/form
- 在项目中找到
jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/form/mapper目录,创建一个新的Mapper接口,例如FormMapper.java。 - 在接口中定义方法,例如:
@Mapper
public interface FormMapper {
// 查询表单数据
List<Form> selectFormList(Map<String, Object> params);
// 保存表单数据
int saveForm(Form form);
// 删除表单数据
int deleteFormById(String id);
}
- 在项目中找到
jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/form/service目录,创建一个新的Service接口,例如FormService.java。 - 在接口中定义方法,例如:
@Service
public interface FormService {
// 查询表单数据
List<Form> selectFormList(Map<String, Object> params);
// 保存表单数据
int saveForm(Form form);
// 删除表单数据
int deleteFormById(String id);
}
- 在项目中找到
jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/form/controller目录,创建一个新的Controller类,例如FormController.java。 - 在类中实现接口方法,例如:
@RestController
@RequestMapping("/form")
public class FormController {
@Autowired
private FormService formService;
// 查询表单数据
@GetMapping("/list")
public Result<List<Form>> list(Form params) {
List<Form> list = formService.selectFormList(params);
return Result.ok(list);
}
// 保存表单数据
@PostMapping("/save")
public Result save(@RequestBody Form form) {
int result = formService.saveForm(form);
return Result.ok(result);
}
// 删除表单数据
@DeleteMapping("/delete")
public Result delete(String id) {
int result = formService.deleteFormById(id);
return Result.ok(result);
}
}
- 在项目中找到
jeecg-boot/jeecg-boot-module-system/src/main/resources/templates/form目录,创建一个新的HTML文件,例如form.html。 - 在文件中编写表单代码,例如:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>表单页面</title>
<link rel="stylesheet" href="/static/ant-design-vue/antdv.min.css">
</head>
<body>
<div id="app">
<a-form ref="form" :model="form" @submit="handleSubmit">
<a-form-item label="姓名" name="name">
<a-input v-model="form.name" placeholder="请输入姓名"/>
</a-form-item>
<a-form-item label="年龄" name="age">
<a-input-number v-model="form.age" placeholder="请输入年龄"/>
</a-form-item>
<a-form-item>
<a-button type="primary" html-type="submit">提交</a-button>
</a-form-item>
</a-form>
</div>
<script src="/static/ant-design-vue/antdv.min.js"></script>
<script src="/static/vue/vue.min.js"></script>
<script>
new Vue({
el: '#app',
data() {
return {
form: {
name: '',
age: ''
}
};
},
methods: {
handleSubmit() {
this.$refs.form.validate((valid) => {
if (valid) {
console.log(this.form);
} else {
console.log('表单验证失败');
return false;
}
});
}
}
});
</script>
</body>
</html>
- 在项目中找到
jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/form/service/impl目录,创建一个新的ServiceImpl类,例如FormServiceImpl.java。 - 在类中实现接口方法,例如:
@Service
public class FormServiceImpl implements FormService {
@Autowired
private FormMapper formMapper;
@Override
public List<Form> selectFormList(Map<String, Object> params) {
return formMapper.selectFormList(params);
}
@Override
public int saveForm(Form form) {
return formMapper.insert(form);
}
@Override
public int deleteFormById(String id) {
return formMapper.deleteByPrimaryKey(id);
}
}
- 在项目中找到
jeecg-boot/jeecg-boot-module-system/src/main/resources/mapper/form/FormMapper.xml文件,添加或修改SQL语句,例如:
<mapper namespace="org.jeecg.modules.form.mapper.FormMapper">
<select id="selectFormList" resultType="org.jeecg.modules.form.entity.Form">
SELECT id, name, age FROM form
</select>
<insert id="saveForm">
INSERT INTO form (name, age) VALUES (#{name}, #{age})
</insert>
<delete id="deleteFormById">
DELETE FROM form WHERE id = #{id}
</delete>
</mapper>
- 在项目中找到
jeecg-boot/jeecg-boot-module-system/src/main/resources/mapper/system/SysUserMapper.xml文件,添加或修改SQL语句,例如:
<mapper namespace="org.jeecg.modules.system.mapper.SysUserMapper">
<select id="selectSysUserList" resultType="org.jeecg.modules.system.entity.SysUser">
SELECT id, username, password FROM sys_user
</select>
</mapper>
- 在项目中找到
jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper目录,创建一个新的Mapper接口,例如SysUserMapper.java。 - 在接口中定义方法,例如:
@Mapper
public interface SysUserMapper {
// 查询用户数据
List<SysUser> selectSysUserList(Map<String, Object> params);
}
- 在项目中找到
jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service目录,创建一个新的Service接口,例如SysUserService.java。 - 在接口中定义方法,例如:
@Service
public interface SysUserService {
// 查询用户数据
List<SysUser> selectSysUserList(Map<String, Object> params);
}
- 在项目中找到
jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller目录,创建一个新的Controller类,例如SysUserController.java。 - 在类中实现接口方法,例如:
@RestController
@RequestMapping("/sysUser")
public class SysUserController {
@Autowired
private SysUserService sysUserService;
// 查询用户数据
@GetMapping("/list")
public Result<List<SysUser>> list(SysUser params) {
List<SysUser> list = sysUserService.selectSysUserList(params);
return Result.ok(list);
}
}
- 在项目中找到
jeecg-boot/jeecg-boot-module-system/src/main/resources/templates/sysUser目录,创建一个新的HTML文件,例如sysUser.html。 - 在文件中编写用户列表代码,例如:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>用户列表页面</title>
<link rel="stylesheet" href="/static/ant-design-vue/antdv.min.css">
</head>
<body>
<div id="app">
<a-table :columns="columns" :dataSource="data" :pagination="pagination">
<template #name="{ text, record }">
<a href="javascript:void(0)" @click="edit(record)">{{ text }}</a>
</template>
</a-table>
</div>
<script src="/static/ant-design-vue/antdv.min.js"></script>
<script src="/static/vue/vue.min.js"></script>
<script>
new Vue({
el: '#app',
data() {
return {
columns: [
{ title: '姓名', dataIndex: 'name', key: 'name', slots: { customRender: 'name' } },
{ title: '年龄', dataIndex: 'age', key: 'age' }
],
data: [],
pagination: {
pageSize: 10,
current: 1
}
};
},
methods: {
edit(record) {
console.log(record);
}
},
mounted() {
this.loadList();
},
methods: {
loadList() {
this.$http.get('/sysUser/list').then((response) => {
this.data = response.data;
});
}
}
});
</script>
</body>
</html>
- 在项目中找到
jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl目录,创建一个新的ServiceImpl类,例如SysUserServiceImpl.java。 - 在类中实现接口方法,例如:
@Service
public class SysUserServiceImpl implements SysUserService {
@Autowired
private SysUserMapper sysUserMapper;
@Override
public List<SysUser> selectSysUserList(Map<String, Object> params) {
return sysUserMapper.selectSysUserList(params);
}
}
- 在项目中找到
jeecg-boot/jeecg-boot-module-system/src/main/resources/mapper/system/SysUserMapper.xml文件,添加或修改SQL语句,例如:
<mapper namespace="org.jeecg.modules.system.mapper.SysUserMapper">
<select id="selectSysUserList" resultType="org.jeecg.modules.system.entity.SysUser">
SELECT id, username, password FROM sys_user
</select>
</mapper>
- 在项目中找到
jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper目录,创建一个新的Mapper接口,例如SysUserMapper.java。 - 在接口中定义方法,例如:
@Mapper
public interface SysUserMapper {
// 查询用户数据
List<SysUser> selectSysUserList(Map<String, Object> params);
}
- 在项目中找到
jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service目录,创建一个新的Service接口,例如SysUserService.java。 - 在接口中定义方法,例如:
@Service
public interface SysUserService {
// 查询用户数据
List<SysUser> selectSysUserList(Map<String, Object> params);
}
- 在项目中找到
jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller目录,创建一个新的Controller类,例如SysUserController.java。 - 在类中实现接口方法,例如:
@RestController
@RequestMapping("/sysUser")
public class SysUserController {
@Autowired
private SysUserService sysUserService;
// 查询用户数据
@GetMapping("/list")
public Result<List<SysUser>> list(SysUser params) {
List<SysUser> list = sysUserService.selectSysUserList(params);
return Result.ok(list);
}
}
- 在项目中找到
jeecg-boot/jeecg-boot-module-system/src/main/resources/templates/sysUser目录,创建一个新的HTML文件,例如sysUser.html。 - 在文件中编写用户列表代码,例如:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>用户列表页面</title>
<link rel="stylesheet" href="/static/ant-design-vue/antdv.min.css">
</head>
<body>
<div id="app">
<a-table :columns="columns" :dataSource="data" :pagination="pagination">
<template #name="{ text, record }">
<a href="javascript:void(0)" @click="edit(record)">{{ text }}</a>
</template>
</a-table>
</div>
<script src="/static/ant-design-vue/antdv.min.js"></script>
<script src="/static/vue/vue.min.js"></script>
<script>
new Vue({
el: '#app',
data() {
return {
columns: [
{ title: '姓名', dataIndex: 'name', key: 'name', slots: { customRender: 'name' } },
{ title: '年龄', dataIndex: 'age', key: 'age' }
],
data: [],
pagination: {
pageSize: 10,
current: 1
}
};
},
methods: {
edit(record) {
console.log(record);
}
},
mounted() {
this.loadList();
},
methods: {
loadList() {
this.$http.get('/sysUser/list').then((response) => {
this.data = response.data;
});
}
}
});
</script>
</body>
</html>
- 在项目中找到
jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl目录,创建一个新的ServiceImpl类,例如SysUserServiceImpl.java。 - 在类中实现接口方法,例如:
@Service
public class SysUserServiceImpl implements SysUserService {
@Autowired
private SysUserMapper sysUserMapper;
@Override
public List<SysUser> selectSysUserList(Map<String, Object> params) {
return sysUserMapper.selectSysUserList(params);
}
}
- 在项目中找到
jeecg-boot/jeecg-boot-module-system/src/main/resources/mapper/system/SysUserMapper.xml文件,添加或修改SQL语句,例如:
<mapper namespace="org.jeecg.modules.system.mapper.SysUserMapper">
<select id="selectSysUserList" resultType="org.jeecg.modules.system.entity.SysUser">
SELECT id, username, password FROM sys_user
</select>
</mapper>
- 在项目中找到
jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper目录,创建一个新的Mapper接口,例如SysUserMapper.java。 - 在接口中定义方法,例如:
@Mapper
public interface SysUserMapper {
// 查询用户数据
List<SysUser> selectSysUserList(Map<String, Object> params);
}
- 在项目中找到
jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service目录,创建一个新的Service接口,例如SysUserService.java。 - 在接口中定义方法,例如:
@Service
public interface SysUserService {
// 查询用户数据
List<SysUser> selectSysUserList(Map<String, Object> params);
}
- 在项目中找到
jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller目录,创建一个新的Controller类,例如SysUserController.java。 - 在类中实现接口方法,例如:
@RestController
@RequestMapping("/sysUser")
public class SysUserController {
@Autowired
private SysUserService sysUserService;
// 查询用户数据
@GetMapping("/list")
public Result<List<SysUser>> list(SysUser params) {
List<SysUser> list = sysUserService.selectSysUserList(params);
return Result.ok(list);
}
}
- 在项目中找到
jeecg-boot/jeecg-boot-module-system/src/main/resources/templates/sysUser目录,创建一个新的HTML文件,例如sysUser.html。 - 在文件中编写用户列表代码,例如:
”`html <!DOCTYPE html>
<meta charset="UTF-8">
<title>用户列表页面</title>
<link rel="stylesheet" href="/static/ant-design-vue/antdv.min.css">
<div id="app">
<a-table :columns="columns" :dataSource="data" :pagination="pagination">
<template #name="{ text, record }">
<a href="javascript:void(0)" @click="edit(record)">{{ text }}</a>
</template>
</a-table>
</div>
<script
