1. 程式人生 > 實用技巧 >【Mybatis學習筆記2】實現新增、修改、刪除、條件操作、萬能map等介面

【Mybatis學習筆記2】實現新增、修改、刪除、條件操作、萬能map等介面

基於上一篇:https://www.cnblogs.com/yunren/p/14253813.html

本篇內容主要是實現insert、update、delete、帶引數傳遞,以及萬能map的幾個介面。

我們只需要修改dao下的UserMapper介面,以及對應的UserMapper.xml配置檔案裡的相關內容:

1、新增一個使用者

package com.coke.dao;

import com.coke.pojo.User;

import java.util.List;
import java.util.Map;

public interface UserMapper {
// 新增一個使用者
int addUser(User user); }
<?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.coke.dao.UserMapper">
    <!--
        id 對應namespace中的方法名
        resultType sql執行的返回值
    
--> <insert id="addUser" parameterType="com.coke.pojo.User"> insert into mybatis.user (id,name,pwd) values (#{id},#{name },#{pwd}) </insert> </mapper>
package com.coke.dao;

import com.coke.pojo.User;
import com.coke.utils.MybatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test; import java.util.HashMap; import java.util.List; import java.util.Map;
/*
測試類
增、刪、改,必須提交事務,也就是sqlSession.commit();
*/
public class UserDaoTest {
@Test public void addUser(){ SqlSession sqlSession = MybatisUtils.getSqlSession(); UserMapper mapper = sqlSession.getMapper(UserMapper.class); mapper.addUser(new User(4,"哈哈","111111")); // 提交事務 sqlSession.commit(); sqlSession.close(); } }

2.修改一個使用者資訊(根據id欄位修改)

因為sql語句是:update mybatis.user set name=%,pwd=% where id=%;,所以我們還是需要User的三個欄位,故引數是User物件

package com.coke.dao;

import com.coke.pojo.User;

import java.util.List;
import java.util.Map;

public interface UserMapper {

    // 更新使用者
    int updateUser(User user);

}
<?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.coke.dao.UserMapper">
    <!--
        id 對應namespace中的方法名
        resultType sql執行的返回值
    -->
    <update id="updateUser" parameterType="com.coke.pojo.User">
        update mybatis.user set name=#{name},pwd=#{pwd}  where id=#{id};
    </update>
</mapper>
package com.coke.dao;

import com.coke.pojo.User;
import com.coke.utils.MybatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class UserDaoTest {

    @Test
    public void updateUser(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);

        mapper.updateUser(new User(4,"who","444444"));
        sqlSession.commit();
        sqlSession.close();
    }

}

3.刪除一個使用者(根據id)

package com.coke.dao;

import com.coke.pojo.User;

import java.util.List;
import java.util.Map;

public interface UserMapper {
// 刪除使用者
    int deleteUser(int id);

}
<?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.coke.dao.UserMapper">
    <!--
        id 對應namespace中的方法名
        resultType sql執行的返回值
    -->

    <delete id="deleteUser" parameterType="int">
        delete from mybatis.user where id=#{id}
    </delete>

</mapper>
package com.coke.dao;

import com.coke.pojo.User;
import com.coke.utils.MybatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class UserDaoTest {

    @Test
    public void deleteUser(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);

        mapper.deleteUser(4);
        sqlSession.commit();
        sqlSession.close();

    }
}

4.萬能map(實現新增使用者)

package com.coke.dao;

import com.coke.pojo.User;

import java.util.List;
import java.util.Map;

public interface UserMapper {

    // 萬能map
    int addUser2(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要和dao.Mapper的介面名一致 -->
<mapper namespace="com.coke.dao.UserMapper">
    <!--
        id 對應namespace中的方法名
        resultType sql執行的返回值
    -->

    <insert id="addUser2" parameterType="map">
        insert into mybatis.user (id,name,pwd) values (#{userId},#{userName},#{passWord});
    </insert>
</mapper>
package com.coke.dao;

import com.coke.pojo.User;
import com.coke.utils.MybatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class UserDaoTest {

    @Test
    public void addUser2(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);

        Map<String,Object> map = new HashMap<String, Object>();
        map.put("userId",5);
        map.put("userName","houzi");
        map.put("passWord","000000");

        mapper.addUser2(map);

        sqlSession.commit();
        sqlSession.close();

    }
}

總結:

1.UserMapper.xml

  • namespace,對應dao層mapper名稱;
  • id,對應namespace裡的方法名;
  • resultType,對應返回型別,只在select中用到;
  • parameterType,引數型別,有一個where條件的,就對應該欄位的型別;多個欄位時用User。

2.UserMapper.java與UserMapper.xml對應關係