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>
上一篇:springLearn


下一篇:Spring整合Mybatis,声明式事务(狂神)