MyBatis 增删改查操作
上一节课我们把 MyBatis 的环境搭建起来了,并且可以实现查询数据库。那么这一集我们来实现其他的操作——增删改查。
为了方便调用,我们封装一个方法专门获取 SqlSession:
private static SqlSession extracted() {
String resource = "conf.xml";
InputStream inputStream = Program.class.getClassLoader().getResourceAsStream(resource);
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession session = sessionFactory.openSession();
return session;
}Code language: JavaScript (javascript)
创建用户
在映射文件中增加:
<!-- 创建用户(Create) -->
<insert id="addAccount" parameterType="cn.xxxx.models.Account">
insert into account(name,age,sex,addtime) values(#{name},#{age},#{sex},#{addtime})
</insert>Code language: HTML, XML (xml)
然后方法中调用:
// 插入用户
Account a = new Account();
a.setAddTime(new Date());
a.setAge(123);
a.setSex(true);
a.setName("王五");
int result = session.insert("cn.bamn.mapper.addAccount", a);
session.commit();
System.out.println(result > 0 ? "新增成功" : "新增失败");Code language: JavaScript (javascript)
记得要提交 commit 方法,否则会无法插入到数据库中。
完整代码示例
import java.io.IOException;
import java.io.InputStream;
import java.util.Date;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import cn.xxxxx.models.Account;
public class Program {
public static void main(String[] args) throws IOException {
SqlSession session = extracted();
// 插入用户
Account a = new Account();
a.setAddTime(new Date());
a.setAge(123);
a.setSex(true);
a.setName("王五");
int result = session.insert("cn.bamn.mapper.addAccount", a);
session.commit();
System.out.println(result > 0 ? "新增成功" : "新增失败");
// 下面是根据ID查询某个用户
String statement = "cn.bamn.mapper.getAccount";
Account account = session.selectOne(statement, 1);
System.out.println(account.getName() + " - " + account.getID());
// 修改用户
account.setName("梁三峰");
account.setAge(100);
int res = session.update("cn.bamn.mapper.updateAccount", account);
session.commit();
System.out.println(res > 0 ? "修改成功" : "修改失败");
// 获取所有用户
List<Account> listAccount = session.selectList("cn.bamn.mapper.getAllAccount");
for (Account item : listAccount) {
System.out.println(item.getName() + ":" + item.getID());
}
// 删除操作
int retResult = session.delete("cn.bamn.mapper.deleteAccount", 5);
session.commit();
// 最后关闭session
session.close();
}
private static SqlSession extracted() {
String resource = "conf.xml";
InputStream inputStream = Program.class.getClassLoader().getResourceAsStream(resource);
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession session = sessionFactory.openSession();
return session;
}
}Code language: JavaScript (javascript)
映射文件
<?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">
<mapper namespace="cn.xxxx.mapper">
<!-- 根据id查询得到一个Account对象 -->
<select id="getCode language: HTML, XML (xml)
Previous: 搭建Mybatis环境
Next: 通过接口映射的方式操作数据库