Mybatis映射文件-增删改查
以接口编程开始,首先建立一个增删改查的我接口类
publlic interface EmployeeMapper{
public Employee getEmpById(Interger id);//查询
public void addEmpt(Employee employee);//增加
public void deleteEmptById(Integer id);//删除
public void updateEmpt(Employee employee);//更改
}
在 EmployeeMapper.xml中添加方法
<?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"> <mapper namespace="com.guigu.mybatis.EmployeeMapper>
<!--namespace为命名空间, id为唯一标识,resultType返回值类型用类全路径,#{id}从传递的参数中取出id 值>
<select id="getEmpById" resultType="com.guigu.mybatis.Employee">
select id,last_name lastName,email,gender from tbl_employee where id = #{id}
</select>
</mapper>
//mybatis支持自增主键的获取
<insert id="addEmpt" parameterType="com.guigu.mybatis.Employee" **useGeneratedKeys="true" keyProperty="id">**//使用自增主键获取,获取的主键值给id
insert into tbl_employee (last_name,email,gender) values(#{lastName},#{email},#{gender})
</insert>
<update id="updateEmpt">
update tbl_employee set last_name=#{lastName},email=#{email},gender=#{gender} where id=#{id}
</update>
<delete id="deleteEmptById">
delete from tbl_employee where id=#{id}
</delete>
写测试类
@Test
public void test(){
String reource="Mybatis-config.xml";
InputStream inputStream=Resource.getResourceAsStream(reource);
SqlSessionFactory sqlSessionFactory =new SqlSessionFactoryBuilder().build(inputStream);
**//获取的 sqlSession openSession()不会自动提交数据*需要手动提交
// sqlSession openSession(ture)不用手动提交了
SqlSession sqlSession=sqlSessionFactory .openSession();
try {EmployeeMapper employeeMapper=sqlSession.getMapper(EmployeeMapper.class);
employeeMapper.getEmpById(1);
Employee employee=new Employee(null,"lili","123@qq","1");
Employee employee1=new Employee(1,"wli","123@qq","0");
employeeMapper.addEmpt(employee);
employeeMapper.updateEmpt(employee1);
employeeMapper.deleteEmptById(2);
**sqlSession.commit();**
}finally{sqlSession.close();}
}
Oracle不支持自增,Oracle使用序列来模拟自增
,每次插入的数据的主键是从序列中拿到的值,如何获取整个值
<insert id="addEmpt" databaseId="oracle">
<selectKey keyProperty="id" order ="before" resultType="Interger"/>//先查询主键,把值给id,在插入之前运行
select employees_seq.nextval from dual
</selectKey>
insert into employees(Employee_id,last_name,email,gender)
values(#{id},#{lastName},#{email},#{gender})
</insert >
还没有评论,来说两句吧...