Mybatis自定义主键增长的一种方式
来源:互联网 发布:吉林大学网络课程中心 编辑:程序博客网 时间:2024/06/10 02:33
最近的一个项目,发现利用mysql的函数方式可以完成数据库表字段主键的自增的方式:
思路:
mysql函数定义如下:
参数:tname 字符串类型
返回值:字符串
作用:根据传入的参数,根据数据插入的时间来生成 “参数名+时间long值” 得id值。
CREATE FUNCTION nextId(tname varchar(10))RETURNS VARCHAR(255)BEGINDECLARE x VARCHAR(255) DEFAULT '';SET x= CONCAT(CONCAT(tname, date_format(SYSDATE(),'%y%m%d%h%i%s%f')));RETURN x;END
测试:
select nextId("USER")[SQL]select nextId("USER")
受影响的行: 0
时间: 0.001s
Java+Mybatis实现方式:
1.工具类:
package com.lgy.util;/** * * 获取主键id * * @author li_gang * */public class PKUtil {public final static int PK_TREASUREID = 0;/** * /** 获取id串 * * @param type * @return */public static String getPK(int type) {String pk = null;switch (type) {case PK_TREASUREID:pk = "nextId('TRE')";break;default:break;}return pk;}}
Mapper文件:
<!-- 插入用户数据 --><insert id="insert" parameterType="tearsure"> insert into treasure <trim prefix="(" suffix=")"> <include refid="Base_Column_List" /> </trim> <trim prefix="values (" suffix=")"> ${id}, #{number}, #{name}, #{count} </trim> </insert>
*主要到了没有主键是${id}.
测试:
@Testpublic void insert() {Tearsure record = new Tearsure();record.setId(PKUtil.getPK(PKUtil.PK_TREASUREID));record.setNumber(33);record.setName("test");record.setCount(11);tearsureDao.insert(record );logger.debug("finish");}
sql打印如下:
13:40:57,863 DEBUG insert:142 - ==> Preparing: insert into treasure ( id, number, name, count ) values ( nextId('TRE'), ?, ?, ? )
13:40:57,956 DEBUG insert:142 - ==> Parameters: 33(Integer), test(String), 11(Integer)
13:40:57,972 DEBUG insert:142 - <== Updates: 1
0 1
- Mybatis自定义主键增长的一种方式
- MyBatis中主键增长方式的设定及返回
- mybatis配置oracle的主键自增长
- mybatis 返回主键自动增长的值
- Mybatis 操作数据库的主键自增长
- 【亲测】mybatis使用注解方式插入数据后获取自增长的主键值
- MyBatis获取自增长主键值的两种方式及源码浅析
- MyBatis使用注解方式插入数据后获取自增长的主键值
- MyBatis+Oracle实现主键自增长的几种常用方式
- mybatis使用注解方式插入数据后获取自增长的主键值
- myBatis主键自增长sql
- sql主键的一种形成方式
- hibernate如何自定义自增长的主键值?
- Oracle实现主键自增长的几种方式
- mybatis的自定义主键生成策略
- mybatis主键回填的几种方式
- mybatis取得数据库自增长主键
- mybatis插入数据主键自动增长处理
- tomcat 清除缓存
- ListView实现的商城列表页面
- Android volley的源码实现原理
- hdu5536Chip Factory
- 怎么实现MindMapper中的主题更改
- Mybatis自定义主键增长的一种方式
- 模拟数据库连接池
- 使用CocoaPods后找不到头文件
- java equals重写
- 自定义imageView使用遮罩实现
- 更正:关于UFT12.51破解事宜
- git常用指令
- 微信JS分享实战代码
- Putty Command-Line Parameter