MyBatis

什么是MyBatis

MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录.

MyBatis操作数据库

1、创建MyBatis全局配置文件
configuration 配置
• properties 属性
在这里插入图片描述
• settings 设置
在这里插入图片描述
• typeAliases 类型命名
• typeHandlers 类型处理器
• objectFactory 对象工厂
• plugins 插件
• environments 环境
• environment 环境变量
• transactionManager 事务管理器
• dataSource 数据源
• databaseIdProvider 数据库厂商标识
• mappers 映射器

2、创建SQL映射文件
映射文件指导着MyBatis如何进行数据库增删改查
Employee
EmployeeMapper.java为Dao接口文件
编写EmployeeMapper.xml实现接口Dao中的sql语句
在这里插入图片描述
增删改查:

<mapper namespace="com.atguigu.mybatis.dao.EmployeeMapper">
<select id="getEmpByLastNameLikeReturnMap" resultType="com.atguigu.mybatis.bean.Employee">
 		select * from tbl_employee where last_name like #{lastName}
</select>
<insert id="addEmp" parameterType="com.atguigu.mybatis.bean.Employee" useGenerateKeys="true" KeyProperty="id">
  insert into tbl_employee(last_name,email,gender)
  values(#{lastname},#{email},#{gender})
 </insert>
 <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>

测试:

1、根据全局配置文件,利用
SqlSessionFactoryBuilder创建SqlSessionFactory

String resource="mybatis-config.xml";
InputStream inputStream=Resources.getResourceAsStream(resource);
SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(inputStream);

2、使用SqlSessionFactory获取sqlSession对象。一个SqlSession对象代表和数据库的一次会话。

SqlSession sqlSession=factory.openSession();//需要手动提交,设为true则自动提交

用SqlSession获取映射器

EmployeeMapper mapper=sqlSession.getMapper(EmployeeMapper.class);
Employee employee=mapper.getEmpById(1);

测试增删改

 * 1、mybatis允许增删改直接定义以下类型返回值
 * 		Integer、Long、Boolean、void
 * 2、我们需要手动提交数据
 * 		sqlSessionFactory.openSession();===》手动提交
 * 		sqlSessionFactory.openSession(true);===》自动提交
		
		SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
		//1、获取到的SqlSession不会自动提交数据
		SqlSession openSession = sqlSessionFactory.openSession();
		
		try{
			EmployeeMapper mapper = openSession.getMapper(EmployeeMapper.class);
			//测试添加
			Employee employee = new Employee(null, "jerry4",null, "1");
			mapper.addEmp(employee);
			System.out.println(employee.getId());
			
			//测试修改
			//Employee employee = new Employee(1, "Tom", "jerry@atguigu.com", "0");
			//boolean updateEmp = mapper.updateEmp(employee);
			//System.out.println(updateEmp);
			//测试删除
			//mapper.deleteEmpById(2);
			//2、手动提交数据
			openSession.commit();
		}finally{
			openSession.close();
		}
		
	}

主键生成:
mysql支持自增主键,也是利用statement.getGeneratedKeys();
在这里插入图片描述useGenerateKeys=“true” KeyProperty=“id”

参数处理:
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

mybatis怎么处理参数
1、ParamNameResovler解析参数封装map
在这里插入图片描述
在这里插入图片描述
select查询
如果返回是集合,要写集合中元素的类型
resultType=“com.atguigu.mybatis.bean.employee”

返回一条记录的map,key是列名,值是对应的值在这里插入图片描述
多条记录的map,key是记录的主键,值是对应的记录封装的javabean

resultType=“com.atguigu.mybatis.bean.employee”在这里插入图片描述
resultType自动封装 将select的列名封装置bean的属性
自定义resultMap,实现高级及结果映射
在这里插入图片描述
resultmap应用:Employee中有一个属性为部门属性dept
在这里插入图片描述
association可以指定联合的javaBean对象,相当于嵌套
在这里插入图片描述
association进行分步查询:
可以使用延迟加载:属性按需加载 用的时候再加载
在这里插入图片描述
association场景二:查询部门的时候将部门对应的所有员工信息也查询出来
在这里插入图片描述
在这里插入图片描述
collection用于分段查询
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

动态sql

总结自尚硅谷MyBatis资料

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值