给接口添加增删改方法
package dao;
import bean.Teacher;
public interface TeacherMapper {
public Teacher getTeacherByID(Integer id);
public void addTeacher(Teacher teacher);
public void updateTeacher( Teacher teacher);
public void deleteTeacherById(Integer id);
}
在映射文件中添加对应的sql
<!--增加一列,parameterType可以不写 -->
<insert id="addTeacher" parameterType="bean.Teacher">
insert into teacher(`id`, `name`,`gender`)
values(#{id},#{name},#{gender})
</insert>
<!--修改内容 -->
<update id="updateTeacher">
update teacher
set `name`=#{name}
where `id`= #{id}
</update>
<!-- 删除某一列-->
<delete id="deleteTeacherById">
delete from teacher
where `id`=#{id}
</delete>
给bean添加带参构造函数和无参构造函数
右键generate
测试插入操作
@Test
public void testInsert() throws IOException {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
//创建sqlSessionFactory对象
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//生成session实例
SqlSession session = sqlSessionFactory.openSession();
try{TeacherMapper teacherMapper = session.getMapper(TeacherMapper.class);
Teacher teacher = new Teacher(3,"Lucy",'F');
teacherMapper.addTeacher(teacher);
session.commit(); //提交操作
}
finally {
session.close();
}
}
执行结果如下:
刷新数据库表单可以看到结果:
测试更新操作
@Test
public void testUpdate() throws IOException {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
try (SqlSession session = sqlSessionFactory.openSession()) {
TeacherMapper teacherMapper = session.getMapper(TeacherMapper.class);
Teacher teacher = new Teacher(3, "joj", 'M');
teacherMapper.updateTeacher(teacher);
session.commit();
}
}
执行结果如下
数据库中更新结果
测试删除操作
@Test
public void testDelete() throws IOException {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
try(SqlSession session = sessionFactory.openSession()){
TeacherMapper teacherMapper = session.getMapper(TeacherMapper.class);
teacherMapper.deleteTeacherById(3);
session.commit();
}
}
运行结果
修改返回值
修改接口方法的返回值,可以得到sql运行结果,支持三种返回值类型 布尔、long和interger。
值为interger和long的时候返回影响了多少行。影响行数大于0的时候为true,否则为false。
我们以删除为例,修改方法的返回值类型为布尔。
打印结果:
改手动提交为自动提交
只需要把session参数加一个true即可。