Skip to content

NiX-Team/autoMapping

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

autoMapping


mybatis mapping映射配置文件自动生成插件

使用方法

用idea导入项目,install到本地仓库。 在需要自动生成映射文件xml的项目里配置插件

注意事项

  1. 配置中的根路径为项目路径
  2. 类名必须使用首字母大写的驼峰命名
  3. 实体必须有id字段,且实体必须使用id作为主键
  4. 实体的字段命名必须以驼峰命名
  5. 字段映射到数据库的字段都是将驼峰命名的大写字母改为_小写(userId -> user_id)
  6. xml配置文件的namespace需要手动修改为正确的地址

<build>
    <plugins>
        <plugin>
            <groupId>com.alibaba.jingxun</groupId>
            <artifactId>auto-mapping-xml</artifactId>
            <version>1.0-SNAPSHOT</version>
            <configuration>
                <!-- 配置文件路径(相对路径根路径为主项目路径)-->
                <name>./auto.xml</name>
                <!-- 项目的路径(1.0必须填项目的路径)-->
                <path>G:\IDEA\bookHandlerSystem</path>
                <!-- 自定义xml模板路径(不配置使用默认配置模板)-->
                <ftl></ftl>
            </configuration>
        </plugin>
    </plugins>
</build>

配置文件语法

<?xml version="1.0" encoding="UTF-8"?>
<config>
    <packages>
         <!--使用包扫描时实体的表名默认与类名的驼峰命名一致-->
        <package>
            <!--需要自动生成xml的实体的包-->
            <name>com.alibaba.jingxun.model</name>
            <!--xml生成的路径(使用包扫描时默认xml文件与类名一致)-->
            <path>./resources/mapping/model/</path>
        </package>
       
        <package>
            <name>com.alibaba.jingxun.entity</name>
            <!--不配置path时默认xml路径与类文件路径一致-->
        </package>
    </packages>
    <!--单独生成莫格实体的xml配置-->
    <model>
        <!--实体的完全限定名(包路径+类名)-->
        <clazz>com.alibaba.jingxun.model.Student</clazz>
        <!--xml生成路径-->
        <mapping>./student.xml</mapping>
        <!--实体在数据库中的表名-->
        <table>student</table>
    </model>
</config>

ftl模板语法

<#--table:实体对应数据库的表名-->
<#--oneself.type:实体完全限定名-->
<resultMap id="BaseResultMap" type="${oneself.type}">
    <#--oneself.params:实体参数列表->
    <#list oneself.params as param>
        <#--param.property:实体参数字段名->
        <#--param.column:实体参数对应数据库字段名->
        <#--param.jdbcType:实体参数对应数据库类型->
        <#if param.property == "id" >
        <id column="${param.column}" property="${param.property}" jdbcType="${param.jdbcType}"/>
        <#else >
        <result column="${param.column}" property="${param.property}" jdbcType="${param.jdbcType}"/>
        </#if>
    </#list>
</resultMap>

默认ftl模板的Dao方法

    /**
     * 添加实体
     * @param object
     * */
    void insert(M object);
    /**
     * 删除实体
     * @param id
     * */
    void delete(@Param("id") Integer id);
    /**
     * 更新实体
     * @param model
     * */
    void update(M model);
    /**
     * 查询实体
     * @param id
     * @return
     * */
    M select(@Param("id") Integer id);
    /**
     * 获取实体数据库的最大id值
     * @return
     * */
    Integer maxId(M m);
    /**
     * 获取实体的数目
     * @return
     * */
    Long count();
    /**
     * 根据每个字段查找实体列表
     * @param field 字段
     * @param value 值
     * @return 符合条件的实体列表
     * */
    List<M> findByOneField(@Param("field") String field,@Param("value") String value);
    /**
    * 查找分页实体列表
    * @param tables list查询的表字符串
    * <p>(select * from user,role where 1 = 1)</p>
    * <p>table 为from到where之间的字符串</p>
    * @param offset 偏移量
    * @param limit 分页大小
    * @param sort 排序字段
    * @param order 排序方式
    * @param conditions 查询条件的sql(where 后面的条件)
    * @return 分页内容
    * */
    List<M> list(@Param("tables") String tables,@Param("offset") Integer offset, @Param("limit") Integer limit, @Param("order") String order, @Param("sort") String sort, @Param("conditions") String conditions);

idea启动方法

  1. 构建项目,保证需要生产的实体被编译
  2. 在启动项里添加maven启动项
  3. 在command line 填auto-mapping-xml:auto-mapping
  4. 直接运行即可

错误提示

  1. fileNotFound 文件路径有误,注意使用./开头的文件路径的根路径是项目路径
  2. 不是正确的类路径 看项目是否编译,类的完全限定名是否错误,pom配置path路径是否错误
  3. 配置namespace通用路径,实现namespace自动完成

1.1版本计划

  1. 将项目路径改为自动识别,就不需要配置项目路径
  2. 内部嵌入java编译功能,可以在项目编译的情况下运行
  3. 修改1.0版本bug

1.2版本计划

  1. 将项目改为不需要自行自动生成xml
  2. 修改1.1版本bug

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published