博客
关于我
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 FEDERATED 提示
查看>>
mysql generic安装_MySQL 5.6 Generic Binary安装与配置_MySQL
查看>>
Mysql group by
查看>>
MySQL I 有福啦,窗口函数大大提高了取数的效率!
查看>>
mysql id自动增长 初始值 Mysql重置auto_increment初始值
查看>>
MySQL in 太多过慢的 3 种解决方案
查看>>
Mysql Innodb 锁机制
查看>>
MySQL InnoDB中意向锁的作用及原理探
查看>>
MySQL InnoDB事务隔离级别与锁机制深入解析
查看>>
Mysql InnoDB存储引擎 —— 数据页
查看>>
Mysql InnoDB存储引擎中的checkpoint技术
查看>>
Mysql InnoDB存储引擎中缓冲池Buffer Pool、Redo Log、Bin Log、Undo Log、Channge Buffer
查看>>
MySQL InnoDB引擎的锁机制详解
查看>>
Mysql INNODB引擎行锁的3种算法 Record Lock Next-Key Lock Grap Lock
查看>>
mysql InnoDB数据存储引擎 的B+树索引原理
查看>>
mysql innodb通过使用mvcc来实现可重复读
查看>>
mysql interval显示条件值_MySQL INTERVAL关键字可以使用哪些不同的单位值?
查看>>
Mysql join原理
查看>>
mysql order by多个字段排序
查看>>
MySQL Order By实现原理分析和Filesort优化
查看>>