使用Mybatis对表进行增删改查操作

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)

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注