BuBu笔记——Mybatis深入(秃头BUBu的超详细备注,一定要看哦)

前言

经过上一篇笔记是不是对Mybatis有了大致的了解,本文继续介绍Mybatis更加深入的内容。

一、传统实现模式

  1. 编写UserMapper接口
  2. 实现该接口
  3. service层

二、代理开发方式

Mapper接口开发方法只需要编写Mapper接口,MyBatis框架根据接口定义创建接口的动态代理对象,代理对象的方法体同Dao接口实现类方法

1、Mapper接口开发规范:

  1. Mapper.xml文件中的namespace与mapper接口的全限定名相同
  2. Mapper接口方法名和Mapper.xml中定义的每个statement的id相同
  3. Mapper接口方法的输入参数类型和mapper.xml中定义的每个sql的parameterType的类型相同
  4. Mapper接口方法的输出参数类型和mapper.xml中定义的每个sql的resultType的类型相同

2、编写Mapper接口

测试代理方式

InputStream resourceAsStream = Resources.getResourceAsStream("SqlMapConfig.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
//获得MyBatis框架生成的UserMapper接口的实现类
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
User user = userMapper.findById(1);
System.out.println(user);
sqlSession.close();

三、MyBatis映射文件深入

动态sql语句

1、where 标签

作用等同于sql语句中"where=",格式为:

<where>
	 条件
</where>

2、if 标签

主要是对字段进行判断,置于where标签内作为条件进行数据筛选,格式为:

<!--判断id是否有有效的值,若id值有效则将语句中的条件进行拼接-->
<if test="id != null and id != 0">
	and id=#{id}
</if>

3、foreach标签

循环执行sql的拼接操作例如:select * from where id in (1,2,5)

<foreach collection="array / list" open="id in(" close=")" item="id" separator=",">
	#{id}0
</foreach>
//collection:要循环执行的数组、列表
//item:判断项

4、sql标签

将重复sql片段抽取后进行引用,从而达到sql复用

//将select * from user提取出来
<sql id="selectUser">select * from user</sql>
//使用<include>标签进行引用
<include refid="selectUser"></include>

四、MyBatis核心配置文件深入

1、typeHandlers标签

用于自定义类型转换器

类型转换器:MyBatis在预处理语句中设置参数或从结果集中取值时,都会用类型处理器将获取的值以合适的方式转换成Java类型。

开发步骤:

  1. 定义转换类继承类BaseTypeHandler
  2. 覆盖4个未实现的方法,其中setNonNullParameter为java程序设置数据到数据库的回调方法,getNullableResult为查询时mysql的字符串类型转换成java的Type类型的方法
  3. 在MyBatis核心配置文件中进行注册
  4. 测试转换是否正确

2、plugins标签

MyBatis可以使用的三方插件来对功能进行扩展,分页助手PageHelper是将分页的复杂操作进行封装,使用简单的方式即可获得分页的相关数据

开发步骤:

1、导入通用PageHelper的坐标

<dependency>
	<groupId>com.github.pagehelper</groupId>
	<artifactid>pagehelper</artifactId>
	<version>3.7.5</version>
</dependency>
<dependency>
	<groupId>com.github.jsqlparser</groupId>
	<artifactid>jsqlparser</artifactId>
	<version>0.9.1</version>
</dependency>

2、在mybatis核心配置文件中配置PageHelper插件

<plugins>
	<plugin interceptor="com.github.pagehelper.PageHelper">
		<property name="dialect" value="mysql">
	</plugin>
</plugins>

3、测试分页数据获取

PageHelper.startPage(当前页,每页显示的条数);

获得与分页相关的参数:

PageInfo<User> pageInfo= new PageInfo<User>(userList);
获取当前页:pageInfo.getPageNum();
获取每页显示的条数:pageInfo.getPageSize();
获取总条数:pageInfo.getTotal();
获取总页数:pageInfo.getPages();
获取上一页:pageInfo.getPrePage();
获取下一页:pageInfo.getNextPage();
获取是否是第一页:pageInfo.isIsFirstPage();
获取是否是最后一页:pageInfo.isIsLastPage();

总结

以上就是今天的内容,多看多用才能熟记于心哦。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值