首先需要在映射文件对应的接口中定义方法
//插入一条新数据
public void insertOne(Employee employee);
//根据Id来更新
public Integer updateOne(Employee employee);
//根据Id删除
public boolean deleteOne(Integer id);
接下来在映射文件中配置相关标签即可
<!-- 插入一条新数据 -->
<insert id="insertOne" useGeneratedKeys="true" keyProperty="id">
insert into employee(name,gender,email,d_id)
values(#{name},#{gender},#{email},#{d_id})
</insert>
<!-- 根据Id来更新 -->
<update id="updateOne">
update employee set name=#{name},gender=#{gender},email=#{email},d_id=#{d_id} where id=#{id}
</update>
<!-- 根据Id来删除 -->
<delete id="deleteOne">
delete from employee where id=#{id}
</delete>
因为我是用的是MySQL数据库,它支持自增主键,所以我们可以配置useGeneratedKeys和keyProperty俩个属性,目的就是我们不需要管理主键id了,因为数据库支持它自增,所有进行插入数据操作就无需管理主键
增删改方法不需要写返回值类型,而且Mybatis自动封装了Integer,Long,Boolean类型和其对应的基本类型的返回值,可以直接使用
下面以删除方法为例
//加载配置文件
InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
//创建sessionFactory
SqlSessionFactory sessionFactory = new
SqlSessionFactoryBuilder().build(inputStream);
//获取session
SqlSession session = sessionFactory.openSession();
EmployeeMapper mapper = session.getMapper(EmployeeMapper.class);
boolean result = mapper.deleteOne(5);
System.out.println(result);
//提交事务
session.commit();
session.close();
因为MySQL数据库支持自增主键,所以我们在插入数据时不需要管理主键Id,但是Oracle数据库不支持自增主键
,Oracle使用的是序列,所有我们需要获取序列值才能插入数据
首先需要查找序列值,然后将序列值传给id属性进行插入操作
在select标签下有一个selectkey标签就是用来查询序列的
selectkey标签有三个属性
keyProperty:查出的主键值封装给javabean的那个属性
order:当前sql语句的执行顺序,BEFORE在插入语句之前执行,AFTER是在插入语句之后执行
resultType:查出的数据返回值类型
<insert id="inserOne" databaseId="oracle">
<selectKey keyProperty="id" order="BEFORE" resultType="Integer">
select EMPLOYEES_SEQ.nextval from dual
</selectKey>
<!-- 插入的主键是从序列中拿到的 -->
insert into employee(id,name,gender,email,d_id)
values(#{id},#{name},#{gender},#{email},#{d_id})
</insert>
此代码,并未测试,只是个模板进行参考