功能说明: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 表,定时任务配置 */@Datapublic 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" 这个属性指向传递的参数实体类
-
这里提醒下,<insert></insert> 中没有resultType属性,不要乱加。
-
实体类中uerId 要有getter() and setter(); 方法 (也可以采用lombok插件完成)