codepay
,运行如下sql,生成数据表/* Navicat MySQL Data Transfer Source Server : 本地 Source Server Version : 80013 Source Host : 127.0.0.1:3306 Source Database : codepay Target Server Type : MYSQL Target Server Version : 80013 File Encoding : 65001 Date: 2019-03-22 18:19:55 */ SET FOREIGN_KEY_CHECKS=0; -- ---------------------------- -- Table structure for t_code -- ---------------------------- DROP TABLE IF EXISTS `t_code`; CREATE TABLE `t_code` ( `id` int(11) NOT NULL AUTO_INCREMENT, `xsdcode` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, `used` varchar(11) NOT NULL, `name` varchar(255) NOT NULL, `subject` varchar(255) NOT NULL, PRIMARY KEY (`id`), KEY `xsdCode` (`xsdcode`) ) ENGINE=InnoDB AUTO_INCREMENT=234 DEFAULT CHARSET=utf8; -- ---------------------------- -- Table structure for t_pay -- ---------------------------- DROP TABLE IF EXISTS `t_pay`; CREATE TABLE `t_pay` ( `id` varchar(255) NOT NULL, `payname` varchar(255) NOT NULL, `payamout` double(255,0) NOT NULL, `paytime` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, `paystaus` varchar(255) NOT NULL, `mail` varchar(255) NOT NULL, `auditpass` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, `xsdcode` int(255) DEFAULT NULL, PRIMARY KEY (`id`), KEY `xsdCode` (`xsdcode`), CONSTRAINT `t_pay_ibfk_1` FOREIGN KEY (`xsdcode`) REFERENCES `t_code` (`id`) ON DELETE SET NULL ON UPDATE SET NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
maven
工程(为什么用maven工程呢?因为jar
包管理起来不方便,没有学过maven的同学,可以先了解一下maven)<dependencies> <dependency> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-core</artifactId> <version>1.3.7</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.11 </version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.5</version> </dependency> </dependencies>
xml
文件<?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> <!-- <classPathEntry location="/Program Files/IBM/SQLLIB/java/db2java.zip" /> --> <context id="DB2Tables" targetRuntime="MyBatis3"> <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/codepay?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8" userId="root" password="123456"> </jdbcConnection> <javaTypeResolver > <property name="forceBigDecimals" value="false" /> </javaTypeResolver> <javaModelGenerator targetPackage="com.raven.pojo" targetProject=".\src"> <property name="enableSubPackages" value="true" /> <property name="trimStrings" value="true" /> </javaModelGenerator> <sqlMapGenerator targetPackage="config" targetProject=".\resources"> <property name="enableSubPackages" value="true" /> </sqlMapGenerator> <javaClientGenerator type="XMLMAPPER" targetPackage="com.raven.dao" targetProject=".\src"> <property name="enableSubPackages" value="true" /> </javaClientGenerator> <!-- <table schema="DB2ADMIN" tableName="ALLTYPES" domainObjectName="Customer" > <property name="useActualColumnNames" value="true"/> <generatedKey column="ID" sqlStatement="DB2" identity="true" /> <columnOverride column="DATE_FIELD" property="startDate" /> <ignoreColumn column="FRED" /> <columnOverride column="LONG_VARCHAR_FIELD" jdbcType="VARCHAR" /> </table> --> <table tableName="t_code" domainObjectName="Code"></table> <table tableName="t_pay" domainObjectName="Pay"></table> </context> </generatorConfiguration>
介绍一下里面主要标签的作用
jdbcConnection
配置自己的数据源信息<javaModelGenerator>
targetPackage
指定自动生成的pojo
的包名targetProject
指定路径<sqlMapGenerator>
targetPackage
指定自动生成的mapper.xml
文件的包名targetProject
指定路径<javaModelGenerator>
targetPackage
指定自动生成的dao
层接口的包名targetProject
指定路径<table>
tableName
表示数据表的名字domainObjectName
表示POJO
的名字public class MybatisGener { public static void main(String[] args) throws Exception { List<String> warnings = new ArrayList<String>(); boolean overwrite = true; // ****的配置文件 File configFile = new File("resources/generatorConfig.xml"); System.out.println(configFile.exists()); ConfigurationParser cp = new ConfigurationParser(warnings); Configuration config = cp.parseConfiguration(configFile); DefaultShellCallback callback = new DefaultShellCallback(overwrite); MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings); myBatisGenerator.generate(null); } }
生成之后的工程目录如下:
接下来,我们玩一玩mybatis为我们生成的接口,真的很强大。尤其是生成的 *Example
,查询起来真的很好玩。
public class GenerTest { public static void main(String[] args) throws IOException { InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml"); SqlSessionFactory build = new SqlSessionFactoryBuilder().build(inputStream); SqlSession openSession = build.openSession(); PayMapper payMapper = openSession.getMapper(PayMapper.class); PayExample payExample = new PayExample(); Criteria createCriteria = payExample.createCriteria(); createCriteria.andIdIsNotNull(); List<Pay> list = payMapper.selectByExample(payExample); list.forEach((e)->{ System.out.println(e.toString()); }); } }