在User.xml文件中增加增删改三个功能1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40<!--
parameterType 为实体对象
#{} 会使用OGNL来获得同名的值
insert update delete 默认返回的都是影响的条数
-->
<insert id="insertUser" parameterType="Pojo.User">
<!--
如果要求返回刚插入的id值则需要增加<selectKey>
SELECT LAST_INSERT_ID():得到刚insert进去记录的主键值,只适用与自增主键
keyProperty:将查询到主键值设置到parameterType指定的对象的哪个属性
order:SELECT LAST_INSERT_ID()执行顺序,相对于insert语句来说它的执行顺序
resultType:指定SELECT LAST_INSERT_ID()的结果类型
//也可以使用以下这种方法
useGeneratedKeys="true" keyProperty="id"
以上两种方法可以自动将id赋值给传入的那个实体相应的属性中去
-->
<selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">
SELECT LAST_INSERT_ID()
</selectKey>
INSERT INTO user(name,password)
VALUES (#{name},#{password})
</insert>
<!--更新用户信息,id必须存在-->
<update id="updateUser" parameterType="Pojo.User">
UPDATE user
SET password = #{password}
WHERE id = #{id}
</update>
<!--根据id删除用户-->
<delete id="deleteUser" parameterType="int">
DELETE FROM
user
WHERE id = #{id}
</delete>
在测试类中添加相应的三个测试方法1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16//增加测试
User user = new User();
user.setName("JJ");
user.setPassword("JJ");
sqlSession.insert("test.insertUser",user);
System.out.println(user.getId());
//更新测试
User user = new User();
user.setId(4);
user.setName("JJ");
user.setPassword("KK");
sqlSession.update("test.updateUser",user);
//删除测试
sqlSession.delete("test.deleteUser",4);
mybatis和hibernate本质区别和应用场景
- hibernate
是一个标准ORM框架(对象关系映射)。入门门槛较高的,不需要程序写sql,sql语句自动生成了。对sql语句进行优化、修改比较困难的。hibernate对象/关系映射能力强,数据库无关性好。
应用场景:适用与需求变化不多的中小型项目,比如:后台管理系统,erp、orm、oa。。
- mybatis
专注是sql本身,需要程序员自己编写sql语句,sql修改、优化比较方便。mybatis是一个不完全的ORM框架,虽然程序员自己写sql,mybatis也可以实现映射(输入映射、输出映射)。但是灵活的前提是Mybatis无法做到数据库无关性。
应用场景:适用与需求变化较多的项目,比如:互联网项目。