笔记要点
出错分析与总结

/**测试第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. 【VS开发】ClientToScreen 和ScreenToClient 用法

    ClientToScreen( )是把窗口坐标转换为屏幕坐标 pWnd->GetWindowRect(&rc);是获取整个窗体的大小pWnd->GetClientRect(& ...

  2. SQL触发器中的inserted表和deleted表

    开发也有年头了,但是触发器确实用的比较少,但是无容置疑触发器确实不错, 最近项目要求需要用到的触发器特别多.频繁,觉得很有必要记录和积累下. 在触发器语句中用两个特殊的表一个是deleted表和ins ...

  3. e.g. i.e. etc. et al. w.r.t. i.i.d.英文论文中的缩写语

    e.g. i.e. etc. et al. w.r.t. i.i.d. 用法:, e.g., || , i.e., || , etc. || et al., || w.r.t. || i.i.d. e ...

  4. [转帖]ARM发布Ethos-N57/N73 NPU、Mali-G57 Valhall GPU和Mali-D37 DPU

    ARM发布Ethos-N57/N73 NPU.Mali-G57 Valhall GPU和Mali-D37 DPU https://www.cnbeta.com/articles/tech/902417 ...

  5. php面向对象之封装

    OOP三大特性:封装.继承和多态,简称封继态. 封装 类2使用关键字extends继承类1,之后,类1为类2的父类,简称父类,类2是类1的子类,简称子类.使用关键字new,实例化类1,得到对象1,对象 ...

  6. TZOJ3114: {A}∩{B}

    #include<stdio.h> int main() { ],b[],m,i,j,c; scanf("%d",&t); while(t--) { c=; s ...

  7. jwt单点登入

    主要有以下三步:   项目一开始我先封装了一个JWTHelper工具包(GitHub下载),主要提供了生成JWT.解析JWT以及校验JWT的方法,其他还有一些加密相关操作.工具包写好后我将打包上传到私 ...

  8. Docker 方式部署的应用的版本更新

    前言 公司使用 Docker-Compose 的方式部署 Jenkins/Gitlab/Sonar/Confluence/Apollo/Harbor/ELK/MySQL 等一系列开发工具/数据库. 而 ...

  9. 用ASP.NET Web API技术开发HTTP接口(二)

    在第一部分,我们创建了一个基本的ASP.NET Web API项目,新建成功了数据表,然后添加了一些测试数据,最后创建了API控制器,用json格式把数据表里面的内容成功输出到浏览器上.接下来我们将继 ...

  10. 递推问题 hdu 2046 与1143的比对

    2046 在2×n的一个长方形方格中,用一个1× 2的骨牌铺满方格,输入n ,输出铺放方案的总数.例如n=3时,为2× 3方格,骨牌的铺放方案有三种,如下图:   Input 输入数据由多行组成,每行 ...