Chi Tiết Về Mybatis-Generator

Mybatis-Generator giúp tự động tạo các lớp DAO, Model và Mapping.

Trong quá trình làm việc với Mybatis, tôi gặp khó khăn khi viết các câu lệnh insert trong file mapping, dẫn đến lỗi. Để giải quyết vấn đề này, tôi tìm hiểu về Mybatis-Generator để tạo ra các file chuẩn.

Dưới đây là một số bước thực hiện:

Các tệp cần thiết

  • Mybatis-Generator: Tải tại đây
  • Kết nối cơ sở dữ liệu MySQL: mysql-connector-java-5.1.13-bin.jar (có thể sử dụng từ dự án hiện tại)

Bước thực hiện

  1. Sao chép tất cả các thư viện jar từ thư mục lib ra ngoài.
  2. Tạo một thư mục src (tên tùy ý) để lưu trữ các file được tạo.
  3. Tạo file cấu hình generatorConfig.xml:
<?xml version="1.0" encoding="UTF-8"?>
<generatorConfiguration>
    <classPathEntry location="mysql-connector-java-5.1.13-bin.jar"/>
    <context id="DBContext" targetRuntime="MyBatis3">
        <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost/database_name" userId="user" password="password"/>
        <javaModelGenerator targetPackage="com.example.model" targetProject="src">
            <property name="enableSubPackages" value="true"/>
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>
        <sqlMapGenerator targetPackage="com.example.mapping" targetProject="src">
            <property name="enableSubPackages" value="true"/>
        </sqlMapGenerator>
        <javaClientGenerator type="XMLMAPPER" targetPackage="com.example.dao" targetProject="src">
            <property name="enableSubPackages" value="true"/>
        </javaClientGenerator>
        <table tableName="user" domainObjectName="User" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"/>
    </context>
</generatorConfiguration>

Cần chỉnh sửa các thông tin sau trong file cấu hình:

  • Đường dẫn tới thư viện JDBC
  • Thông tin kết nối cơ sở dữ liệu (URL, username, password)
  • Thư mục đích lưu trữ các lớp Model, Mapping và DAO
  • Tên bảng và tên lớp tương ứng

Sau đó mở cửa sổ lệnh tại thư mục chứa file generatorConfig.xml và chạy lệnh:

java -jar mybatis-generator-core-1.3.2.jar -configfile generatorConfig.xml -overwrite

Sau khi thực thi, các file cần thiết sẽ được tạo ra trong thư mục src.

Giải thích cấu hình generatorConfig.xml

<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:///database_name" userId="user" password="password"/>
        <javaTypeResolver>
            <property name="forceBigDecimals" value="false"/>
        </javaTypeResolver>
        <javaModelGenerator targetPackage="com.example.model" targetProject="src">
            <property name="constructorBased" value="false"/>
            <property name="enableSubPackages" value="true"/>
            <property name="immutable" value="false"/>
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>
        <sqlMapGenerator targetPackage="com.example.mapping" targetProject="src">
            <property name="enableSubPackages" value="true"/>
        </sqlMapGenerator>
        <javaClientGenerator type="XMLMAPPER" targetPackage="com.example.dao" targetProject="src">
            <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"/>
        </table>
    </context>
</generatorConfiguration>

Mỗi phần của cấu hình có chức năng riêng như định nghĩa kết nối cơ sở dữ liệu, cấu hình các lớp Model, Mapping, DAO và tùy chỉnh các cột cụ thể.

Thẻ: mybatis Mybatis-Generator mysql

Đăng vào ngày 5 tháng 6 lúc 00:54