Bitte geben Sie die Quelle für den Nachdruck an:
Wie bereits erwähnt: Spring+SpringMVC+MyBatis ausführliches Lernen und Konstruieren (9) – MyBatis- und Spring-Integration
Automatisch generiert mit Mapper von Die offizielle Website Das Tool mybatis-generator-core-1.3.2 wird zum Generieren von Po-Klassen und Mapper-Mapping-Dateien verwendet.
Mybatis verlangt von Programmierern, dass sie selbst SQL-Anweisungen schreiben, die den für die Mybatis-Ausführung erforderlichen Code für eine einzelne Tabelle (mapper.java) automatisch generieren können , Mapper .xml, po...)
In der tatsächlichen Unternehmensentwicklung die häufig verwendete Reverse-Engineering-Methode:
Generieren Sie Java-Code aus der Datenbanktabelle.
3.1 Reverse Engineering ausführen
Es wird empfohlen, die Java-Programmmethode zu verwenden, ohne auf Entwicklungstools angewiesen zu sein.
3.2Mapper-Generierungskonfigurationsdatei
(1) Fügen Sie die Datenbanktabelle hinzu generiert werden;
(2) Der Paketpfad, in dem sich die PO-Datei befindet.
(3) Der Paketpfad, in dem sich die Mapper-Datei befindet.
Die Konfigurationsdatei lautet wie folgt:
<?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="testTables" targetRuntime="MyBatis3"><commentGenerator><!-- 是否去除自动生成的注释 true:是 : false:否 --><property name="suppressAllComments" value="true" /></commentGenerator><!--数据库连接的信息:驱动类、连接地址、用户名、密码 --><jdbcConnection driverClass="com.mysql.jdbc.Driver"connectionURL="jdbc:mysql://localhost:3306/mybatisdemo" userId="root"password=""></jdbcConnection><!-- <jdbcConnection driverClass="oracle.jdbc.OracleDriver" connectionURL="jdbc:oracle:thin:@127.0.0.1:1521:yycg" userId="yycg" password="yycg"> </jdbcConnection> --><!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL 和 NUMERIC 类型解析为java.math.BigDecimal --><javaTypeResolver><property name="forceBigDecimals" value="false" /></javaTypeResolver><!-- targetProject:生成PO类的位置 --><javaModelGenerator targetPackage="joanna.yan.po"targetProject=".\src"><!-- enableSubPackages:是否让schema作为包的后缀 --><property name="enableSubPackages" value="false" /><!-- 从数据库返回的值被清理前后的空格 --><property name="trimStrings" value="true" /></javaModelGenerator><!-- targetProject:mapper映射文件生成的位置 --><sqlMapGenerator targetPackage="joanna.yan.mapper" targetProject=".\src"><!-- enableSubPackages:是否让schema作为包的后缀 --><property name="enableSubPackages" value="false" /></sqlMapGenerator><!-- targetPackage:mapper接口生成的位置 --><javaClientGenerator type="XMLMAPPER"targetPackage="joanna.yan.mapper" targetProject=".\src"><!-- enableSubPackages:是否让schema作为包的后缀 --><p roperty name="enableSubPackages" value="false" /></javaClientGenerator><!-- 指定数据库表 --><table tableName="items"></table><table tableName="orders"></table><table tableName="orderdetail"></table><table tableName="user"></table><!-- <table schema="" tableName="sys_user"></table> <table schema="" tableName="sys_role"></table> <table schema="" tableName="sys_permission"></table> <table schema="" tableName="sys_user_role"></table> <table schema="" tableName="sys_role_permission"></table> --><!-- 有些表的字段需要指定java类型 <table schema="" tableName=""> <columnOverride column="" javaType="" /> </table> --></context></generatorConfiguration>
public class GeneratorSqlmap {public void generator() throws Exception{ List<String> warnings = new ArrayList<String>();boolean overwrite = true;//指定 逆向工程配置文件File configFile = new File("generatorConfig.xml"); 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); } public static void main(String[] args) throws Exception {try { GeneratorSqlmap generatorSqlmap = new GeneratorSqlmap(); generatorSqlmap.generator(); } catch (Exception e) { e.printStackTrace(); } } }
3.4 Kopieren Sie die generierte Mapper-Datei in das im Projekt angegebene Verzeichnis
3.4.2mapper.java
Hinweis: Die Mapper.xml-Datei und die Datei „mapper.java“ befinden sich in einem Verzeichnis mit demselben Dateinamen.
3.4.3Mapper-Schnittstellentest
= ClassPathXmlApplicationContext("classpath:spring/applicationContext.xml"=(ItemsMapper) applicationContext.getBean("itemsMapper" ="手机" =ItemsExample.Criteria criteria="笔记本3"List<Items> list= =itemsMapper.selectByPrimaryKey(1 Items items=itemsMapper.selectByPrimaryKey(1"水杯"
Lösung: Löschen Sie die ursprünglich generierte Datei „mapper.xml“ und generieren Sie sie erneut.
Die von MyBatis automatisch generierten po- und mapper.java-Dateien werden nicht an den Inhalt angehängt, sondern ohne dieses Problem direkt überschrieben.
4.2 Probleme mit Tabellenschemata
Schema ist das Datenbankschema. In Oracle entspricht ein Benutzer einem Schema , was so verstanden werden kann: Der Benutzer ist das Schema. Wenn in der Oracle-Datenbank mehrere Schemas vorhanden sind, die auf denselben Tabellennamen zugreifen können, führt die Verwendung von mybatis zum Generieren von „mapper.xml“ für die Tabelle zu einer Duplizierung des Mapper-Inhalts, was zu Mybatis-Analysefehlern führt.
Lösung: Füllen Sie das Schema in der Tabelle wie folgt aus: