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();

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章