笔记要点
出错分析与总结

/**测试第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. centos7下使用yum安装mysql5.7.10

    原文地址:http://www.mamicode.com/info-detail-503994.html CentOS7的yum源中默认好像是没有mysql的.为了解决这个问题,我们要先下载mysql ...

  2. 13、OpenCV实现图像的空间滤波——图像平滑

    1.空间滤波基础概念 1.空间滤波基础 空间滤波一词中滤波取自数字信号处理,指接受或拒绝一定的频率成分,但是空间滤波学习内容实际上和通过傅里叶变换实现的频域的滤波是等效的,故而也称为滤波.空间滤波主要 ...

  3. springboot备份mysql后发送邮件并删除备份文件,支持win和Linux

    首先加入springboot的邮箱依赖 <!--邮箱依赖--> <!-- https://mvnrepository.com/artifact/org.springframework ...

  4. TCP/IP学习笔记7--TCP/IP模型通信例子学习

    "一位如蝴蝶般美丽的女子向我飞来,翩翩的舞姿如同云端轻盈的叶儿." -------------------------------------------------------- ...

  5. SpringCloud用Zookeeper做服务注册与发现中心代码实现

    一:Zookeeper用的是3.5.5版本,SpringBoot用的是2.1.6版本,SpringCloud用的是Greenwich.SR2版本,JDK用的是1.8: 服务提供者product-ser ...

  6. Djang简单使用

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

  7. (一)构建基于ubuntu docker MySQL 5.6 镜像并推送到Docker Hub

    一,创建目录二,文件准备三,构建四,使用五,在宿主机上连接docker 中的mysql六,推送镜像到Docker hub 一,创建目录 mkdir -p mysql/5.6 二,文件准备 注意执行脚本 ...

  8. python 之 logger日志 字典配置文件

    import os import logging.config #不能只导入logging BASE_DIR=os.path.dirname(os.path.dirname(__file__)) # ...

  9. Vue.js 2.x API 知识梳理(一) 全局配置

    Vue.js 2.x API 知识梳理(一) 全局配置 Vue.config是一个对象,包含Vue的全局配置.可以在启动应用之前修改指定属性. 这里不是指的@vue/cli的vue.config.js ...

  10. S04_CH03_QSPI烧写LINUX系统

    S04_CH03_QSPI烧写LINUX系统 3.1概述 3.2搭建硬件系统 本章硬件工程还是使用<S04_CH01_搭建工程移植LINUX/测试EMMC/VGA>所搭建的VIVADO工程 ...