Heim > Java > javaLernprogramm > Spring+SpringMVC+MyBatis vertiefendes Lernen und Konstruieren – MyBatis Reverse Engineering

Spring+SpringMVC+MyBatis vertiefendes Lernen und Konstruieren – MyBatis Reverse Engineering

巴扎黑
Freigeben: 2017-06-26 09:34:55
Original
2091 Leute haben es durchsucht

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.

1. Was ist Reverse Engineering?

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.

2. Laden Sie das Reverse Engineering herunter

3. Zur Vorbeugung Spätere Änderungen und Erweiterungen der Datenbanktabelle. Aufgrund von Anforderungsänderungen und anderen Gründen sind die durch das Update automatisch generierten PO- und Mapper-Abdeckungen falsch. Wir erstellen einen neuen, speziell umgekehrt generierten ProjektgeneratorSqlmapCustom und kopieren dann die automatisch generierten PO, Mapper usw. nach Bedarf in das Projekt.

3.1 Reverse Engineering ausführen

Es wird empfohlen, die Java-Programmmethode zu verwenden, ohne auf Entwicklungstools angewiesen zu sein.

3.2Mapper-Generierungskonfigurationsdatei

Konfigurieren Sie die detaillierten Informationen der Mapper-Generierung in generatorConfig.xml und achten Sie auf die folgenden Änderungen:

(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>
Nach dem Login kopieren
3.3 Verwenden Sie Java-Klassen, um Mapper-Dateien zu generieren

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();
        }
    }

}
Nach dem Login kopieren
Nach der Generierung Code:

3.4 Kopieren Sie die generierte Mapper-Datei in das im Projekt angegebene Verzeichnis

3.4.1mapper.xml

Mapper.xml Kopieren Sie die Datei in das Mapper-Verzeichnis

3.4.2mapper.java

Kopieren Sie die Mapper.xml-Datei in das Mapper-Verzeichnis

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"水杯"
Nach dem Login kopieren
4. Reverse-Engineering-Vorkehrungen

4.1Mapper-Dateiinhalt wird nicht überschrieben, sondern angehängt

Wenn die Datei XXXMapper.xml bereits vorhanden ist und neu generiert wird, wird der Inhalt der Datei mapper.xml nicht überschrieben, sondern der Inhalt wird angehängt, was zu einem Mybatis-Analysefehler führt.

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

Das Folgende ist das Schemaproblem für den Generierungscode für Oracle-Datenbanktabellen:

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:

XXXX ist der Name von Wenn Sie ein Schema erstellen, entfernen Sie das Schemapräfix von „mapper.xml“ stapelweise nach der Generierung. Wenn es nicht entfernt wird, schlägt die Abfrage fehl, wenn der Oracle-Benutzer die SQL-Anweisung ändert.

Abkürzungsoperationsmethode: Stapelersetzung in der Datei „mapper.xml“: „von XXXX“ ist leer.

Das Schema des Oracle-Abfrageobjekts kann wie folgt von dba_objects abgefragt werden:

select * from dba_objects

Das obige ist der detaillierte Inhalt vonSpring+SpringMVC+MyBatis vertiefendes Lernen und Konstruieren – MyBatis Reverse Engineering. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage