S++

千线一眼

导航

< 2025年3月 >
23 24 25 26 27 28 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 1 2 3 4 5

统计

mybatis-CRUD操作(增删改查

前提

每一个Dao.xml或者说Mapper.xml都要绑定映射在sqlMapConfig.xml的数据库配置文件中

    <mappers>
        <!-- 使用配置文件(需要自己创建……配置……)-->
        <mapper resource="Dao.xml的路径(用/分级"/>
        <!-- 使用注解
        <mapper class="Dao类的路径(用.分级"/>
        -->
    </mappers>

Dao.xml文件需要将对应的Dao类绑定在命名空间

<!--命名空间和Dao类绑定-->
<mapper namespace="Dao类的路径(用.分级">
    <select id="Dao类中的方法名" resultType="返回的实体类型">
        select 查询语句;
    </select>
</mapper>

Mybatis工具类

为了调用方便我们准备一个工具类

package com.sjj.utils;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.IOException;
import java.io.InputStream;

public class MybatisUtils {
    private static InputStream in;
    private static SqlSessionFactory factory;
    static {
        try {
            // 1,读取配置文件
            in = Resources.getResourceAsStream("SqlMapConfig.xml");
            // 2,创建SqlSessionFactory工厂
            SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
            factory = builder.build(in);
            in.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    // 3,获取SqlSession对象
    public static SqlSession getSqlSession(){
        return factory.openSession();
    }

}

查询:SELECT

基本样式

    <select id="方法名l" parameterType="参数类型" resultType="返回类型">
        select 查询语句;
    </select>

实践

实现一个方法:根据性别查找用户

  1. 在用户持久层接口UserDao中添加方法
    // 根据sex查找用户
    List<User> findUserBySex(String sex);
  1. 在UserDao.xml的命名空间中添加一条select语句
<mapper namespace="com.sjj.dao.UserDao">
    <select id="findUserBySex" parameterType="String" resultType="com.sjj.domain.User">
        SELECT * FROM user WHERE sex = #{sex}
    </select>
</mapper>
  1. 查看数据库配置文件中是否绑定了UserDao.xml文件
    <!-- 指定映射文件,dao的配置文件 -->
    <mappers>
        <!-- 使用配置文件(需要自己创建……配置……)-->
        <mapper resource="com/sjj/dao/UserDao.xml"/>
        <!-- 使用注解
        <mapper class="com.sjj.dao.UserDao"/>
        -->
    </mappers>
  1. 编写测方法
    @Test
    public void testFindUserBYSex(){
        // 3,获取SqlSession对象
        SqlSession session = MybatisUtils.getSqlSession();
        // 4,使用SqlSession创建dao接口的代理对象
        UserDao userdao = session.getMapper(UserDao.class);
        // 5,使用代理对象执行接口
        List<User> users = userdao.findUserBySex("女");
        for(User user:users){
            System.out.println(user);
        }
        // 释放资源
        session.close();
    }

查询

增加:INSERT

基本样式

    <insert id="方法名" parameterType="参数类型">
        insert into 语句;
    </insert>

实践

由于前面已经将UserDao.xml绑定在数据库配置文件中,接下来就不需要重复查看
不过新添加一个xml文件一定要记得绑定哦
实现一个方法:插入一个用户

  1. 在用户持久层接口UserDao中添加方法
    // 添加一个用户
    int addUser(User user);
  1. 在UserDao.xml的命名空间中添加一条insert语句
    <insert id="addUser" parameterType="com.sjj.domain.User">
        insert into user (id,username,birthday,sex,address) values (#{id},#{username},#{birthday},#{sex},#{address});
    </insert>
  1. 编写测试方法
    @Test
    public void testAddUser(){
        SqlSession session = MybatisUtils.getSqlSession();
        UserDao userdao = session.getMapper(UserDao.class);
        User user = new User(99, "青眼白龙", new Date(), "女", null);
        userdao.addUser(user);
        // **注意增删改需要提交事务**
        session.commit();
        session.close();
    }

插入

更新/修改:UPDATE

基本样式

    <update id="方法名" parameterType="参数">
        update 语句;
    </update>

实践

实现一个方法:

  1. 在用户持久层接口UserDao中添加方法
    // 通过id更新用户
    int updateUserById(User user);
  1. 在UserDao.xml的命名空间中添加一条update语句
    <update id="updateUsersById" parameterType="com.sjj.domain.User">
        update user
        set address = #{address},username=#{username},birthday=#{birthday},sex=#{sex}
        where id = #{id};
    </update>
  1. 编写测试方法
    @Test
    public void testUpUserById(){
        SqlSession session = MybatisUtils.getSqlSession();
        UserDao userdao = session.getMapper(UserDao.class);
        User user = new User(99, "青眼白龙", new Date(), "女", "古埃及");
        int ans = userdao.updateUserById(user);
        if(ans>0)
            System.out.println("更新成功!");
        // **注意增删改需要提交事务**
        session.commit();
        session.close();
    }

更新

删除:DELETE

基本样式

    <delete id="方法名" parameterType="参数类型">
        delete 语句;
    </delete>

实践

实现一个方法:

  1. 在用户持久层接口UserDao中添加方法
    // 通过id删除用户
    int deleteUserById(int id);
  1. 在UserDao.xml的命名空间中添加一条delete语句
    <delete id="deleteUserById" parameterType="int">
        delete
        from user
        where id = #{id};
    </delete>
  1. 编写测试方法
    @Test
    public void testDeleteUserById(){
        SqlSession session = MybatisUtils.getSqlSession();
        UserDao userdao = session.getMapper(UserDao.class);
        int ans = userdao.deleteUserById(99);
        if(ans>0)
            System.out.println("删除成功!");
        // **注意增删改需要提交事务**
        session.commit();
        session.close();
    }

posted on   S++  阅读(33)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术
点击右上角即可分享
微信分享提示