INSERT、UPDATE获取随意主键生成(selectKey)

XML文件配置:

  1. 与resultType:返回值类型(主键类型,可省略)
  2. keyProperty:返回值存储的属性或映射指定值
  3. 顺序:后/前,
    1. 后:先执行插入语句,再获取主键
    2. 前:先行选择主键列,再执行插入语句
  4. statementType:STATEMENT,PREPARED和CALLABLE语句的映射类型

XML配置:

<mapper namespace="com.parkingms.dao.ILoginDao">
	<insert id="insertLogin" parameterType="com.parkingms.bean.LoginBean">
		<!--插入语句 -->
		INSERT INTO t_login (login_account,login_pwd,login_character) VALUES (#{account},#{pwd},#{character})
		<selectKey resultType="java.lang.Integer" keyProperty="id" order="AFTER">
			<!-- 查询主键语句 -->
			select login_id from t_login where
			login_account = #{account}
		</selectKey>
	</insert>
</mapper>

DAO语句:

public interface ILoginDao {
	public boolean insertLogin(LoginBean bean);
}

注解形式配置:

  1. 豆中返回值对应的属性值需要有获取/设置方法
  2. 前必须为假,否则会报错(暂不清楚)
package com.parkingms.dao;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Options;
import org.apache.ibatis.annotations.SelectKey;
import com.parkingms.bean.LoginBean;

public interface ILoginDao {
	@Insert(value = {
			"INSERT INTO t_login "
			+ "(login_account,login_pwd,login_character)"
			+ " VALUES"
			+ "(#{account},#{pwd},#{character})" })
	@SelectKey(before = false, keyProperty = "id", resultType = int.class, statement = { "select login_id from t_login where login_account = #{account}" })
	public boolean insertLogin(LoginBean bean);

}

测试语句:

package com.parkingms.test;
import java.io.IOException;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;
import com.parkingms.bean.LoginBean;
import com.parkingms.dao.ILoginDao;
public class LoginTest {
	@Test
	public void insertTest() throws IOException {
		LoginBean bean = new LoginBean();
		bean.setAccount("登陆名7");
		bean.setCharacter(1);
		bean.setPwd("登陆密码");
		SqlSessionFactory fa = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("config/config.xml"),"development");
		SqlSession session = fa.openSession(true);
		ILoginDao dao = session.getMapper(ILoginDao.class);
		boolean s = dao.insertLogin(bean);
		System.out.println(bean.getId());	
	}
}

参考:https://blog.csdn.net/isea533/article/details/21153791

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值