MyBatis学习系列六:新增和更新

来源:互联网 发布:阿里云学生服务器 编辑:程序博客网 时间:2024/06/04 22:10

1.xml文件

<?xml version="1.0" encoding="UTF-8" ?>  <!DOCTYPE mapper PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"       "http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd"><mapper namespace="com.xiang.mapper.UserMapper">    <!-- 按ID更新用户 -->    <update id="updateById" parameterType="com.xiang.domain.User">        update user set name = #{name},address = #{address} where id = #{id}    </update>    <!-- 新增用户 -->    <insert id="addOne" useGeneratedKeys="true" keyProperty="id" parameterType="com.xiang.domain.User">        insert into user (name,address) values (#{name},#{address})    </insert>    <!-- 批量新增 -->    <insert id="addBatch" parameterType="java.util.List">        insert into user (name,address) values         <foreach collection="list" item="item" index="index" separator=",">            (#{item.name},#{item.address})        </foreach>    </insert></mapper>

如果是自增列可以在insert时,使用useGeneratedKeys标签,keyProperty标签可以在insert时获取新增记录的ID
2.mapper

public interface UserMapper {           public void updateById(User user);    public void addOne(User user);    public void addBatch(List<User> users);}

3.dao

public void updateById(User user){    SqlSession sqlSession = null;    sqlSession = GetSqlSessionFactory.getInstance().getSqlSessionFactory().openSession();    if (sqlSession != null) {        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);        userMapper.updateById(user);        sqlSession.commit();        sqlSession.close();    }}public User addOne(User user){    SqlSession sqlSession = null;    sqlSession = GetSqlSessionFactory.getInstance().getSqlSessionFactory().openSession();    if (sqlSession != null) {        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);        userMapper.addOne(user);        sqlSession.commit();        sqlSession.close();    }    return user;}public void addBatch(List<User> users){    SqlSession sqlSession = null;    sqlSession = GetSqlSessionFactory.getInstance().getSqlSessionFactory().openSession();    if (sqlSession != null) {        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);        userMapper.addBatch(users);        sqlSession.commit();        sqlSession.close();    }}

4.service

public void updateById(User user){        UserDao userDao = new UserDao();        userDao.updateById(user);}public User addOne(User user){    UserDao userDao = new UserDao();    return userDao.addOne(user);}public void addBatch(List<User> users){    UserDao userDao = new UserDao();    userDao.addBatch(users);}

5.新增测试取回主键

User user = new User("张三", "浙江省 杭州市");System.out.println(user);userService.addOne(user);System.out.println(user);User [id=null, name=张三, address=浙江省 杭州市]User [id=109, name=张三, address=浙江省 杭州市]
0 0