博客
关于我
MyBatis——(5)MyBatis_映射配置文件_增删改查以及获取自增主键值
阅读量:324 次
发布时间:2019-03-04

本文共 4796 字,大约阅读时间需要 15 分钟。

思路:

1:根据xml配置文件(全局配置文件)创建一个SqlSessionFactory对象 有数据源一些运行环境信息
2:sql映射文件;配置了每一个sql,以及sql的封装规则等。,并写一个接口与它对应
3:将sql映射文件注册在全局配置文件中
4:写代码:
1)、根据全局配置文件得到SqlSessionFactory;
2)、使用sqlSession工厂,获取到sqlSession对象使用他来执行增删改查一个 sqlSession就是代表和数据库的一次会话,用完关闭
3)、使用sql的唯一标志来告诉MyBatis执行哪个sql。sql都是保存在sql映射文件中的。

创建employee表

CREATE TABLE Employee(
id INTEGER PRIMARY KEY auto_increment,
lastName VARCHAR(20) NOT NULL,
email VARCHAR(20) NOT NULL,
gendar VARCHAR(20) NOT NULL
)
在这里插入图片描述

Employee表

package com.atstudying.mybatis.bean;import org.apache.ibatis.type.Alias;public class Employee {   		private Integer id;	private String lastName;	private String email;	private String gendar;	private Department dept;		public Employee() {   		super();	}		public Employee(Integer id, String lastName, String email, String gender) {   		super();		this.id = id;		this.lastName = lastName;		this.email = email;		this.gendar = gender;	}		public Department getDept() {   		return dept;	}	public void setDept(Department dept) {   		this.dept = dept;	}	public Integer getId() {   		return id;	}	public void setId(Integer id) {   		this.id = id;	}	public String getLastName() {   		return lastName;	}	public void setLastName(String lastName) {   		this.lastName = lastName;	}	public String getEmail() {   		return email;	}	public void setEmail(String email) {   		this.email = email;	}	public String getGender() {   		return gendar;	}	public void setGender(String gender) {   		this.gendar = gender;	}	@Override	public String toString() {   		return "Employee [id=" + id + ", lastName=" + lastName + ", email="				+ email + ", gender=" + gendar + "]";	}	}

1:根据xml配置文件(全局配置文件)创建一个SqlSessionFactory对象 有数据源一些运行环境信息

mybatis-config.xml

MyBatisTest.java

public SqlSessionFactory getSqlSessionFactory() throws IOException {   		String resource = "mybatis-config.xml";		InputStream inputStream = Resources.getResourceAsStream(resource);		return new SqlSessionFactoryBuilder().build(inputStream);	}

2:sql映射文件;配置了每一个sql,以及sql的封装规则等。,并写一个接口与它对应

EmployeeMapper.java

package com.atstudying.mybatis.dao;import java.util.List;import java.util.Map;import org.apache.ibatis.annotations.MapKey;import org.apache.ibatis.annotations.Param;import com.atguigu.mybatis.bean.Employee;public interface EmployeeMapper {   		public Employee getEmpById(Integer id);	public Long addEmp(Employee employee);	public boolean updateEmp(Employee employee);	public Integer deleteEmpById(Integer id);	}

EmployeeMapper.xml

insert into employee(lastName,email,gendar) values(#{lastName},#{email},#{gendar})
update employee set lastName=#{lastName},email=#{email},gendar=#{gendar} where id=#{id}
delete from employee where id=#{id}

3:将sql映射文件注册在全局配置文件中

4:写代码:
1)、根据全局配置文件得到SqlSessionFactory;
2)、使用sqlSession工厂,获取到sqlSession对象使用他来执行增删改查一个 sqlSession就是代表和数据库的一次会话,用完关闭
3)、使用sql的唯一标志来告诉MyBatis执行哪个sql。sql都是保存在sql映射文件中的。
MyBatisTest.java

public class MyBatisTest {   		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{   				SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();		//1、获取到的SqlSession不会自动提交数据		SqlSession openSession = sqlSessionFactory.openSession();				try{   			EmployeeMapper mapper = openSession.getMapper(EmployeeMapper.class);			//测试添加			Employee employee = new Employee(null, "jerry4","22@qq.com", "1");			mapper.addEmp(employee);			System.out.println(employee.getId());						//测试修改			Employee employee = new Employee(2, "Tom", "jerry@qq.com", "0");			boolean updateEmp = mapper.updateEmp(employee);			System.out.println(updateEmp);			//测试删除			Integer num=mapper.deleteEmpById(3);			System.out.println(num);			//2、手动提交数据			openSession.commit();		}finally{   			openSession.close();		}			}

结果:

在这里插入图片描述

测试增删改查这一个过程中,我们可以得到如下结论

1、mybatis允许增删改直接定义以下类型返回值
Integer、Long、Boolean、void
2、我们需要手动提交数据
sqlSessionFactory.openSession();——》手动提交
sqlSessionFactory.openSession(true);——》自动提交
3,主键必须
< insert id=“addEmp” parameterType=“com.atstudying.mybatis.bean.Employee”
useGeneratedKeys=“true” keyProperty=“id” databaseId=“mysql”>
insert into employee(lastName,email,gendar)
values(#{lastName},#{email},#{gendar})
< /insert >
获取自增主键的值:
useGeneratedKeys=“true”;使用自增主键获取主键值策略
keyProperty;指定对应的主键属性,也就是mybatis获取到主键值以后,将这个值封装给javaBean的哪个属性

转载地址:http://oqqq.baihongyu.com/

你可能感兴趣的文章
Mysql 数据类型一日期
查看>>
MySQL 数据类型和属性
查看>>
mysql 敲错命令 想取消怎么办?
查看>>
Mysql 整形列的字节与存储范围
查看>>
mysql 断电数据损坏,无法启动
查看>>
MySQL 日期时间类型的选择
查看>>
Mysql 时间操作(当天,昨天,7天,30天,半年,全年,季度)
查看>>
MySQL 是如何加锁的?
查看>>
MySQL 是怎样运行的 - InnoDB数据页结构
查看>>
mysql 更新子表_mysql 在update中实现子查询的方式
查看>>
MySQL 有什么优点?
查看>>
mysql 权限整理记录
查看>>
mysql 权限登录问题:ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YES)
查看>>
MYSQL 查看最大连接数和修改最大连接数
查看>>
MySQL 查看有哪些表
查看>>
mysql 查看锁_阿里/美团/字节面试官必问的Mysql锁机制,你真的明白吗
查看>>
MySql 查询以逗号分隔的字符串的方法(正则)
查看>>
MySQL 查询优化:提速查询效率的13大秘籍(避免使用SELECT 、分页查询的优化、合理使用连接、子查询的优化)(上)
查看>>
mysql 查询,正数降序排序,负数升序排序
查看>>
MySQL 树形结构 根据指定节点 获取其下属的所有子节点(包含路径上的枝干节点和叶子节点)...
查看>>