源代码:MybatisDemo增删改查
1、增加用户:
增加用户是需要相数据库提交的,所以增加了session.commit()语句,使用insert标签
还是先修改user.xml,在后面增加语句
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- 命名空间,用于隔离sql语句,后续会有重要作用 -->
<mapper namespace="user">
<!--
id:sql语句的唯一标识
parameterType:入参的数据类型
resultType:返回结果的数据类型
#{}:占位符,相当于?,里面的东西随便写
${value}:普通数据类型必须是value
-->
<insert id="MybatisInsert" parameterType="cn.nupt.pojo.User" >
INSERT INTO `mybatis`.`user` (
`username`,
`birthday`,
`sex`,
`address`
)
VALUES
(
#{username},
#{birthday},
#{sex},
#{address}
) ;
</insert>
</mapper>
然后编写测试类MybatisInsert:
package cn.nupt.mybatis.test;
import java.util.Date;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.junit.Test;
import cn.nupt.mybatis.utils.SqlSessionFactoryUtils;
import cn.nupt.pojo.User;
public class MybatisInsert {
@Test
public void testInsert() {
SqlSessionFactory sessionFactory = SqlSessionFactoryUtils.getSqlSessionFactory();
SqlSession session = sessionFactory.openSession();
// String username, String sex, Date birthday, String address
User user = new User(null, "吴彦祖", "男", new Date(), "南京");
session.insert("MybatisInsert", user);
session.commit();//需要提交,也可以自动提交sessionFactory.openSession(true);
session.close();
}
}
2、拿到用户主键:
有的时候级联sql语句需要拿到自增的主键,比如id等等,前面我们设置的主键是null,但是输出的时候需要拿到主键
方法:修改一下user.xml,在insert下面增加selectKey
<insert id="MybatisInsert" parameterType="cn.nupt.pojo.User" >
<!--
selectKey:主键返回
keyProperty:user中的主键
resultType:主键的数据类型
order:指定selectKey何时执行
-->
<selectKey keyProperty="id" resultType="int" order="AFTER">
select last_insert_id()
</selectKey>
或者,更简单点的,直接在insert标签上面加(这两个是冲突的,上面的设置了,这个就没用了):
<insert id="MybatisInsert" parameterType="cn.nupt.pojo.User" useGeneratedKeys="true" keyProperty="id">
<!--
useGeneratedKeys:使用自增
keyProperty:配套使用,这里是user的主键,就是id
-->
输出效果(就可以拿到我们插入的这一个用户的主键了):