之前开发了一个亚健康测评系统,使用的是SSM框架,里面第一次使用到了mybatis-generator逆向代码生成工具,很方便,省去了基本的增删改查的mapper文件及sql的编写,还能避免错误,这里推荐一下!
当然,使用该工具的前提是你得有这个工具。他的下载地址为:https://github.com/mybatis/generator/releases
如果使用Maven就不需要下载了,见pom.xml文件配置即可
在你建好数据库的前提下,该工具才能发挥作用,而且数据表必须包含主键,生成的select方法都是根据主键查找的。
以下是配置文件
pom.xml中加入插件
1 <plugin> 2 <groupId>org.mybatis.generator</groupId> 3 <artifactId>mybatis-generator-maven-plugin</artifactId> 4 <version>1.3.2</version> 5 <configuration> 6 <configurationFile>src/main/resources/mybatis-generator/generatorConfig.xml</configurationFile> 7 <verbose>true</verbose> 8 <overwrite>true</overwrite> 9 </configuration> 10 <executions> 11 <execution> 12 <id>Generate MyBatis Artifacts</id> 13 <goals> 14 <goal>generate</goal> 15 </goals> 16 </execution> 17 </executions> 18 <dependencies> 19 <dependency> 20 <groupId>org.mybatis.generator</groupId> 21 <artifactId>mybatis-generator-core</artifactId> 22 <version>1.3.2</version> 23 </dependency> 24 </dependencies> 25 </plugin>
generatorConfig.xml的具体配置
1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd" > 3 <generatorConfiguration> 4 <!-- 数据库配置文件 --> 5 <properties resource="db.properties" /> 6 7 <context id="context1"> 8 <property name="javaFileEncoding" value="UTF-8" /> 9 <property name="autoDelimitKeywords" value="true" /> 10 <property name="javaFormatter" value="org.mybatis.generator.api.dom.DefaultJavaFormatter" /> 11 <property name="xmlFormatter" value="org.mybatis.generator.api.dom.DefaultXmlFormatter" /> 12 13 <!-- 注释生成规则 --> 14 <commentGenerator type="org.mybatis.generator.internal.HairyCommentGenerator"> 15 <property name="suppressAllComments" value="false" /> 16 <property name="suppressDate" value="true" /> 17 </commentGenerator> 18 19 <!-- 数据库连接 --> 20 <jdbcConnection driverClass="${driver}" connectionURL="${url}" userId="${user}" password="${password}" /> 21 22 <!-- 数据库的生成配置 --> 23 <javaModelGenerator targetPackage="com.lsd.bean" targetProject="${project.dir}/src/main/java" /> 24 <sqlMapGenerator targetPackage="com.lsd.dao" targetProject="${project.dir}/src/main/resources" /> 25 <javaClientGenerator targetPackage="com.lsd.dao" targetProject="${project.dir}/src/main/java" type="XMLMAPPER" /> 26 27 <!-- 以上部分配置固定,无需改动,此处往下开始项目设置 --> 28 29 <!-- user表 --> 30 <table tableName="user" domainObjectName="User"> 31 <property name="useActualColumnNames" value="true" /> 32 <generatedKey column="id" sqlStatement="SELECT LAST_INSERT_ID()" identity="true" /> 33 </table> 34 <!-- Account表 --> 35 <table tableName="Account" domainObjectName="Account"> 36 <property name="useActualColumnNames" value="true" /> 37 <generatedKey column="id" sqlStatement="SELECT LAST_INSERT_ID()" identity="true" /> 38 </table> 39 <!-- qbank表 --> 40 <table tableName="Qbank" domainObjectName="Qbank"> 41 <property name="useActualColumnNames" value="true" /> 42 <generatedKey column="id" sqlStatement="SELECT LAST_INSERT_ID()" identity="true" /> 43 </table> 44 <!-- Questionfiles表 --> 45 <table tableName="Questionfiles" domainObjectName="Questionfiles"> 46 <property name="useActualColumnNames" value="true" /> 47 <generatedKey column="id" sqlStatement="SELECT LAST_INSERT_ID()" identity="true" /> 48 </table> 49 <!-- TestRecord表 --> 50 <table tableName="TestRecord" domainObjectName="TestRecord"> 51 <property name="useActualColumnNames" value="true" /> 52 <generatedKey column="id" sqlStatement="SELECT LAST_INSERT_ID()" identity="true" /> 53 </table> 54 <!-- EvaludateScore表 --> 55 <table tableName="EvaludateScore" domainObjectName="EvaludateScore"> 56 <property name="useActualColumnNames" value="true" /> 57 <generatedKey column="id" sqlStatement="SELECT LAST_INSERT_ID()" identity="true" /> 58 </table> 59 <!-- TestAdvice表 --> 60 <table tableName="TestAdvice" domainObjectName="TestAdvice"> 61 <property name="useActualColumnNames" value="true" /> 62 <generatedKey column="id" sqlStatement="SELECT LAST_INSERT_ID()" identity="true" /> 63 </table> 64 </context> 65 </generatorConfiguration>
spring-mybatis.xml的具体配置
1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xmlns:context="http://www.springframework.org/schema/context" 5 xsi:schemaLocation="http://www.springframework.org/schema/beans 6 http://www.springframework.org/schema/beans/spring-beans.xsd 7 http://www.springframework.org/schema/context 8 http://www.springframework.org/schema/context/spring-context-3.2.xsd"> 9 <!-- 自动扫描 --> 10 <context:component-scan base-package="com.lsd.controller,com.lsd.filter" /> 11 12 <!-- 引入配置文件 --> 13 <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 14 <property name="locations" value="classpath:db.properties"/> 15 </bean> 16 17 <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> 18 <property name="driverClass" value="${driver}" /> 19 <property name="jdbcUrl" value="${url}" /> 20 <property name="user" value="${user}" /> 21 <property name="password" value="${password}" /> 22 </bean> 23 24 <!-- spring和MyBatis完美整合,不需要mybatis的配置映射文件 --> 25 <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> 26 <!-- 注入数据源 --> 27 <property name="dataSource" ref="dataSource" /> 28 <!-- 自动扫描mapper.xml文件 --> 29 <property name="mapperLocations"> 30 <array> 31 <value>classpath:com/lsd/dao/custom/*.xml</value> 32 <value>classpath:com/lsd/dao/*.xml</value> 33 </array> 34 </property> 35 </bean> 36 37 <!-- DAO接口所在包名,Spring会自动查找其下的类 --> 38 <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> 39 <property name="basePackage" value="com.lsd.dao" /> 40 <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property> 41 </bean> 42 43 <!-- 事务管理 --> 44 <bean id="transactionManager" 45 class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> 46 <property name="dataSource" ref="dataSource" /> 47 </bean> 48 49 </beans>
这个系统的编写我用的是Intellij IDEA,用了Maven,所以使用生成工具可以直接使用maven的命令提示符,具体的生成语句是mvn mybatis-generator:generate ,一旦数据库进行了更改,都需使用这句代码重新生成bean、dao、mapper文件