mybatis(問題1):更改操作執行了,資料庫中卻未執行

小白成長過程中發表於2020-12-18

問題:更改操作執行了,資料庫中卻未執行

先說結論:十之八九你忘記提交資料庫操作了。

新增session.commit();即可解決。

問題如下:也沒有爆紅,就是執行之後,資料庫中並沒有執行對應的操作,資料未更新。

Mapper介面:
public interface EmployeeMapper {
    public void updateEmployee(Employee employee);;//多條件查詢,根據年齡和部門
}

Mapper對應xml檔案:

<update id="updateEmployee" parameterType="Employee">
    update employee
    <set>
        <if test="name!=null and name!=''">
            e_name=#{name},
        </if>
        <if test="name!=null and name!=''">
            e_gender=#{gender},
        </if>
        <if test="name!=null and name!=''">
            e_age=#{age},
        </if>
    </set>
    where e_id=#{id}
</update>

測試:
@Test
public void employeeUpdate(){
    SqlSession session = MybatisUtils.getSession();
    EmployeeMapper mapper = session.getMapper(EmployeeMapper.class);
    Employee employee= new Employee();
    employee.setId(1);
    employee.setAge(18);
    employee.setName("張白白");
    employee.setGender("女");
    System.out.println(employee.toString());
    mapper.updateEmployee(employee);
    session.commit();
    MybatisUtils.close(session);
}

結果:
DEBUG [main] - ==>  Preparing: update employee SET e_name=?, e_gender=?, e_age=? where e_id=? 
DEBUG [main] - ==> Parameters: 張白白(String), 女(String), 18(Integer), 1(Integer)
DEBUG [main] - <==    Updates: 1

相關文章