关闭

[置顶] A.CTable开源框架Mybatis增强自动创建表/更新表结构/实现类似hibernate共通的增删改查

标签: 开源框架A-CTablemybatis增强自动建表孙琛斌
3260人阅读 评论(10) 收藏 举报

mybatis-enhance-actable-0.0.1

不用再为mybatis无法自动创建表,不提供基本的增删改查而苦恼啦!有了A.CTable这将不再成为你苦恼的理由,而且学习简单,只要进行简单的配置,然后稍微看下源码注解就可以上手了,A.CTable使用的是jdk1.7,大家使用时注意下,jdk版本和编码格式UTF-8的问题。

继之前的两篇文章阐述,我的第一个开源项目Mybatis_BuildTable_V0.2之后

新版本的Mybatis增强自动创建表框架A.CTable应运而生,初衷是为了将一系列技术融汇贯通到一个框架中,让
大家不用为了搭框架困恼,所以之前那版Mybatis_BuildTable_V0.2项目结构复杂,让使用的小伙伴感觉很不爽,因此根据大家提出的意见,我将老项目中的代码重新提取了重构了一下,并修复了一系列bug。

后来想着要取个什么名字好呢,想来想去还是Auto Create Table——A.CTable(ps:笑哭表情),这个槽点可以笑一年我懂~~

回归正题,之前两篇文章已经对该A.CTable做了技术以及用途方面的讲解,因此我这里就不再详细描述了,直接把项目里的使用说明贴过来给大家过过眼。

A.CTable使用说明

该项目是从之前写过的一个框架中抽取出来的,本身是对Mybatis做的增强功能,为了能够使习惯了hibernate框架的开发者能够快速的入手Mybatis,我给他取名叫做 “A.CTable” 本意是自动建表的意思,A.CTable是一个基于Spring和Mybatis的Maven项目,增强了Mybatis的功能,过配置model注解的方式来创建表,修改表结构,并且实现了共通的CUDR功能提升开发效率,目前仅支持Mysql,后续可能会扩展针对其他数据库的支持。

A.CTable是采用了Spring、Mybatis技术的Maven结构,详细介绍如下:

**######### mybatis增加功能自动创建表——A.CTable版本说明################**

1. 该版本修复了修改主键同时修改其类型引起的error
2. 该版本修复了根据model创建时没有创建父类中的字段的问题(ps:目前只支持扫描一层继承)
3. 该笨笨增加了对唯一约束的支持
4. 从原有的框架中剥离出来,支持任意结构的spring+mybatis的框架使用
5. 再次声明A.CTable目前仅支持mysql数据库

使用步骤方法

1.使用该功能的项目需要依赖mybatis-enhance-actable-0.0.1-SNAPSHOT.jar
2.在你的web项目上创建个目录比如config下面创建个文件autoCreateTable.properties文件的内容如下:

mybatis.table.auto=update
mybatis.model.pack=com.sunchenbin.store.model

本系统提供三种模式:

  1. 当mybatis.table.auto=create时,系统启动后,会将所有的表删除掉,然后根据model中配置的结构重新建表,该操作会破坏原有数据。

  2. 当mybatis.table.auto=update时,系统会自动判断哪些表是新建的,哪些字段要修改类型等,哪些字段要删除,哪些字段要新增,该操作不会破坏原有数据。

  3. 当mybatis.table.auto=none时,系统不做任何处理。

3.mybatis.model.pack这个配置是用来配置要扫描的用于创建表的对象的包名

4.spring的配置文件中需要做如下配置:

<!-- 自动扫描(自动注入mybatis-enhance-actable的Manager)必须要配置,否则扫描不到底层的mananger方法 -->
    <context:component-scan base-package="com.gitee.sunchenbin.mybatis.actable.manager.*" />

    <!-- 这是mybatis-enhance-actable的功能开关配置文件,其实就是将上面第2点说的autoCreateTable.properties文件注册到spring中,以便底层的mybatis-enhance-actable的方法能够获取到-->
    <bean id="configProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
        <property name="locations">
            <list>
                <value>classpath*:config/autoCreateTable.properties</value>
            </list>
        </property>
    </bean>
    <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer">
        <property name="properties" ref="configProperties" />
    </bean>

    <!-- mybatis的配置文件中需要做两项配置,因为mybatis-enhance-actable项目底层是直接依赖mybatis的规范执行sql的,因此需要将其中的mapping和dao映射到一起 -->
    1. classpath*:com/gitee/sunchenbin/mybatis/actable/mapping/*/*.xml
    2. com.gitee.sunchenbin.mybatis.actable.dao.*

    举例这两个配置配置的详细位置

    <!-- myBatis文件 -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <!-- 自动扫描entity目录, 省掉Configuration.xml里的手工配置 -->
        <property name="mapperLocations">
            <array>
              <value>classpath*:com/sunchenbin/store/mapping/*/*.xml</value>
              <value>classpath*:com/gitee/sunchenbin/mybatis/actable/mapping/*/*.xml</value>
            </array>
        </property>
        <property name="typeAliasesPackage" value="com.sunchenbin.store.model.*" />
        <!-- <property name="configLocation" value="classpath:core/mybatis-configuration.xml" /> -->
    </bean>

    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.sunchenbin.store.dao.*;com.gitee.sunchenbin.mybatis.actable.dao.*" />
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
    </bean>

代码用途讲解

  1. SysMysqlColumns.java这个对象里面配置的是mysql的数据类型,这里配置的类型越多,意味着创建
    表时能使用的类型越多

  2. LengthCount.java是一个自定义的注解,用于标记在SysMysqlColumns.java里面配置的数据类型上的,标记该类型需要设置几个长度,如datetime/varchar(1)/decimal(5,2),分别是需要设置0个1个2个

  3. Column.java也是一个自定义的注解,用于标记model中的字段上,作为创建表的依据如不标记,不会被扫描到,有几个属性用来设置字段名、字段类型、长度等属性的设置,详细请看代码上的注释

  4. Table.java也是一个自定义的注解,用于标记在model对象上,有一个属性name,用于设置该model生成表后的表名,如不设置该注解,则该model不会被扫描到

  5. 系统启动后会去自动调用SysMysqlCreateTableManagerImpl.java的createMysqlTable()方法,没错,这就是核心方法了,负责创建、删除、修改表。

共通的CUDR功能使用

  1. 使用方法很简单,大家在manager或者Controller中直接注入BaseMysqlCRUDManager调用CUDR方法传入的对象参数即可。
  2. 注意:参数对象必须是你要操作表的model对象否则会报错

    码云A.CTable框架代码的地址

    1. 码云地址:http://git.oschina.net/sunchenbin/mybatis-enhance

    2. 代码下载地址:https://git.oschina.net/sunchenbin/mybatis-enhance.git

    Github代码地址

    1. 代码地址:https://github.com/sunchenbin/A.CTable-Frame
3
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

Mybatis自动创建表/更新表结构/动态建表

该项目已经重新抽取形成独立的插件,方便不同项目使用详情轻看这篇博客中介绍的内容: 这里写链接内容最近有小伙伴问我mybatis有没有自动创建表结构的功能,因为他们之前一直使用hibernate用习惯...
  • sun5769675
  • sun5769675
  • 2016-06-27 09:56
  • 17612

使用mybatis自带工具,自动生成表对应domain、mapper.xml以及dao

1、需要手动建表,如T_PRI_USER 2、新建配置文件
  • p793049488
  • p793049488
  • 2014-10-24 10:07
  • 27671

mybatis3动态创建表,判断表是否存在,删除表

mybatis3动态创建表,判断表是否存在,删除表
  • doctor_who2004
  • doctor_who2004
  • 2015-01-22 20:42
  • 12198

最佳MyBatis 根据表结构自动生成代码, domain, dao, mapper 文件

摘要: 接触mybatis时间不是很长, 但是感觉也还容易上手, 好处发现也很多, 觉得还挺方便, 这段时间又学习一下MyBatis自动生成代码. 觉得在效率上更好了, 所以分享一下自动生成代码的步骤...
  • u013380777
  • u013380777
  • 2017-03-04 11:37
  • 367

详解MyBatis动态生成表插入数据

spring集成mybaits mybaits动态sql语句
  • sureSand
  • sureSand
  • 2016-09-14 18:18
  • 5841

Spring学习笔记---使用MyBatis Generator自动创建代码

MyBatis属于一种半自动的ORM框架,主要的工作就是配置Mapping映射文件,由于手写映射文件很容易出错,所以可以利用MyBatis 生成器自动生成实体类、DAO接口和Mapping映射文...
  • cwzhsi
  • cwzhsi
  • 2014-12-20 10:27
  • 2935

mybatis自动生成表的配置文件

  • 2015-07-20 15:47
  • 5.05MB
  • 下载

mybatis 根据 数据库表 自动生成 实体 并自动生成中文注释

原文地址:https://www.cnblogs.com/NieXiaoHui/p/6094144.html (将原文copy到此处,怕原作者删除,顺便记录实际操作中我遇到的问题) 原文: 自己手动...
  • alenejinping
  • alenejinping
  • 2017-12-04 09:49
  • 125

mybatis自动生成表的配置文件

   PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"   "http://mybatis.or...
  • strutce
  • strutce
  • 2015-07-20 15:07
  • 2520

mybatis 动态创建表

Dao: public boolean createTmpTable(@Param("tableName") String tableName); XML: CREAT...
  • qq_33762302
  • qq_33762302
  • 2017-03-03 10:59
  • 1538
    个人资料
    • 访问:294769次
    • 积分:3945
    • 等级:
    • 排名:第9275名
    • 原创:90篇
    • 转载:36篇
    • 译文:0篇
    • 评论:103条
    博客专栏
    技术交流群
    JAVA技术交流群:75451341

    JAVA技术交流群

    最新评论