mybatis入门:
“#{}” 和“${}”的区别
Mapper代理的四个条件:
Mybatis分别向MySQL和Oracle中插入数据返回主键问题总结
一.MYSQL:
1、在映射文件中配置(本例中是user.xml文件):
注:方法一,必须是在能够支持主键自增的数据库
通过修改sql映射文件,可以将mysql自增主键返回:
添加selectKey实现将主键返回
keyProperty:返回的主键存储在pojo中的哪个属性
order:selectKey的执行顺序,是相对与insert语句来说,由于mysql的自增原理执行完insert语句之后才将主键生成,所以这里selectKey的执行顺序为after
resultType:返回的主键是什么类型
LAST_INSERT_ID():是mysql的函数,返回auto_increment自增列新记录id值。
2、在数据库连接信息属性文件中配置(db.properties):
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql:///mybatis?characterEncoding=utf-8
jdbc.username=root
jdbc.password=root
3、编写测试代码
@Test
public void addUser(){
SqlSession session = sqlSessionFactory.openSession();
User user = new User();
user.setUsername("张三");
user.setBirthday(new Date());
user.setAddress("北京");
user.setSex("1");
session.insert("addUser", user);
if (i>0){
System.out.println(user.getId());
}
// mysql 是默认不提交的, 必须手动的提交,否则就会回滚
session.commit();
session.close();
}
补:5.7.4Mysql使用 uuid实现主键
<insert id="insertUser" parameterType="cn.itcast.mybatis.po.User">
<selectKey resultType="java.lang.String" order="BEFORE"
keyProperty="id">
select uuid()
</selectKey>
insert into user(id,username,birthday,sex,address)
values(#{id},#{username},#{birthday},#{sex},#{address})
</insert>
注意这里使用的order是“BEFORE”
需要增加通过select uuid()得到uuid值