前面我们看了如何搭建mybatis框架以及查询操作,这里我们说下如何使用mybatis进行增加用户的操作。首先是在user.xml文件中添加insert的方法。代码如下
insert into user(username,birthday,sex,address)
values(#{username},#{birthday},#{sex},#{address})
然后就是写个测试方法,代码如下:
// 添加用户信息
@Test
publicvoid testInsert() {
// 数据库会话实例
SqlSession sqlSession = null;
try {
// 创建数据库会话实例sqlSession
sqlSession = sqlSessionFactory.openSession();
// 添加用户信息
User user = new User();
user.setUsername("张小明");
user.setAddress("河南郑州");
user.setSex("1");
sqlSession.insert("test.insertUser", user);
//提交事务,这里需要手动提交。
sqlSession.commit();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (sqlSession != null) {
sqlSession.close();
}
}
}
注意:这里需要强调的是,由于使用的是jdbc的默认事物,mybatis会自动开启事物,但是不知道什么时候提交,所以需要手动进行事物的提交。
select LAST_INSERT_ID()
insert into user (username, birthday, sex, address) values(#{username}, #{birthday}, #{sex}, #{address})
这里面的selectKey可以将数据库自动生成的主键进行返回,然后会将我们的主键自动赋值给我们的user对象,这样的话,数据库和系统内存中的数据就一致了。
select LAST_INSERT_ID()
换成
select uuid()
然后将after修改为before就可以了。代码如下:
select uuid()
insert into user(id,username,birthday,sex,address)
values(#{id},#{username},#{birthday},#{sex},#{address})
注意:这里使用的order是“BEFORE”
删除用户比较简单,这里就直接把我的代码贴上了
1.user.xml文件
delete from user where id=#{id}
2.测试代码
@Test
publicvoidtestDelete() {
// 数据库会话实例
SqlSession sqlSession = null;
try {
// 创建数据库会话实例sqlSession
sqlSession = sqlSessionFactory.openSession();
// 删除用户
sqlSession.delete("test.deleteUserById",18);
// 提交事务
sqlSession.commit();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (sqlSession != null) {
sqlSession.close();
}
}
}
修改代码比较简单,直接粘贴源代码了:
1.user.xml文件
update user set username=#{username},birthday=#{birthday},sex=#{sex},address=#{address}
where id=#{id}
2.测试程序
@Test
publicvoidtestUpdate() {
// 数据库会话实例
SqlSession sqlSession = null;
try {
// 创建数据库会话实例sqlSession
sqlSession = sqlSessionFactory.openSession();
// 添加用户信息
User user = new User();
user.setId(16);
user.setUsername("张小明");
user.setAddress("河南郑州");
user.setSex("1");
user.setPrice(1999.9f);
sqlSession.update("test.updateUser", user);
// 提交事务
sqlSession.commit();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (sqlSession != null) {
sqlSession.close();
}
}
}