Mybatis实现增删改查-mybatis的核心

CRUD(增删改查)–mybatis的核心
搭建好mybatis环境以后可以实现对数据库的增删改查等操作
结构目录
在这里插入图片描述
1.namespace
namespace中的包名要和Dao/mapper接口中的包名一致!

2.过程

  • id:就是对应的namespace中的方法名
  • parameterType:参数类型
  • resultType:sql语句执行的返回值

1.编写接口

package com.superman.dao;

import com.superman.pojo.User;

import java.util.List;

public interface UserMapper {
    //查询全部用户
    List<User> getUserList();

    //根据用户id查询
    User getUserById(int id);

    //增加一个用户
    int addUser(User user);

    //修改一个用户
    int updateUser(User user);

    //删除一个用户
    int deleteUser(int id);
}

2.填写对应的mapper中的sql语句

<?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">

<!--namespace=绑定一个对应的Dao/Mapper接口-->

<mapper namespace="com.superman.dao.UserMapper">

    <!--select查询语句-->
    <select id="getUserList" resultType="com.superman.pojo.User">
        select * from mybatis.user;
    </select>


    <select id="getUserById" resultType="com.superman.pojo.User" parameterType="int">
        select * from mybatis.user where id=#{id};
    </select>


    <!--对象中的属性,可以直接取出来-->
    <insert id="addUser" parameterType="com.superman.pojo.User">
        insert into mybatis.user(id,username,birthday,sex,address) values (#{id},#{username},#{birthday},#{sex},#{address});
    </insert>

<!--修改数据库中的某个参数-->
    <update id="updateUser" parameterType="com.superman.pojo.User">
        update mybatis.user set username=#{username},address=#{address},birthday=#{birthday} where id=#{id};
    </update>

<!--删除数据库中的一个用户-->
    <delete id="deleteUser" parameterType="int">
        delete from mybatis.user where id=#{id};
    </delete>
</mapper>

3.测试

package com.superman.dao;

import com.superman.pojo.User;
import com.superman.utils.MybatisUtil;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;

import java.util.List;

public class UserDaoTest {

    @Test
    public void test() {
        //第一步:获得sqlsession对象
        SqlSession sqlSession = MybatisUtil.getSqlSession();
        //方式一:执行SQL
        UserMapper mapper=sqlSession.getMapper(UserMapper.class);
        List<User> userList=mapper.getUserList();

        for (User user : userList) {
            System.out.println(user);
        }

    //关闭SqlSession
        sqlSession.close();
    }

    @Test
    public void getUserById(){
        SqlSession sqlSession=MybatisUtil.getSqlSession();
        UserMapper mapper=sqlSession.getMapper(UserMapper.class);
        User user=mapper.getUserById(1);
        System.out.println(user);
        sqlSession.close();
    }

    @Test
    public  void addUser(){
        SqlSession sqlSession=MybatisUtil.getSqlSession();
        UserMapper mapper=sqlSession.getMapper(UserMapper.class);
        mapper.addUser(new User(5,"caiji","20201005","男","北京"));
        List<User> userList=mapper.getUserList();
        for (User user : userList) {
            System.out.println(user);
        }

        //提交事务,负责数据库将不会发生变化,即使输出打印时显示插入成功
        sqlSession.commit();
        sqlSession.close();
    }

    @Test
    public void updateUser(){
        SqlSession sqlSession=MybatisUtil.getSqlSession();
        UserMapper mapper=sqlSession.getMapper(UserMapper.class);
        mapper.updateUser(new User(5,"zhaoxuan","20201515","女","太谷"));
        sqlSession.commit();
        sqlSession.close();
    }

    @Test
    public void deleteUser(){
        SqlSession sqlSession=MybatisUtil.getSqlSession();
        UserMapper mapper=sqlSession.getMapper(UserMapper.class);
        mapper.deleteUser(5);
        sqlSession.commit();
        sqlSession.close();
    }

}

注意点:
执行sql语句时,增删改必须要提交事务,sqlSession.commit();,否则无法对数据库产生语句效果
代码中没有使用mybatis中建议的代码格式,但是每次都需要在最后加上sqlSession.close();

发布了32 篇原创文章 · 获赞 48 · 访问量 8651

猜你喜欢

转载自blog.csdn.net/weixin_43894771/article/details/104897241