MyBatis配置新增返回主键

首先我们需要将spring和MyBatis依赖的jar包放入项目的lib目录下
MyBatis配置新增返回主键_第1张图片

在src目录下创建一个mybatis-config.xml文件,配置连接数据库

 

<configuration>
	<environments default="mysql">	
		<environment id="mysql">
			<transactionManager type="JDBC" />
			<dataSource type="POOLED">
				<property name="driver" value="com.mysql.jdbc.Driver" />
				<property name="url" value="jdbc:mysql://localhost:3306/mybatis" />
				<property name="username" value="root" />	
				<property name="password" value="root" />
			dataSource>
		environment>
	environments>
configuration>

在mapper包下创建映射文件CustomerMapper.xml,并编写一个insert语句

 
  
  
	<mapper namespace="com.itheima.mapper.CustomerMapper">
		
		<insert id="addCustomer" parameterType="com.itheima.po.Customer" keyProperty="id" useGeneratedKeys="true">
			insert into t_customer(username,jobs,phone) value(#{username},#{jobs},${phone})
		insert> 	
	mapper>
	
	

在insert中使用到了keyProperty属性以及useGeneratedKeys。这两个属性都仅对insert叶和update有用

keyProperty此属性的作用是将插入或更新操作时的返回值赋值给PO类的某个属性,通常会设置为主键对应的属性。 如果需要设置联合主键,可以在多个值之间用逗号隔开

useGeneratedKeys此属性会使MyBatis使用JDBC的getGeneratedKeys方法来获取由数据库内部生产的主键,如MySQL相SQLServer等自动递增的字段,其默认值为false。

接下来就是在mybatis-config.xml中配置刚才写好的映射文件。

	environments>
	<mappers>
		<mapper resource="com/itheima/mapper/CustomerMapper.xml" />
		
	mappers>
configuration>

配置完成,就可以开始调用执行了。

	@Test
	public void addCustomer()throws Exception{
		String resource = "mybatis-config.xml";//读取配置文件
		InputStream in = Resources.getResourceAsStream(resource);
		//创建SqlSessionFactory 对象
		SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
		SqlSession sqlSession = factory.openSession();
		Customer customer = new Customer();
		//通过setter方法设置参数
		customer.setUsername("JackChen");
		customer.setJobs("ITBoy");
		customer.setPhone("15727539400");
		//执行insert
		int rows = sqlSession.insert("com.itheima.mapper.CustomerMapper.addCustomer",customer);
		//在mapper我们将返回的主键赋值给字段id了,现在通过getter方法拿到它并输出
		System.out.println(customer.getId());
		if(rows>0){
			System.out.println("新增成功"+rows+"条数据!");
		}else{
			System.out.println("新增失败!");
		}
		//提交事务
		sqlSession.commit();
		//关闭
		sqlSession.close();
	}

我们执行看看结果

MyBatis配置新增返回主键_第2张图片

新增成功,返回的主键ID为106

返回主键的关键就是设置keyProperty属性和useGeneratedKeys属性,keyProperty可以将接收返回的参数赋值给指定属性,而useGeneratedKeys会使用JDBC的getGeneratedKeys方法来获取由数据库内部生产的主键。

你可能感兴趣的:(专题技术文献)