事务管理:
事务管理是企业级应用程序开发中必不可少的技术,用来确保一组操作的时候 数据的完整性和一致性
一个完整的事物需要满足以下的特性
原子性(atomicity):事务的原子性确保动作要么全部完成,要么完全不起作用
一致性(consistency):一旦所有事务动作完成,事务就被提交。也就是说要么都成功,要么都不成功
隔离性(isolation):多个事物同时处理一个数据的时候,每个事物都应该与其他事务隔离开来,防止数据损坏
持久性(durability):一旦事务完成,无论发生什么系统错误,它的结果都不应该受到影响。应该被持久化到数据库中
这就是事务的四个关键属性(ACID)
mybatis的增删查改:
① 一个java类接口 对应一个xml映射文件;相当于此xml映射文件是该接口的实现所书写的sql代码;
② xml文件的声明; 并且声明为mapper映射文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
③ 对应接口类 去掉.java后缀<mapper namespace="com.lovo.my.dao.IUserMapper">
书写映射的sql
<!-- 编写一个新增方法 parameterType参数类型-->
<insert id="saveUserBean" parameterType="UserBean" useGeneratedKeys="true" keyProperty="u.id">
insert into t_user (user_name,password,sex,salary) values (#{u.userName},#{u.password},#{u.sex},#{u.salary})
</insert>
<insert id="batchAddUserBean" parameterType="java.util.List">
insert into t_user (user_name,password,sex,salary) values
<foreach collection="list" item="user" separator=",">
(#{user.userName},#{user.password},#{user.sex},#{user.salary})
</foreach>
</insert>
<!-- 编写一个修改方法 在方法中除了id是必填外 其他属性皆为可选 -->
<update id="updateUserBean">
update t_user set user_name = #{u.userName},password = #{u.password},sex = #{u.sex},salary = #{u.salary} where id = #{id}
</update>
<delete id="deleteUserBean">
delete from t_user where id = #{id}
</delete>
<delete id="batchDeleteUserBean">
delete from t_user where id in
<foreach collection="list" item="id" separator="," open="(" close=")">
#{id}
</foreach>
</delete>
<!--适合在字段名和属性名可能不相符就写resultMap
-适合在字段名和属性名可能相符就写resultType-->
<select id="getUserBeanByNameAndPassword" resultMap="userMap">
select * from t_user where user_name = #{userName} and password = #{password}
</select>
<select id="findAll" resultMap="userMap">
select * from t_user
</select>
<select id="selectCountUserBeanCondition" resultType="int">
select count(*) from t_user where 1 = 1
<include refid="item"></include>
</select>
<select id="selectUserBeanCondition" resultMap="userMap">
select count(*) from t_user where 1 = 1
<include refid="item"></include>
limit ${index}.${rows}
</select>
<sql id="item">
<if test="userName != null and userName!=''">
and user_name like '%"${userName}"%'
</if>
<if test="sex != null and sex!=''">
and sex = #{sex}
</if>
</sql>
</mapper>
测试文件写在src路径外;方便后期合成时删除