博主主页:一季春秋
博主简介:专注Java技术领域和毕业设计项目实战、Java、微信小程序、安卓等技术开发,远程调试部署、代码讲解、文档指导、ppt制作等技术指导。
主要内容:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、小程序、安卓app、大数据等设计与开发精彩专栏推荐订阅👇🏻👇🏻 不然下次找不到哟
SpringBoot+Vue项目持续更新中
http://t.csdn.cn/1mgm8
🍅文末获取联系🍅
一、项目介绍
数据库原理教学案例案例库管理系统,主要的模块包括管理员;首页、个人中心、管理员管理、基础数据管理、教学案例管理理、公告信息管理、老师管理、新闻信息管理、学生管理、轮播图信息、数据库管理,老师;首页、个人中心、教学案例管理、公告信息管理、新闻信息管理、学生管理,前台首页;首页、教学案例、公告信息、新闻信息、个人中心等功能。
二、项目主要技术
开发语言:Java
使用框架:spring boot
前端技术:Vue 、css、element-ui、js
开发工具:IDEA/MyEclipse/Eclipse、Visual Studio Code
数据库:MySQL 5.7/8.0
数据库管理工具:phpstudy/Navicat
JDK版本:jdk1.8
Maven: apache-maven 3.8.1-bin
三、系统体系结构
该软件具有良好的应用前景,能够很好地解决数据库理论教学中的问题。这个系统的函数比较完整,可以看到下面的图表,这个系统的函数的构造见下图。
四、系统实现
教学案例
教学案例信息
教学案例管理理
数据库管理
老师教学案例管理
五、实现代码
教学案例
/**
* 教学案例
* 后端接口
* @author
* @email
*/
@RestController
@Controller
@RequestMapping("/anli")
public class AnliController {
private static final Logger logger = LoggerFactory.getLogger(AnliController.class);
private static final String TABLE_NAME = "anli";
@Autowired
private AnliService anliService;
@Autowired
private TokenService tokenService;
@Autowired
private AnliCollectionService anliCollectionService;//教学案例收藏
@Autowired
private AnliLiuyanService anliLiuyanService;//教学案例留言
@Autowired
private DictionaryService dictionaryService;//字典
@Autowired
private GonggaoService gonggaoService;//公告信息
@Autowired
private LaoshiService laoshiService;//老师
@Autowired
private NewsService newsService;//新闻信息
@Autowired
private XueshengService xueshengService;//学生
@Autowired
private UsersService usersService;//管理员
/**
* 后端列表
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params, HttpServletRequest request){
logger.debug("page方法:,,Controller:{},,params:{}",this.getClass().getName(),JSONObject.toJSONString(params));
String role = String.valueOf(request.getSession().getAttribute("role"));
if(false)
return R.error(511,"永不会进入");
else if("学生".equals(role))
params.put("xueshengId",request.getSession().getAttribute("userId"));
else if("老师".equals(role))
params.put("laoshiId",request.getSession().getAttribute("userId"));
params.put("anliDeleteStart",1);params.put("anliDeleteEnd",1);
CommonUtil.checkMap(params);
PageUtils page = anliService.queryPage(params);
//字典表数据转换
List<AnliView> list =(List<AnliView>)page.getList();
for(AnliView c:list){
//修改对应字典表字段
dictionaryService.dictionaryConvert(c, request);
}
return R.ok().put("data", page);
}
/**
* 后端详情
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") Long id, HttpServletRequest request){
logger.debug("info方法:,,Controller:{},,id:{}",this.getClass().getName(),id);
AnliEntity anli = anliService.selectById(id);
if(anli !=null){
//entity转view
AnliView view = new AnliView();
BeanUtils.copyProperties( anli , view );//把实体数据重构到view中
//级联表 老师
//级联表
LaoshiEntity laoshi = laoshiService.selectById(anli.getLaoshiId());
if(laoshi != null){
BeanUtils.copyProperties( laoshi , view ,new String[]{ "id", "createTime", "insertTime", "updateTime", "username", "password", "newMoney", "laoshiId"});//把级联的数据添加到view中,并排除id和创建时间字段,当前表的级联注册表
view.setLaoshiId(laoshi.getId());
}
//修改对应字典表字段
dictionaryService.dictionaryConvert(view, request);
return R.ok().put("data", view);
}else {
return R.error(511,"查不到数据");
}
}
/**
* 后端保存
*/
@RequestMapping("/save")
public R save(@RequestBody AnliEntity anli, HttpServletRequest request){
logger.debug("save方法:,,Controller:{},,anli:{}",this.getClass().getName(),anli.toString());
String role = String.valueOf(request.getSession().getAttribute("role"));
if(false)
return R.error(511,"永远不会进入");
else if("老师".equals(role))
anli.setLaoshiId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));
Wrapper<AnliEntity> queryWrapper = new EntityWrapper<AnliEntity>()
.eq("laoshi_id", anli.getLaoshiId())
.eq("anli_name", anli.getAnliName())
.eq("anli_guanjianzi", anli.getAnliGuanjianzi())
.eq("anli_video", anli.getAnliVideo())
.eq("zan_number", anli.getZanNumber())
.eq("cai_number", anli.getCaiNumber())
.eq("anli_types", anli.getAnliTypes())
.eq("shangxia_types", anli.getShangxiaTypes())
.eq("anli_delete", 1)
;
logger.info("sql语句:"+queryWrapper.getSqlSegment());
AnliEntity anliEntity = anliService.selectOne(queryWrapper);
if(anliEntity==null){
anli.setZanNumber(1);
anli.setCaiNumber(1);
anli.setAnliClicknum(1);
anli.setShangxiaTypes(1);
anli.setAnliDelete(1);
anli.setInsertTime(new Date());
anli.setCreateTime(new Date());
anliService.insert(anli);
return R.ok();
}else {
return R.error(511,"表中有相同数据");
}
}
/**
* 后端修改
*/
@RequestMapping("/update")
public R update(@RequestBody AnliEntity anli, HttpServletRequest request) throws NoSuchFieldException, ClassNotFoundException, IllegalAccessException, InstantiationException {
logger.debug("update方法:,,Controller:{},,anli:{}",this.getClass().getName(),anli.toString());
AnliEntity oldAnliEntity = anliService.selectById(anli.getId());//查询原先数据
String role = String.valueOf(request.getSession().getAttribute("role"));
// if(false)
// return R.error(511,"永远不会进入");
// else if("老师".equals(role))
// anli.setLaoshiId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));
if("".equals(anli.getAnliPhoto()) || "null".equals(anli.getAnliPhoto())){
anli.setAnliPhoto(null);
}
if("".equals(anli.getAnliVideo()) || "null".equals(anli.getAnliVideo())){
anli.setAnliVideo(null);
}
if("".equals(anli.getAnliFile()) || "null".equals(anli.getAnliFile())){
anli.setAnliFile(null);
}
if("".equals(anli.getAnliContent()) || "null".equals(anli.getAnliContent())){
anli.setAnliContent(null);
}
anliService.updateById(anli);//根据id更新
return R.ok();
}
/**
* 删除
*/
@RequestMapping("/delete")
public R delete(@RequestBody Integer[] ids, HttpServletRequest request){
logger.debug("delete:,,Controller:{},,ids:{}",this.getClass().getName(),ids.toString());
List<AnliEntity> oldAnliList =anliService.selectBatchIds(Arrays.asList(ids));//要删除的数据
ArrayList<AnliEntity> list = new ArrayList<>();
for(Integer id:ids){
AnliEntity anliEntity = new AnliEntity();
anliEntity.setId(id);
anliEntity.setAnliDelete(2);
list.add(anliEntity);
}
if(list != null && list.size() >0){
anliService.updateBatchById(list);
}
return R.ok();
}