用java实现mybatis的动态创建表、修改表功能
2017-07-19 16:33
323 查看
能实现的需求:
需求1:要实现一次创建多张表,或者修改表的功能,来减轻手动创建的重复操作
需求2:分表功能 根据业务创建不同公司的表
一、test类 java代码
package org.uz.dxt.service; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.math.BigDecimal; import java.net.MalformedURLException; import java.net.URISyntaxException; import java.net.URL; import java.util.ArrayList; import java.util.List; import org.junit.Test; import org.junit.runner.RunWith; import org.omg.CosNaming.NamingContextExtPackage.StringNameHelper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.uz.dxt.dao.cuiji.CuijiMapper; import org.uz.dxt.model.bankbase.Batch; import org.uz.dxt.util.CalculatorUtil; import com.alibaba.fastjson.JSON; import com.sun.istack.logging.Logger; //test类想要使用mybatise 必须使用这两个注解 @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = "classpath:applicationContext.xml") public class Test01 { @Autowired private CuijiMapper cuijiMapper; private static Logger logger = Logger.getLogger(Test01.class); //拼接sql创建表的语句 public String CreateCuijiTableName(String tablename){ String uSql = "create table IF NOT EXISTS `cuiji`."+tablename +"(`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '记录ID'," +"`type` int(11) DEFAULT NULL COMMENT '记录类别;0=电催;1=CP;2=评语;3=调案;'," +"`caseid` varchar(50) DEFAULT NULL COMMENT '案件编号', " +"`doccode` varchar(50) DEFAULT NULL COMMENT '债务人身份证号'," +"`name` varchar(50) DEFAULT NULL COMMENT '通话人姓名'," +"`phone` varchar(80) DEFAULT NULL COMMENT '电话号码'," +"`summary` varchar(8) DEFAULT NULL COMMENT '联络摘要'," +"`infor` varchar(10000) DEFAULT NULL COMMENT '通话内容'," +"`userid` int(11) DEFAULT NULL COMMENT '业务员ID', " +"`companycode` varchar(30) DEFAULT NULL COMMENT '催收公司编码'," +"`callDate` timestamp NULL DEFAULT NULL COMMENT '联络日期', " +"`direction` int(11) DEFAULT NULL COMMENT '通话方向;0=呼出;1=呼入'," +"`relation` int(11) DEFAULT NULL COMMENT '关系;1=本人;2=直系;3=亲属;4=联系人;5=担保人;6=其他', " +"`cardcode` varchar(50) DEFAULT NULL COMMENT 'cardcode/contractcode合并为此一个字段,type用来区分使用哪一个\r\ntype=0 信用卡,type=1非信用卡'," +"`cardtype` int(2) DEFAULT NULL COMMENT '0=信用卡 1=非信用卡'," +"`recordid` int(11) DEFAULT NULL COMMENT '通话记录主键Id'," +"`commtype` varchar(10) DEFAULT NULL COMMENT '联系方式:手机,司电,宅电 新表添加此字段'," +"PRIMARY KEY (`id`), " +"KEY `caseid_index` (`caseid`) USING BTREE" +")ENGINE=InnoDB DEFAULT CHARSET=utf8"; return uSql; } /** * 创建表的方法 * 修改表字段长度方法 * */ @Test public void CreateCuijiTable(){ List<String> list=tableName(); /*//创建表的方法 for (int i = 0; i < list.size(); i++) { String uSql=CreateCuijiTableName(list.get(i)); System.out.println(uSql); cuijiMapper.updateTableField(uSql); }*/ /*//修改表字段长度方法 for (int i = 0; i < list.size(); i++) { String uSql=alterCuijiByPhone(list.get(i)); cuijiMapper.updateTableField(uSql); }*/ } //动态表名 public List<String> tableName() { List<String> nameList=new ArrayList<String>(); nameList.add("t_cuiji_abbj"); nameList.add("t_cuiji_abdy"); nameList.add("t_cuiji_abdz"); nameList.add("t_cuiji_abhb"); nameList.add("t_cuiji_abhz"); nameList.add("t_cuiji_abjm"); nameList.add("t_cuiji_abjn"); nameList.add("t_cuiji_ablw"); nameList.add("t_cuiji_ably"); nameList.add("t_cuiji_abes"); nameList.add("t_cuiji_abqj"); nameList.add("t_cuiji_abrz"); nameList.add("t_cuiji_absd"); nameList.add("t_cuiji_abwh"); nameList.add("t_cuiji_abta"); nameList.add("t_cuiji_abwuh"); nameList.add("t_cuiji_abxt"); nameList.add("t_cuiji_abyt"); nameList.add("t_cuiji_abzb"); nameList.add("t_cuiji_abzz"); nameList.add("t_cuiji_bobcfc"); nameList.add("t_cuiji_bmbj"); nameList.add("t_cuiji_bmw"); nameList.add("t_cuiji_bmsd"); nameList.add("t_cuiji_bmwh"); nameList.add("t_cuiji_bqzl"); nameList.add("t_cuiji_bqjr"); nameList.add("t_cuiji_cbdz"); nameList.add("t_ baa1 cuiji_bocgz"); nameList.add("t_cuiji_cbhb"); return nameList; } //拼接修改字段长度的sql语句 public String alterCuijiByPhone(String tablename){ String uSql = "alter table `cuiji`."+tablename +" MODIFY phone varchar(80)"; return uSql; } }
二、Dao方法
void updateTableField(@Param("uSql")String uSql);
三 mapper.xml
<update id="updateTableField" parameterType="java.lang.String" > ${uSql} </update>
执行成功
谢谢观看
相关文章推荐
- java实现单链表的初始化,创建,删除,插入,查找,排序,同项删除,退出等功能
- 使用Ext的Grid,Form,Dialog来实现分页列表,创建,修改,删除功能
- JAVA编写的浏览器,在别人的基础上做了些许修改,实现了前进,后退,刷新功能,添加了一个搜索框,具体情况在运行结果中的文件-->注意中
- QT中如何实现XML文件的创建、增加、修改、删除功能。
- 实现动态创建html元素功能
- java应用(非web应用)中log4j.properties动态修改配置文件,无需重启,就能立即生效,如何实现?
- CCRenderTexture(动态创建纹理类 ---通过OpenGL方法 可以实现截屏功能)
- [Java] 动态代理 04 - 想实现什么功能,就实现什么功能
- 给图片各个位置做标记,实现类似百度地图的标记功能(动态创建页面元素,各种定位,Ajax,MVC)
- 微信自定义菜单的创建(微信账号绑定功能的实现 Java)
- java动态代理详解,并用动态代理和注解实现日志记录功能
- JAVA_WEB项目(结合Servlet+jsp+ckEditor编辑器+jquery easyui技术)实现新闻发布管理系统第三篇:新闻发布,新闻修改,新闻删除功能的实现
- Java编程之TreeSet排序两种解决方法(1)元素自身具备比较功能,元素需要实现Comparable接口覆盖compare(2)创建根据自定义Person类的name进行排序的Comparator
- [Java] 动态代理 04 - 想实现什么功能,就实现什么功能
- 仿MFC实现c++的按名动态创建对象功能
- Servlet+Javabean+Html实现简单的查询.删除.修改.添加四个功能
- 实现AMF3与Java之间数组的传递(动态创建数组)...
- JS自定义功能函数实现动态添加网址参数修改网址参数值
- java应用(非web应用)中log4j.properties动态修改配置文件,无需重启,就能立即生效,如何实现?
- java根据properties配置文件来实现功能模块的动态切换