笔记要点
出错分析与总结

/**测试第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", "jerry@163.com", "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", "jerry@163.com", "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();
}
}
}

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

  1. MyBatis映射文件1(增删改、insert获取自增主键值)

    增删改 Mybatis为我们提供了<insert>.<update>.<delete>标签来对应增删改操作 在接口中写增删改的抽象方法 void addEmp(Em ...

  2. Django项目的创建与介绍.应用的创建与介绍.启动项目.pycharm创建启动项目.生命周期.三件套.静态文件.请求及数据.配置Mysql完成数据迁移.单表ORM记录的增删改查

    一.Django项目的创建与介绍 ''' 安装Django #在cmd中输入pip3 #出现这个错误Fatal error in launcher: Unable to create process ...

  3. Django 06 Django模型基础1(ORM简介、数据库连接配置、模型的创建与映射、数据的增删改查)

    Django 06 Django模型基础1(ORM简介.数据库连接配置.模型的创建与映射.数据的增删改查) 一.ORM系统 #django模型映射关系 #模型类-----数据表 #类属性-----表字 ...

  4. Yii 1.1.17 四、属性标签、AR类增删改查、使用上传类与扩展第三方类库

    一.属性标签与规则设置 当进入网站页面,将会读数据库返回信息到视图上.那么,现在定义模型中的属性在视图标签上的显示, 也就是模型属性到前台标签的映射 // 定义模型属性到前台标签的映射 public ...

  5. MySQL数据分析(16)— 数据操作之增删改查

    前面我们说学习MySQL要从三个层面,四大逻辑来学,三个层面就是库层面,表层面和数据层面对吧,数据库里放数据表,表里放数据是吧,大家可以回忆PPT中jacky的这图,我们已经学完了库层面和表层面,从本 ...

  6. mybatis3.1-[topic-18-20]-_映射文件_参数处理_单个参数&多个参数&命名参数 _POJO&Map&TO 三种方式及举例

    笔记要点出错分析与总结 /**MyBatis_映射文件_参数处理_单个参数&多个参数&命名参数 * _POJO&Map&TO 三种方式及举例 _ * 单个参数 : #{ ...

  7. Mybatis框架基于映射文件和配置文件的方式,实现增删改查,可以打印日志信息

    首先在lib下导入: 与打印日志信息有关的架包 log4j-1.2.16.jar mybatis架包:mybatis-3.1.1.jar 连接数据库的架包:mysql-connector-java-5 ...

  8. mybatis的sql映射文件—增删改查

    前提:需要的包log4j.jar,mybatis-3.4.1.jar,mysql-connector-java-5.1.37-bin.jar 1.基本类 员工类 package com.hand.my ...

  9. MyBatis学习(二)、SQL语句映射文件(2)增删改查、参数、缓存

    二.SQL语句映射文件(2)增删改查.参数.缓存 2.2 select 一个select 元素非常简单.例如: <!-- 查询学生,根据id --> <select id=" ...

随机推荐

  1. python基础篇(二)

    PYTHON基础篇(二) if:else,缩进 A:if的基础格式和缩进 B:循环判断 C:range()函数和len()函数 D:break,contiue和pass语句 for,while循环 函 ...

  2. 设计模式之--Visitor

    Ref: https://www.jianshu.com/p/feec47a25b67 https://www.cnblogs.com/alphablox/p/5346567.html

  3. [bzoj3829][Poi2014]FarmCraft_树形dp

    FarmCraft 题目链接:https://lydsy.com/JudgeOnline/problem.php?id=3829 数据范围:略. 题解: 因为每条边只能必须走两次,所以我们的路径一定是 ...

  4. kafka那些事儿

    1 为什么用消息队列 1)解耦.服务之间没有强依赖,不需要关心调用服务时出现的各种异常,服务挂掉后接口超时等问题 2)异步.解决接口调用多服务时延时高的问题 3)高峰期服务间缓冲.解决工作节奏不一致问 ...

  5. Djang简单使用

    用户访问内容 ​ 用户能够访问的所有的资源,都是程序猿提前暴露的,如果没有暴露,用户是不能进行访问的. diango重启的问题 ​ 当我们更改django中的代码的时候,django内部会检测到我们更 ...

  6. Spring之2:HierarchicalBeanFactory接口

    HierarchicalBeanFactory:HierarchicalBeanFactory继承BeanFactory并扩展使其支持层级结构.getParentBeanFactory()方法或者父级 ...

  7. PAT(B) 1029 旧键盘(Java)字符串

    题目链接:1029 旧键盘 (20 point(s)) 题目描述 旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现.现在给出应该输入的一段文字.以及实际被输入的文字,请你列出肯定坏掉的 ...

  8. BZOJ4400 TJOI2012桥(最短路+线段树)

    首先找出任意一条1-n的最短路径.显然删除的边只有在该最短路上才会对最短路长度产生影响. 不会证明地给出一个找不到反例的结论:删除一条边后,新图中一定有一条1-n的最短路径上存在一条边x->y, ...

  9. linux环境,hidraw设备自动加载时默认权限的设置方法

    在linux系统中,hidraw设备会自动加载并设置默认权限,但系统的默认只允许root用户访问,普通用户是不允许读写. 设置的方法是修改udev的配置,配置路径是/etc/udev/rules.d/ ...

  10. C# EF 加密连接数据库连接字符串

    不多说,直接上代码 public partial class Model1 : DbContext { private static string connStr = ""; pu ...