一、增

在环境搭建好的基础上

1、在dao接口中创建一个抽象方法

  1. public interface UserDao {
  2. int saveUser(User user);
  3. }

2、在映射配置文件中

  1. <!--namespace 写dao接口的全名 代包名-->
  2. <mapper namespace="com.yixuexi.dao.UserDao">
  3. <!--id 写dao接口中的方法名字 不带()-->
  4. <!--parameterType 写对应那个实体类 从那个实体类中取数据 输入参数类型-->
  5. <insert id="saveUser" parameterType="com.yixuexi.entity.User">
  6. <!--取数据用 #{属性名或者getId() 都可以}-->
  7. insert into user(id,name,password) values(#{id},#{name},#{password})
  8. </insert>
  9. </mapper>

3、在执行的时候一定不要忘记sqlSession.commit()

因为自动提交事务是关闭的

二、保存操作的细节,获取保存数据的id

Select last_insert_id();   会查询到最后一次保存的id

未命名图片.png

1、在dao接口中创建一个方法

//保存一个User 并且返回该User的id
Integer saveUserReturnId(User user);

2、在映射文件中这样写

    <!--id写到接口中方法名  parameterType输入参数类型-->
    <!--useGeneratedKeys:设置是否使用JDBC的getGenereatedKeys方法获取主键并赋值到keyProperty设置的领域模型属性中-->
    <insert id="saveUserReturnId" keyProperty="id" useGeneratedKeys="true" parameterType="com.yixuexi.entity.User">
        insert into user(name,password) values(#{name},#{password})
    </insert>

3、然后再注册该mapper,

(已经注册过的不需要在注册)

4、在测试类写的注意事项

  • 返回的值并不是id属性
  • 要想得到id属性从user对象中getId即可
  • 一定不要忘记 session.commit();
  • id必须为主键并且自增长 auto_increment

未命名图片.png

三、改

在环境搭建好的基础上

1、在UserDao接口上新建一个方法

public interface UserDao {
    //用户更改的方法
    void updateUser(User user);
}

2、在映射配置文件中写sql

<update id="updateUser" parameterType="com.yixuexi.entity.User">
  update user set name = #{name},password = #{password} where id = #{id}
</update>

3、在主配置文件中注册上

<mappers>
  <mapper resource="com/yixuexi/dao/UserDaoMapper.xml"></mapper>
</mappers>

4、在测试文件中写测试方法

注意最后一定要SqlSession.commit(); // 提交

四、删除

在环境搭建好的基础上

1、给UserDao接口上新建一个方法

public interface UserDao {
    void deleteUser(Integer id);
}

2、在映射配置文件中写sql

类型不是User而是Integer
<update id="deleteUser" parameterType="java.lang.Integer">
  取值直接用#{}
  delete from user where id = #{id}
</update>

3、在主配置文件中注册

<mappers>
    <mapper resource="com/yixuexi/dao/UserDaoMapper.xml"></mapper>
</mappers>

4、在测试文件中写测试方法

注意最后一定要SqlSession.commit();