Mybatis的增删改方法以及Oracle中获取序列的配置

首先需要在映射文件对应的接口中定义方法

        //插入一条新数据
	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>

此代码,并未测试,只是个模板进行参考

 

发布了29 篇原创文章 · 获赞 3 · 访问量 869

猜你喜欢

转载自blog.csdn.net/weixin_44616792/article/details/100171352