映射文件
<!--添加用户-->
<!--parameterType:指定输入的pojo类型-->
<insert id="insertUser" parameterType="com.sws.entity.User">
insert into user(id,username,birthday,sex,address) value (#{id},#{username},#{birthday},#{sex},#{address})
</insert>
//添加用户信息
public void insertUser() throws IOException {
//mybatis配置文件
String resource = "SqlMapConfig.xml";
//得到配置流
InputStream inputStream = Resources.getResourceAsStream(resource);
//创建会话工厂
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//通过工厂得到SqlSession
SqlSession sqlSession = sqlSessionFactory.openSession();
//插入用户对象
User user = new User();
user.setUsername("xxx");
user.setBirthday(new Date());
user.setSex("1");
user.setAddress("xxx");
//通过sqlSession操作数据库
sqlSession.insert("test.insertUser",user);
//需要执行提交
sqlSession.commit();
sqlSession.close();
}
自增主键返回
select last_insert_id()
<!--添加用户-->
<!--parameterType:指定输入的pojo类型-->
<insert id="insertUser" parameterType="com.sws.entity.User">
<!--将插入数据的主键返回,返回到用户对象中-->
<!--用于得到刚刚插入的主键值,只适用于自增主键
keyProperty:将查询到的主键设置到parameterType所设置的对象的对应属性中
order:执行顺序,相对于insert
-->
<selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">
select last_insert_id()
</selectKey>
insert into user(id,username,birthday,sex,address) value (#{id},#{username},#{birthday},#{sex},#{address})
</insert>
非自增主键查询(uuid())
先通过uuid查找主键,再将主键输入到sql中
<insert id="insertUser2" parameterType="com.sws.entity.User">
<!--使用mysql的uuid(),查询非自增主键
首先通过uuid()获得主键,设置到user对象id中
-->
<selectKey keyProperty="id" order="BEFORE" resultType="java.lang.String">
select uuid()
</selectKey>
insert into user(id,username,birthday,sex,address) value (#{id},#{username},#{birthday},#{sex},#{address})
</insert>
如果是oracle,”uuid()”改为”序列名.nextval()”