【Mybatis學習筆記2】實現新增、修改、刪除、條件操作、萬能map等介面
阿新 • • 發佈:2021-01-09
基於上一篇: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對應關係