Java Web应用开发项目教程(第3版) 教案 拓展实践2-estoreSSM开发文档 9 使用mybaits逆向工程改写_第1页
Java Web应用开发项目教程(第3版) 教案 拓展实践2-estoreSSM开发文档 9 使用mybaits逆向工程改写_第2页
Java Web应用开发项目教程(第3版) 教案 拓展实践2-estoreSSM开发文档 9 使用mybaits逆向工程改写_第3页
Java Web应用开发项目教程(第3版) 教案 拓展实践2-estoreSSM开发文档 9 使用mybaits逆向工程改写_第4页
Java Web应用开发项目教程(第3版) 教案 拓展实践2-estoreSSM开发文档 9 使用mybaits逆向工程改写_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

9使用mybaits逆向工程改写Mybatis提供一个工具,可以由数据表自动生成实体类、接口和sql映射文件等。我们的改写过程由下面几步组成:(1)使用mybatis-generator生成逆向工程,即由数据表自动生成实体类、dao接口、**mapper.xml映射文件。(2)用生成的实体类、dao接口、**mapper.xml替换原来estore-ssm工程中的对应部分。(3)有了自动生成的一套代码之后,我们就要利用生成的dao接口和example类来执行数据表的增删改查。因此要修改serviceImpl中的相应代码。(4)由于自动生成的实体类和我们自己写的实体类某些数据类型不同,例如:bit型,我们自己写的时候用的int型,生成的实体类用的Boolean型。访问这部分数据的页面el表达式要做些修改。1改写准备由于马上用逆向工程生成的代码和配置文件替换原有estore-ssm的mybaits部分。大家可以选择下面两种操作方式(选其一)。(1)不再创建新工程,而是在estore-ssm工程上直接改写。如果采用此方式,请先estore-ssm工程复制一份,备份到硬盘某位置,待会儿改写的时候,有些部分可以参考下原来的实现方式。(2)创建一个estore-ssm工程的副本,在其上修改。如果采用此方式,则重新创建一个新的web工程,换个名字,把原来estore-ssm中工程中的所有java文件、页面文件、配置文件、资源等一切拷贝到新web工程中。2使用mybatis-generator生成逆向工程2.1创建Java工程并导入mybatis-generatorjar包创建一个Java工程,名字自定,我们用这个工程来生成逆向。导入两个jar包(mysql驱动和mybatis-generator-core)如下:2.2编写配置文件生成逆向工程需要一个配置文件,该配置文件将指明:如何从数据表生成实体类、映射文件、**Dao接口,可以指定这些自动生成的文件的名字、位置等。该文件已经提供,但是需要依据情况做一些修改。为了让生成的各种文件替换到原工程之后,代码错误和改动最小化,配置文件修改准则如下:(1)自动生成的实体类的包名、类名和原estore-ssm的实体类包、类名完全一致。(2)自动生成的**Dao接口的包名、接口名和原estore-ssm的**Dao包和接口完全一致。(3)自动生成的****.xml,sql映射文件放置位置同原estore-ssm的映射文件放置位置完全一致。将generatorConfig.xml文件贴到src文件夹下,依照下面截图,根据实际情况修改参数,请仔细阅读准则和参数含义。生成的实体类所属的包名!这里改成和estore-ssm生成的实体类所属的包名!这里改成和estore-ssm实体类同包,这样生成的实体类复制到estore-ssm里才不会报错。连接mysql数据库的驱动类名、连接字符串、用户名、密码生成的***Dao接口的位置这里改成和estore-ssm的**Dao.xml同一位置,这样生成的接口覆盖到estore-ssm之后,相关的配置文件就不用改了。生成的***Dao接口的位置这里改成和estore-ssm的**Dao.xml同一位置,这样生成的接口覆盖到estore-ssm之后,相关的配置文件就不用改了。生成的***mapper.xml文件的位置这里改成和estore-ssm的**Mapper.xml同一位置,这样配置文件覆盖到estore-ssm之后,相关的配置文件就不用改了。这几句设置了将哪些数据表生成逆向的文件,设置了5张表(商品、用户、订单、订单明细、购物车)这几句设置了将哪些数据表生成逆向的文件,设置了5张表(商品、用户、订单、订单明细、购物车)domainObjectName用来指定生成的实体类类名mapperName用来指定这张表对于的**Dao接口名实体类名和**Dao接口名字如果不指定,会默认为TbProduct,TbProductMapper(以tb_product表为例)本例将名字指定为和estore-ssm中的实体类和××Dao接口同名,是为了生成的文件覆盖到estore-ssm之后改动最小!2.3生成逆向工程的代码运行下面代码(代码中有读配置文件的语句,文件路径依据实际情况调整),将生成各种逆向工程中的各种文件。运行完之后刷新一下现有的工程,就能看到生成的东西。importjava.io.File;importjava.util.ArrayList;importjava.util.List;importorg.mybatis.generator.api.MyBatisGenerator;importorg.mybatis.generator.config.Configuration;importorg.mybatis.generator.config.xml.ConfigurationParser;importernal.DefaultShellCallback;publicclassTest{ publicstaticvoidmain(String[]args)throwsException{ Listwarnings=newArrayList(); booleanoverwrite=true; //指定逆向工程配置文件 FileconfigFile=newFile("generatorConfig.xml"); ConfigurationParsercp=newConfigurationParser(warnings); Configurationconfig=cp.parseConfiguration(configFile); DefaultShellCallbackcallback=newDefaultShellCallback(overwrite); MyBatisGeneratormyBatisGenerator=newMyBatisGenerator(config, callback,warnings); myBatisGenerator.generate(null); }}2.4生成结果生成的***.xml,sql映射文件请核对一下映射文件的位置是否和estore-ssm一致生成的***.xml,sql映射文件请核对一下映射文件的位置是否和estore-ssm一致生成的实体类、每个实体类对应的example类(该类可以用来构造复杂的条件)使用的时候再介绍。请核对一下实体类的包、类名是否和estore-ssm一致生成的**Dao接口请核对一下包、接口名是否和estore-ssm一致3将逆向生成的文件替换到estore-ssm工程(或其副本工程)中我使用了副本工程,名为estore-ssm-gen,大家的工程名跟我的不同,请无视工程名称。下面通称为estore-ssm工程。(1)将逆向生成的实体类和其example类文件,全部覆盖到estore-ssm的cn.estore.domain包中。如果逆向时生成的名字没问题,覆盖后没有错误。(2)将逆向生成的**Dao接口文件,覆盖到estore-ssm的cn.estore.dao包中。serviceImpl会报错,暂时不理。(3)将逆向生成的***.xmlsql映射文件,覆盖到estore-ssm的resources.mappers包中。覆盖后的estore-ssm工程如下:4修改ProductServiceImpl完成首页和搜索因为**Dao接口是逆向生成的,不是自己写的方法,现在只能利用生成的方法来完成首页和搜索功能。如果生成的方法实在无法达到目的,可以自己向接口里添加方法,向sql映射文件里加sql语句。下面观察一下自动生成的ProductDao接口里有哪些方法可以用:按主键更新,不更新为空的字段。前面几个是按条件更新,条件由ProductExample来创建按主键查按条件select,条件由按主键更新,不更新为空的字段。前面几个是按条件更新,条件由ProductExample来创建按主键查按条件select,条件由ProductExample来创建这两个insert,在为空字段上有点差别,具体的自行百度delete,条件由ProductExample对象来创建delete,按主键删Count(*)条件由ProductExample对象来创建4.1为**Example类添加@Component注解下面以ProductExample类为例,添加@Component注解,其余Example类的注解请自行添加。4.2为applicationContext-service.xml追加一个组件扫描包4.3为ProductServiceImpl自动注入ProductExample对象4.4修改selectProductById方法直接调用dao接口的按主键查询方法。4.5修改countProduts方法这个方法用来按照商品名进行模糊查询,统计条数。如果商品名为空,则查询所有商品。逆向自动生成的countByExample方法不允许参数为空,所以要自己写个if来判断商品名是否为空,为空,则查询所有商品的条数(见下面的if)。把productExample里的条件清空否则使用exmple对象来创建条件Criteria,添加一个namelike条件,然后再count。由于count方法返回long,我们的方法返回值为int,所以把productExample里的条件清空4.6selectProducts方法保持不变由于逆向未生成limit的sql代码,所以分页部分还是使用原来的自己写的方法和sql映射。为ProductDao添加方法(原来estore-ssm工程里有,贴过来就行了)为ProductDao.xml文件添加一个sql映射(原来estore-ssm工程里有,贴过来就行了)4.7修改showProduct.jsp和showProductById.jsp由于是否特价字段,逆向生成了Boolean类型,原来是int型。判断是否特价的地方均要修改,原来${product.discount==0}的位置要改成下面的样子:5修改CustomerServiceImpl完成登录5.1为CustomerServiceImpl注入CustomerExample对象5.2修改login方法为customerExample对象添加两个条件,用户名等于××和密码等于××,然后做查询,返回List,如果没有符合条件的记录,list长度为0,返回n

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论