how2j.cn

相关下载
文件名 文件大小
请先登录 1m
使用站长秘制下载工具

14分16秒
本视频采用html5方式播放,如无法正常播放,请将浏览器升级至最新版本,推荐火狐,chrome,360浏览器 如果装有迅雷,播放视频呈现直接下载状态,请调整 迅雷系统设置-基本设置-启动-监视全部浏览器 (去掉这个选项)

步骤 1 : 目前Mybatis的问题   
步骤 2 : OverIsMergeablePlugin   
步骤 3 : generatorConfig.xml   
步骤 4 : MybatisGenerator   
步骤 5 : 自动生成的Category   
步骤 6 : 自动生成的CategoryExample   
步骤 7 : 自动生成的CategoryMapper.xml   
步骤 8 : 自动生成的CategoryMapper   
步骤 9 : CategoryService没变化   
步骤 10 : 修改CategoryServiceImpl   
步骤 11 : CategoryController没变化   
步骤 12 : 可运行项目   
步骤 13 : 改动效果   

步骤 1 :

目前Mybatis的问题

目前分类管理中Mybatis中相关类都是自己手动编写的,包括:Category.java, CategoryMapper.java和CategoryMapper.xml。

尤其是CategoryMapper.xml里面主要是SQL语句,可以预见在接下来的开发任务中,随着业务逻辑的越来越复杂,SQL语句也会越来越复杂,进而导致开发速度降低,出错率增加,维护成本上升等问题。

为了解决手动编写SQL语句效率低这个问题,我们对Mybatis部分的代码,使用逆向工程进行重构。

所谓的逆向工程,就是在已经存在的数据库表结构基础上,通过工具,自动生成Category.java, CategoryMapper.java和CategoryMapper.xml。

逆向工程使用了 MybatisGenerator这个工具,不熟悉的同学请先参考教程: Mybatis Generator 逆向工程
步骤 2 :

OverIsMergeablePlugin

MybatisGenerator插件是Mybatis官方提供的,这个插件存在一个固有的Bug,即当第一次生成了CategoryMapper.xml之后,再次运行会导致CategoryMapper.xml生成重复内容,而影响正常的运行。
为了解决这个问题,需要自己写一个小插件类OverIsMergeablePlugin。 它为什么起作用说起来比较复杂,不在这里展开了,反正。。。我也是复制粘贴来的~
至于怎么使用,将在下一个步骤generatorConfig.xml讲解,这里先准备这个类。
OverIsMergeablePlugin
package com.how2java.tmall.util; import org.mybatis.generator.api.GeneratedXmlFile; import org.mybatis.generator.api.IntrospectedTable; import org.mybatis.generator.api.PluginAdapter; import java.lang.reflect.Field; import java.util.List; public class OverIsMergeablePlugin extends PluginAdapter { @Override public boolean validate(List<String> warnings) { return true; } @Override public boolean sqlMapGenerated(GeneratedXmlFile sqlMap, IntrospectedTable introspectedTable) { try { Field field = sqlMap.getClass().getDeclaredField("isMergeable"); field.setAccessible(true); field.setBoolean(sqlMap, false); } catch (Exception e) { e.printStackTrace(); } return true; } }
步骤 3 :

generatorConfig.xml

增值内容,请先登录
步骤 4 :

MybatisGenerator

增值内容,请先登录
步骤 5 :

自动生成的Category

增值内容,请先登录
步骤 6 :

自动生成的CategoryExample

增值内容,请先登录
步骤 7 :

自动生成的CategoryMapper.xml

增值内容,请先登录
步骤 8 :

自动生成的CategoryMapper

增值内容,请先登录
步骤 9 :

CategoryService没变化

增值内容,请先登录
步骤 10 :

修改CategoryServiceImpl

增值内容,请先登录
步骤 11 :

CategoryController没变化

增值内容,请先登录
步骤 12 :

可运行项目

增值内容,请先登录
步骤 13 :

改动效果

按照这种方式修改之后,分类的pojo,xml.mapper都不用自己写的,大大提高了生产效率。
在下一个知识点也会演示其余8个实体类自动生成,一下子对应的pojo,xml,mapper都好了,生成出来的代码可读性也很好,还不会出错,生产效率简直提高得不要不要的~


HOW2J公众号,关注后实时获知布最新的教程和优惠活动,谢谢。


关于 实践项目-天猫整站SSM-分类逆向工程 的提问

尽量提供截图代码异常信息,有助于分析和解决问题。 也可进本站QQ群交流: 620943819
提问尽量提供完整的代码,环境描述,越是有利于问题的重现,您的问题越能更快得到解答。
对教程中代码有疑问,请提供是哪个步骤,哪一行有疑问,这样便于快速定位问题,提高问题得到解答的速度
在已经存在的几千个提问里,有相当大的比例,是因为使用了和站长不同版本的开发环境导致的,比如 jdk, eclpise, idea, mysql,tomcat 等等软件的版本不一致。
请使用和站长一样的版本,可以节约自己大量的学习时间。 站长把教学中用的软件版本整理了,都统一放在了这里, 方便大家下载: http://how2j.cn/k/helloworld/helloworld-version/1718.html

上传截图