Mybatis-增刪改查之事務的提交
阿新 • • 發佈:2021-06-19
依據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>