@ContextConfiguration("classpath*:applicationContext.xml")
public class TestTestInsert extends AbstractJUnit4SpringContextTests{
@Autowired
private TestInsert testInsert;
@Test
public void testInsertIt(){
TestUser tu = new TestUser();
tu.setName("测试43");
testInsert.insertIt2(tu);
System.err.println("----------"+tu.getId());
}
}
针对自增主键的表,在插入时不需要主键,而是在插入过程自动获取一个自增的主键,比如MySQL,可以采用如下两种配置方式:
<insert id="insertIt" parameterType="testUser" useGeneratedKeys="true" keyProperty="id">
insert into test_insert (name) values (#{name})
</insert>
<insert id="insertIt3" parameterType="testUser">
<selectKey keyProperty="id" resultType="int" order="AFTER" >
SELECT LAST_INSERT_ID() AS id
</selectKey>
insert into test_insert (name) values (#{name})
</insert>
针对Sequence主键而言,在执行insert sql前必须指定一个主键值给要插入的记录,如Oracle、DB2,可以采用如下配置方式:
<insert id="add" parameterType="vo.Category">
<selectKey resultType="java.lang.Short" order="BEFORE"
keyProperty="id">
SELECT SEQ_TEST.NEXTVAL FROM DUAL
</selectKey>
insert into category (name_zh, parent_id,
show_order, delete_status, description
)
values (#{nameZh,jdbcType=VARCHAR},
#{parentId,jdbcType=SMALLINT},
#{showOrder,jdbcType=SMALLINT},
#{deleteStatus,jdbcType=BIT},
#{description,jdbcType=VARCHAR}
)
</insert>
接口的写法:
public interface TestInsert {
void insertIt(TestUser tu);
// 这样写是不行的。不能用(@Param
//void insertIt2(@Param(value="tu")TestUser tu);
}
Test
@ContextConfiguration("classpath*:applicationContext.xml")
public class TestTestInsert extends AbstractJUnit4SpringContextTests{
@Autowired
private TestInsert testInsert;
@Test
public void testInsertIt(){
TestUser tu = new TestUser();
tu.setName("测试43");
testInsert.insertIt2(tu);
System.err.println("----------"+tu.getId());
}
}
本文介绍了使用MyBatis框架进行数据库操作时,如何配置自增主键和Sequence主键的自动获取。针对不同的数据库类型(如MySQL和Oracle),提供了具体的XML配置示例,并展示了如何在Java接口中调用这些配置。
1236

被折叠的 条评论
为什么被折叠?



