MyBatis高级(逆向工程及MyBatis注解)

【摘要】 一、使用MBG逆向工程生成代码
在企业中为了提高开发效率,有很多通用代码实际上是直接使用代码生成器生成出来的。
官方网址: http://mybatis.org/generator/
使用步骤:
1、添加插件
<plugins> <plugin> <groupId>org.mybatis.generator</groupId> <artifactId>myb…

一、使用MBG逆向工程生成代码

在企业中为了提高开发效率,有很多通用代码实际上是直接使用代码生成器生成出来的。

官方网址:
http://mybatis.org/generator/

使用步骤:

1、添加插件

 <plugins> <plugin> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-plugin</artifactId> <version>1.3.2</version> <configuration> <verbose>true</verbose> <overwrite>true</overwrite> </configuration> <dependencies> <!--加入依赖--> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.6</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.25</version> </dependency> </dependencies> </plugin> </plugins>

  
 

2、添加配置文件
配置好maven插件,下面需要配置插件需要天健的配置文件.
在maven项目下的src/main/resources 目录下建立名为maven的项目配置文件存放路径如下图:generatorConfig.xml 和 generator.properties 配置文件。

<generatorConfiguration> <!--导入属性配置--> <properties resource="generator.properties"></properties> <!--指定特定数据库的jdbc驱动jar包的位置--> <context id="default" targetRuntime="MyBatis3"> <!--optional,旨在创建class时,对注释进行控制--> <commentGenerator> <property name="suppressDate" value="true"/> <property name="suppressAllComments" value="true"/> </commentGenerator> <!--jdbc的数据库连接--> <jdbcConnection driverClass="${driver}" connectionURL="${url}" userId="${username}" password="${password}"> </jdbcConnection> <!--非必须,类型处理器,在数据库类型和java类型之间的转换控制--> <javaTypeResolver> <property name="forceBigDecimals" value="false"/> </javaTypeResolver> <!--Model模型生成器,用来生成含有主键key的类,记录类以及查询Example类 targetPackage:指定生成的model生成所在的包名 targetProject:指定在该项目下所在的路径 --> <javaModelGenerator targetPackage="com.acoffee.maven.pojo" targetProject="src/main/java"> <!--是否允许子包,即targetPackages,schemaName,tableName--> <property name="enableSubPackages" value="true"/> <!--是否对model添加构造函数--> <property name="constructorBased" value="true"/> <!--是否对类char类型的列的数据进行trim操作--> <property name="trimStrings" value="true"/> <!--建立的model对象是否 不可改变 即生成的Model对象不会有setter方法,只有构造方法--> <property name="immytable" value="false"/> </javaModelGenerator> <!--Mapper映射文件生成所在目录为每一个数据库的表生成对应的SqlMap文件--> <sqlMapGenerator targetPackage="mapper" targetProject="src/main/resources"> <property name="enableSubPackages" value="false"/> </sqlMapGenerator> <!--客户端代码,生成易于使用的针对Model对象和XML配置文件的代码 type="ANNOTATEDMAPPER",生成Java Model和基于注解的Mapper对象 type="MIXEDMAPPER",生成基于注解的Java Model和Mapper对象 type="XMLMAPPER",生成SQLMap XML文件和独立的Mapper接口 --> <javaClientGenerator type="XMLMAPPER" targetPackage="com.acoffee.maven.dao" targetProject="src/main/java"> <property name="enableSubPackages" value="true"/> </javaClientGenerator> <table tableName="dept" domainObjectName="Dept" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"> </table> </context>
</generatorConfiguration>

  
 

3、Intellj配置
MyBatis Generator 生成代码的运行方式:命令行,使用Ant,使用Maven、Java编码、我们采用Maven插件mybatis-generator-maven-plugin来运行MyBatis Generator,用的是命令行的方式。

添加运行maven 的配置

在这里插入图片描述
执行结果:
在这里插入图片描述

将generatorConfig.xml配置文件中的table全部改为true:

 <table tableName="dept" domainObjectName="Dept" enableCountByExample="true" enableUpdateByExample="true" enableDeleteByExample="true" enableSelectByExample="true" selectByExampleQueryId="true"> </table>

  
 

执行结果:
在这里插入图片描述
里面包含一些条件查询的接口等等
在这里插入图片描述
测试文件:

public class AppTest { @Test public void shouldAnswerWithTrue() { SqlSession sqlSession = MyBatisUtil.createSession(); DeptMapper deptMapper = sqlSession.getMapper(DeptMapper.class); DeptExample deptExample = new DeptExample(); DeptExample.Criteria criteria = deptExample.createCriteria();
// criteria.andDeptnoEqualTo(10);//按部门编号查 criteria.andDnameLike("%e%");//模糊查询 List<Dept> deptList = deptMapper.selectByExample(deptExample); for (Dept dept : deptList) { System.out.println(dept); } MyBatisUtil.closeSession(sqlSession); }
}
  
 

执行结果:
在这里插入图片描述
其中还有很多功能:动态sql等等(这个组件算是比较古老的)。

二、MyBatis的注解

注解 功能
@Insert 实现新增
@Update 实现更新
@Delete 实现删除
@Select 实现查询
@Result 实现结果集封装
@Results 可以与@Result 一起使用,封装多个结果集
@ResultMap 实现引用
@Results 定义的封装
@One 实现一对一结果集封装
@Many 实现一对多结果集封装
@SelectProvider 实现动态 SQL 映射
@CacheNamespace 实现注解二级缓存的使用
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享