我们无需手动编写 实体类、DAO、XML 配置文件,只需要使用 MyBatis 提供的一个 Maven 插件就可以自动生成所需的各种文件便能够满足基本的业务需求,如果业务比较复杂只需要修改相关文件即可。
配置插件
在 pom.xml 文件中增加 mybatis-generator-maven-plugin 插件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 <build > <plugins > <plugin > <groupId > org.mybatis.generator</groupId > <artifactId > mybatis-generator-maven-plugin</artifactId > <version > 1.3.5</version > <configuration > <configurationFile > $ {basedir} /src/main/resources/generator/generatorConfig.xml</configurationFile > <overwrite > true</overwrite > <verbose > true</verbose > </configuration > <dependencies > <dependency > <groupId > mysql</groupId > <artifactId > mysql-connector-java</artifactId > <version > $ {mysql.version} </version > </dependency > <dependency > <groupId > tk.mybatis</groupId > <artifactId > mapper</artifactId > <version > 3.4.4</version > </dependency > </dependencies > </plugin > </plugins > </build >
configurationFile:自动生成所需的配置文件路径
自动生成的配置
在 src/main/resources/generator/ 目录下创建 generatorConfig.xml 配置文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd" > <generatorConfiguration > <properties resource ="jdbc.properties" /> <context id ="Mysql" targetRuntime ="MyBatis3Simple" defaultModelType ="flat" > <property name ="beginningDelimiter" value ="`" /> <property name ="endingDelimiter" value ="`" /> <plugin type ="tk.mybatis.mapper.generator.MapperPlugin" > <property name ="mappers" value ="com.funtl.utils.MyMapper" /> </plugin > <jdbcConnection driverClass ="${jdbc.driverClass}" connectionURL ="${jdbc.connectionURL}" userId ="${jdbc.username}" password ="${jdbc.password}" > </jdbcConnection > <javaModelGenerator targetPackage ="com.funtl.hello.spring.boot.entity" targetProject ="src/main/java" /> <sqlMapGenerator targetPackage ="mapper" targetProject ="src/main/resources" /> <javaClientGenerator targetPackage ="com.funtl.hello.spring.boot.mapper" targetProject ="src/main/java" type ="XMLMAPPER" /> <table tableName ="%" > <generatedKey column ="id" sqlStatement ="Mysql" identity ="true" /> </table > </context > </generatorConfiguration >
配置数据源
在 src/main/resources 目录下创建 jdbc.properties 数据源配置:
1 2 3 4 5 jdbc.driverClass =com.mysql.jdbc.Driver jdbc.connectionURL =jdbc:mysql://ip:port/dbname?useUnicode=true&characterEncoding=utf-8&useSSL=false jdbc.username =root jdbc.password =123456
插件自动生成命令
1 mvn mybatis-generator:generate
成功生成控制台打印的消息,如:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 [INFO ] Scanning for projects.. . [INFO ] [INFO ] ------------------------------------------------------------------------ [INFO ] Building hello-spring-boot 0.0.1-SNAPSHOT [INFO ] ------------------------------------------------------------------------ [INFO ] [INFO ] --- mybatis-generator-maven-plugin:1.3.5:generate (default-cli) @ hello-spring-boot --- [INFO ] Connecting to the Database [INFO ] Introspecting table % [INFO ] Generating Record class for table tb_order [INFO ] Generating Mapper Interface for table tb_order [INFO ] Generating SQL Map for table tb_order [INFO ] Generating Record class for table tb_item_cat [INFO ] Generating Mapper Interface for table tb_item_cat [INFO ] Generating SQL Map for table tb_item_cat [INFO ] Generating Record class for table tb_item_desc [INFO ] Generating Mapper Interface for table tb_item_desc [INFO ] Generating SQL Map for table tb_item_desc [INFO ] Generating Record class for table tb_order_shipping [INFO ] Generating Mapper Interface for table tb_order_shipping [INFO ] Generating SQL Map for table tb_order_shipping [INFO ] Generating Record class for table tb_user [INFO ] Generating Mapper Interface for table tb_user [INFO ] Generating SQL Map for table tb_user [INFO ] Generating Record class for table tb_content [INFO ] Generating Mapper Interface for table tb_content [INFO ] Generating SQL Map for table tb_content [INFO ] Generating Record class for table tb_item_param_item [INFO ] Generating Mapper Interface for table tb_item_param_item [INFO ] Generating SQL Map for table tb_item_param_item [INFO ] Generating Record class for table tb_order_item [INFO ] Generating Mapper Interface for table tb_order_item [INFO ] Generating SQL Map for table tb_order_item [INFO ] Generating Record class for table tb_content_category [INFO ] Generating Mapper Interface for table tb_content_category [INFO ] Generating SQL Map for table tb_content_category [INFO ] Generating Record class for table tb_item [INFO ] Generating Mapper Interface for table tb_item [INFO ] Generating SQL Map for table tb_item [INFO ] Generating Record class for table tb_item_param [INFO ] Generating Mapper Interface for table tb_item_param [INFO ] Generating SQL Map for table tb_item_param [INFO ] Saving file TbOrderMapper.xml [INFO ] Saving file TbItemCatMapper.xml [INFO ] Saving file TbItemDescMapper.xml [INFO ] Saving file TbOrderShippingMapper.xml [INFO ] Saving file TbUserMapper.xml [INFO ] Saving file TbContentMapper.xml [INFO ] Saving file TbItemParamItemMapper.xml [INFO ] Saving file TbOrderItemMapper.xml [INFO ] Saving file TbContentCategoryMapper.xml [INFO ] Saving file TbItemMapper.xml [INFO ] Saving file TbItemParamMapper.xml [INFO ] Saving file TbOrder.java [INFO ] Saving file TbOrderMapper.java [INFO ] Saving file TbItemCat.java [INFO ] Saving file TbItemCatMapper.java [INFO ] Saving file TbItemDesc.java [INFO ] Saving file TbItemDescMapper.java [INFO ] Saving file TbOrderShipping.java [INFO ] Saving file TbOrderShippingMapper.java [INFO ] Saving file TbUser.java [INFO ] Saving file TbUserMapper.java [INFO ] Saving file TbContent.java [INFO ] Saving file TbContentMapper.java [INFO ] Saving file TbItemParamItem.java [INFO ] Saving file TbItemParamItemMapper.java [INFO ] Saving file TbOrderItem.java [INFO ] Saving file TbOrderItemMapper.java [INFO ] Saving file TbContentCategory.java [INFO ] Saving file TbContentCategoryMapper.java [INFO ] Saving file TbItem.java [INFO ] Saving file TbItemMapper.java [INFO ] Saving file TbItemParam.java [INFO ] Saving file TbItemParamMapper.java [WARNING ] Column id, specified as an identity column in table tb_order, does not exist in the table. [WARNING ] Column id, specified as an identity column in table tb_item_desc, does not exist in the table. [WARNING ] Column id, specified as an identity column in table tb_order_shipping, does not exist in the table. [INFO ] ------------------------------------------------------------------------ [INFO ] BUILD SUCCESS [INFO ] ------------------------------------------------------------------------ [INFO ] Total time: 2.901 s [INFO ] Finished at: 2018-05-29T01:24:17+08:00 [INFO ] Final Memory: 12M/192M [INFO ] ------------------------------------------------------------------------
完整配置案例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd" ><generatorConfiguration > <context id ="mysql" defaultModelType ="hierarchical" targetRuntime ="MyBatis3Simple" > <property name ="autoDelimitKeywords" value ="false" /> <property name ="javaFileEncoding" value ="UTF-8" /> <property name ="javaFormatter" value ="org.mybatis.generator.api.dom.DefaultJavaFormatter" /> <property name ="xmlFormatter" value ="org.mybatis.generator.api.dom.DefaultXmlFormatter" /> <property name ="beginningDelimiter" value ="`" /> <property name ="endingDelimiter" value ="`" /> <jdbcConnection driverClass ="com.mysql.jdbc.Driver" connectionURL ="jdbc:mysql:///pss" userId ="root" password ="admin" > </jdbcConnection > <javaTypeResolver type ="org.mybatis.generator.internal.types.JavaTypeResolverDefaultImpl" > <property name ="forceBigDecimals" value ="false" /> </javaTypeResolver > <javaModelGenerator targetPackage ="com._520it.mybatis.domain" targetProject ="src/main/java" > <property name ="constructorBased" value ="false" /> <property name ="enableSubPackages" value ="true" /> <property name ="immutable" value ="false" /> <property name ="rootClass" value ="com._520it.mybatis.domain.BaseDomain" /> <property name ="trimStrings" value ="true" /> </javaModelGenerator > <sqlMapGenerator targetPackage ="com._520it.mybatis.mapper" targetProject ="src/main/resources" > <property name ="enableSubPackages" value ="true" /> </sqlMapGenerator > <javaClientGenerator targetPackage ="com._520it.mybatis.mapper" type ="ANNOTATEDMAPPER" targetProject ="src/main/java" > <property name ="enableSubPackages" value ="true" /> </javaClientGenerator > <table tableName ="userinfo" > <property name ="constructorBased" value ="false" /> <property name ="ignoreQualifiersAtRuntime" value ="false" /> <property name ="immutable" value ="false" /> <property name ="modelOnly" value ="false" /> <property name ="selectAllOrderByClause" value ="age desc,username asc" /> <property name ="useActualColumnNames" value ="false" /> <columnOverride column ="username" > <property name ="property" value ="userName" /> </columnOverride > </table > </context > </generatorConfiguration >
If you like this blog or find it useful for you, you are welcome to comment on it. You are also welcome to share this blog, so that more people can participate in it. If the images used in the blog infringe your copyright, please contact the author to delete them. Thank you !