1. 程式人生 > 其它 >Mybatis-增刪改查之事務的提交

Mybatis-增刪改查之事務的提交

依據Mybatis中的Mybatis配置,進行的增刪改查的操作

UserMapperTest.calss
@Test
    public void addUser() throws IOException {
        SqlSession sqlsession = MybatisUtil.getSQLSession();
        UserMapper mapper = sqlsession.getMapper(UserMapper.class);
        int row = mapper.addUser(new UserPojo(5, "hahahaha", "xxxxxx"));
        System.out.println(row);
        sqlsession.commit();
        sqlsession.close();
    }

@Test
    public void deleteUser() throws IOException {
        SqlSession sqlsession = MybatisUtil.getSQLSession();
        UserMapper mapper = sqlsession.getMapper(UserMapper.class);
        int row = mapper.deleteUser(5);
        System.out.println(row);
        sqlsession.commit();
        sqlsession.close();

    }

@Test
    public void updateUser() throws IOException {
        SqlSession sqlsession = MybatisUtil.getSQLSession();
        UserMapper mapper = sqlsession.getMapper(UserMapper.class);
        int row = mapper.updateUser(new UserPojo(5, "xiugai", "xiugaile"));
        System.out.println(row);
        sqlsession.commit();
        sqlsession.close();
    }

@Test
    public void getUserList() throws IOException {
        SqlSession sqlsession = MybatisUtil.getSQLSession();
        UserMapper mapper = sqlsession.getMapper(UserMapper.class);
        List<UserPojo> listUser = mapper.getListUser();
        sqlsession.close();
        for (UserPojo user : listUser) {
            System.out.println(user);
        }
    }

UserMapper.xml

<?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相當於(UserMapperImpl)實現dao層介面-->
<mapper namespace="com.test.mapper.UserMapper">
    <!--查詢所有使用者-->
    <select id="getListUser" resultType="com.test.pojo.UserPojo">
        select * from user
    </select>
    <!--新增使用者-->
    <insert id="addUser" parameterType="com.test.pojo.UserPojo">
        insert into user values(#{id},#{name},#{password});
    </insert>
    <!--修改使用者-->
    <update id="updateUser" parameterType="com.test.pojo.UserPojo">
        update user set name=#{name},password=#{password} where id=#{id}
    </update>
    <!--刪除使用者-->
    <delete id="deleteUser" parameterType="int">
        delete from user where id=#{id}
    </delete>
</mapper>

可能存在的錯誤

  • 標籤不要匹配錯誤
  • resource繫結mapper,需要使用路徑(可以使用包名,但是UserMapper.class和UserMapper.xml需要在同一個包下)
  • 配置檔案需要符合規範
  • NullPointerException,沒有註冊到資源(SQLSession資源為區域性,沒有獲取到SQLSession資源)
  • 輸出的xml檔案中存在中文亂碼問題
  • maven資源沒有匯出問題(靜態資原始檔過濾問題)

萬能Map傳遞引數

UserMapperTest.class
//使用Map傳遞引數
    @Test
    public void addUserMap() throws IOException {
        SqlSession sqlsession = MybatisUtil.getSQLSession();
        UserMapper mapper = sqlsession.getMapper(UserMapper.class);
        Map<String,Object> map = new HashMap<String, Object>();
        map.put("id",7);
        map.put("password","oooo");
        map.put("name","6666");
        int row = mapper.addUserMap(map);
        System.out.println(row);
        sqlsession.commit();
        sqlsession.close();
    }
UserMapper.class(介面)
package com.test.mapper;
import com.test.pojo.UserPojo;
import java.util.List;
import java.util.Map;

public interface UserMapper {
    /*增加User使用Map傳遞引數*/
    public int addUserMap(Map<String,Object> map);
}
<?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相當於(UserMapperImpl)實現dao層介面-->
<mapper namespace="com.test.mapper.UserMapper">

    <!--新增使用者-->
    <insert id="addUser" parameterType="com.test.pojo.UserPojo">
        insert into user values(#{id},#{name},#{password});
    </insert>
    <!--新增使用者使用Map傳遞引數-->
    <insert id="addUserMap" parameterType="map">
        insert into user values(#{id},#{name},#{password});
    </insert>
</mapper>