mybatis3.1-[topic-16-17]-映射文件_增删改查_insert_获取自增主键的值

笔记要点
出错分析与总结

/**测试第16章的增,删,改 的内容
 *  错误1: <insert id="addEmp" parameterType="com.bean.Employee">  ,注意选取数据类型是parameterType,不是Map
 *  错误2: 按顺序查找全部数据,但是delete清楚数据后, id自增变量不是从零开始的;所以自己的while循环不好!
 *  ---------
 *  1. mybatis 支持允许增删改查,直接定义如下类型: Integer/long/boolean类型
 *  2. 手动提交即可, openSession.commit();
 *  3.
 */


工程组织

EmployeeMapper.xml   (加入 增,删,改 的sql映射语句的内容)
<?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.dao.EmployeeMapper">
    <!--
     namespace: 名称空间
    id: 唯一标识
    resultType:返回值类型
    #{id} : 从传递过来的参数中取出id值
    public Employee getEmpById(Integer id);
    -->
    <select id="getEmpById" resultType="com.bean.Employee" databaseId="mysql">
        select * from tbl_employee where id = #{id}
    </select>

    <!--
        public void addEmp(Employee employee);
        parameterType : 参数类型,可以省略;
        mysql支持自增主键,自增主键的获取:mybatis也是利用statement.getGeneratedKeys()
        调用方法: 在标签中添加即可: useGeneratedKeys="true";
    -->
    <insert id="addEmp" parameterType="com.bean.Employee"
        useGeneratedKeys="true" keyProperty="id">
        insert into tbl_employee(last_name,email,gender)
        values (#{lastName},#{email},#{gender})
    </insert>
    <!--public void updateEmp(Employee employee);-->
    <update id="updateEmp" >
          update tbl_employee
          set last_name=#{lastName},email=#{email},gender=#{gender}
          where id=#{id}
    </update>
    <!--public void deleteEmpById(Integer id);-->
    <delete id="deleteEmpById">
        delete from tbl_employee where id=#{id}
    </delete>
</mapper>

EmployeeMapper.java   [com.dao 下的]

package com.dao;
import com.bean.*;
    //接口式编程! namespace: 名称空间,指定为接口名字;
public interface EmployeeMapper {
    public Employee getEmpById(Integer id);
            //添加返回值类型,表示mybatis的会话状态是true或者false
    public boolean addEmp(Employee employee);
    public boolean updateEmp(Employee employee);
    public boolean deleteEmpById(Integer id);
}

class test_tp16  测试类  [com.test下的]

package com.test;
import com.bean.Employee;
import com.dao.EmployeeMapper;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;

import java.io.IOException;
import java.io.InputStream;

/**测试第16章的增,删,改 的内容
 *  错误1: <insert id="addEmp" parameterType="com.bean.Employee">  ,注意选取数据类型是parameterType,不是Map
 *  错误2: 按顺序查找全部数据,但是delete清楚数据后, id自增变量不是从零开始的;所以自己的while循环不好!
 *  ---------
 *  1. mybatis 支持允许增删改查,直接定义如下类型: Integer/long/boolean类型
 *  2. 手动提交即可, openSession.commit();
 *  3.
 */
public class test_tp16 {
    public SqlSessionFactory getSqlSessionFactory() throws IOException {
        String resource = "mybatis-config.xml";
        InputStream inputStream=Resources.getResourceAsStream(resource);
        return new SqlSessionFactoryBuilder().build(inputStream);
    }
    @Test
    public void test03() throws IOException{
        //默认是不自动提交数据的,需要我们自己手动提交
        SqlSession openSession = getSqlSessionFactory().openSession();

        try {
            EmployeeMapper mapper = openSession.getMapper(EmployeeMapper.class);
            //1-1 测试:增加一条记录
         //  Employee employee1 = new Employee(null, "jerry", "[email protected]", "0");
       //     mapper.addEmp(employee1);
            //1-1-1 测试自增:增加一条记录
              Employee employee1 = new Employee(null, "葫芦娃", "葫芦娃@163.com", "0");
              mapper.addEmp(employee1);
            //1-2 测试; 更新一号的名字为 jerry,性别为1
//            Employee employee = new Employee(1, "jerry", "[email protected]", "1");
//            mapper.updateEmp(employee);
            //1-3 测试删除,删除第二号的员工
         //   boolean b= mapper.deleteEmpById(2);
         //   System.out.println(b);
            //1-4 测试; 按顺序查找全部数据,
            Employee employee;
            int i=1;
            while ((employee = mapper.getEmpById(i))!=null){
                i++;
                System.out.println(employee);
            }
            //2.手动提交
            openSession.commit();
        } finally {
            openSession.close();
        }
    }
}

猜你喜欢

转载自www.cnblogs.com/zhazhaacmer/p/10033665.html