基于MyBatis的CRUD

首先,为了方便,将sqlSession的获取封装为一个工具类SqlSessionUtil

public class SqlSessionUtil {
    public static SqlSession getSqlSession(){
        SqlSession sqlSession = null;
        try {
            //获取核心配置文件
            InputStream is = Resources.getResourceAsStream("mybatis-config.xml");

            //获取sqlSessionFactoryBuilder对象
            SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();

            //读取核心配置文件
            SqlSessionFactory sessionFactory = sqlSessionFactoryBuilder.build(is);

            //得到sqlSession对象,并设置事务自动提交
            sqlSession = sessionFactory.openSession(true);

        } catch (IOException e) {
            e.printStackTrace();
        }
        return sqlSession;
    }
}

在UserMapper接口中编写相应的方法,插入方法请访问我的上篇文章《初识MyBatis》

public interface UserMapper {
    /**
     * 添加用户
     * @return
     */
    int insertUser();

    /**
     * 删除用户
     * @return
     */
    int deleteUser();

    /**
     * 根据id查找用户
     */
    User getUserById();

    /**
     * 查询所有用户信息
     */
    List<User> getAllUser();
}

接下来,在UserMapper.xml映射文件中写相应的sql语句。

注意,查询方法较增删改略微不同,需要我们提供映射类型resultType或resultMap,这两个类型有且仅有一个,选了这一个就不能选那一个,而且不能不选!

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-mapper.dtd">


<!--映射文件里写sql语句-->
<mapper namespace="com.yuuu.mybatis.mapper.UserMapper">

    <!--     int deleteUser();  -->
    <delete id="deleteUser">
        delete from t_user where id = 1;
    </delete>

    <!--     User getUserById();-->
    <!--
      注意:

    1、查询的标签select必须设置属性resultType或resultMap,用于设置实体类和数据库表的映射

    关系

    resultType:自动映射,用于属性名和表中字段名一致的情况(必须一致!)

    resultMap:自定义映射,用于一对多或多对一或字段名和属性名不一致的情况
      -->
    <select id="getUserById" resultType="com.yuuu.mybatis.user.User">
        select * from t_user where id = 2;
    </select>

    <!--   List<User> getAllUser();  -->
    <select id="getAllUser" resultType="com.yuuu.mybatis.user.User">
        select * from t_user;
    </select>
</mapper>

在单元测试方法中编写相关测试代码

删除

@Test
    public void testDelete(){
        SqlSession sqlSession = SqlSessionUtil.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        int deleteUser = mapper.deleteUser();
        System.out.println(deleteUser);
        sqlSession.close();
    }

两种查询

 @Test
    public void testSelectById(){//根据id查找
        SqlSession sqlSession = SqlSessionUtil.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        User user = mapper.getUserById();
        System.out.println(user);
        sqlSession.close();
    }

    @Test
    public void testGetAllUser(){//查找所有用户
        SqlSession sqlSession = SqlSessionUtil.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        List<User> users = mapper.getAllUser();
        users.forEach(System.out::println);
        sqlSession.close();
    }

一起学习,共同进步。

谁念西风独自凉?萧萧黄叶闭疏窗。沉思往事立残阳。

被酒莫惊春睡重,赌书消得泼茶香,当时只道是寻常。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YuuuZh。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值