mybatis 插入数据至mysql并返回主键

2018-03-01 11:04:25来源:oschina作者:开源小菜鸟2333人点击

分享

功能说明:mysql 主键id自增,并在返回对象中插入对应字段值




表设计如下:
DROP TABLE IF EXISTS `api_quartz`;
CREATE TABLE `api_quartz` (
`id` int(10) NOT NULL AUTO_INCREMENT COMMENT '主键',
`job_class_name` varchar(100) DEFAULT NULL COMMENT '需要执行定时任务的类的全路径(包名和类名)',
`job_group_name` varchar(40) DEFAULT NULL COMMENT 'job的分组名',
`job_cron` varchar(40) DEFAULT NULL COMMENT '定时任务的时间间隔,可参考http://cron.qqe2.com/',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;
mybatis的xml如下:

insert into api_quartz (job_class_name, job_group_name,
job_name,job_cron)
values (#{jobClassName,jdbcType=VARCHAR}, #{jobGroupName,jdbcType=VARCHAR},
#{jobName,jdbcType=VARCHAR},#{jobCron,jdbcType=VARCHAR})

对应接口如下:
/**
* 返回插入数据的主键id值
* @param apiQuartz
* @return
*/
int insertAndGetId(ApiQuartz apiQuartz);

该接口的返回值为1或0,分别代表插入成功或失败(注意:不代表返回的主键id值)。这样 apiQuartz 对象中,原先apiQuartz.getId是 null , 现在,将插入数据库的主键id值赋给它,eg:apiQuartz.getId是 7


实体类如下:
import lombok.Data;
import java.io.Serializable;
/**
* 实体类 对应 api_quartz 表,定时任务配置
*/
@Data
public class ApiQuartz implements Serializable {
private static final long serialVersionUID = 7485426523275431367L;
/**
* 主键
*/
private Long id;
/**
* 需要执行定时任务的类的全路径(包名和类名)
*/
private String jobClassName;
/**
* 'job的分组名'
*/
private String jobGroupName;
/**
* '定时任务的时间间隔,可参考http://blog.csdn.net/yansong_8686/article/details/46991189'
*/
private String jobCron;
}
解释:

useGeneratedKeys="true" 表示给主键设置自增长

keyProperty="userId"表示将自增长后的Id赋值给实体类中的userId字段。

parameterType="com.chenzhou.mybatis.User" 这个属性指向传递的参数实体类

这里提醒下, 中没有resultType属性,不要乱加。

实体类中uerId 要有getter() and setter(); 方法 (也可以采用lombok插件完成)

参考链接:
Java MyBatis 插入数据库返回主键 - 星云博客园 - 博客园

微信扫一扫

第七城市微信公众平台