mybatis配置文件深入

01-mybatis的dao层实现-传统实现方式
dao层的实现类写了哪些代码?

02-mybatis的dao层实现-接口代理方式实现规范
mapper.xml中namespace的值有什么要求?
必须是接口的全路径名称;
mapper.xml中 select标签的id值有什么要求?
必须是对应的接口中的方法名

mapper.xml中 select标签的parameterType值有什么要求?
	必须是对应的接口中方法的参数类型
	
mapper.xml中 select标签的resultType值有什么要求?
	必须是对应的接口中方法的返回值类型

03-mybatis的dao层实现-接口代理方式代码实现
如何获取到dao接口的动态代理对象?

04-mybatis的dao层实现-知识小结
以前:
1.定义接口;
2.编写实现类,重写方法;

现在:
	1.定义接口;
	2.编写映射配置文件;
		映射配置文件中的内容需要和对应的接口一一对应;

在核心配置文件中引入映射配置文件:
	<mapper resource="com/itheima/mapper/UserMapper.xml"></mapper>
在核心配置文件中引入dao层的接口:
	 <mapper class="com.itheima.mapper.UserMapper"/>
	
	当mybatis找到对应的接口后,会自动去该接口所在的目录下,查找跟接口名一模一样的映射配置文件;
	
	注意:
		映射配置文件的名字需要和对应的接口的名字一样;
		映射配置文件的路径需要和对应的接口的路径一样;
		
		
<package name="com.itheima.mapper"/>
	mybatis扫描指定的包,然后得到该包下所有的接口,并且会自动去该接口所在的目录下,查找跟接口名一模一样的映射配置文件;

05-mybatis映射文件深入-动态sql概述和环境搭建
为什么会有动态sql的出现?
客户的需求不确定
06-mybatis映射文件深入-动态sql-if
如何判断User参数的某个属性条件是否存在?
标签+标签
标签的作用
替换where关键字,智能的进行sql拼接

***************************
	1.如果一个条件都没有,则最终生成的sql语句中没有where关键字
	2.如果有条件,则会把第一个条件的and去掉;
select * from user and id = #{id} and username = #{username} and password = #{password} 07-mybatis映射文件深入-动态sql-foreach(了解) collection属性什么意思? 当前遍历的是那种类型的容器 item属性什么意思? 从容器中遍历出的每一个元素的临时变量名; open属性什么意思? 动态sql的内容是以什么内容开始; close属性什么意思? 动态sql的内容是以什么内容结束 seprator属性什么意思? 分隔符

08-mybatis映射文件深入-动态sql-sql片段的抽取
如何定义公用的sql语句?
select * from user
如何引用公用的sql语句?

09-mybatis映射文件深入-动态sql-知识小结

:插入
:修改
:删除
:where条件
:if判断
:循环
:sql片段抽取

10-mybatis核心配置文件深入-typeHandler概述
类型转换器有什么作用?
把java类型和数据库的类型进行相互转换

mybatis已经提供了很多常用的类型转换器;但是,有可能不能满足我们全部业务需求;

11-mybatis核心配置文件深入-typeHandler测试环境搭建
为什么往数据库添加User对象时会失败?
java对象的数据名和数据库中的属性字段没有一 一对应

12-mybatis核心配置文件深入-自定义DateTypeHandler实现
1.自定义类继承BaseTypeHandler类,重写方法;
2.在配置文件中配置;
public class DateAndLongHandler extends BaseTypeHandler {

// 把java类型的数据转换为数据库需要的类型数据
@Override
public void setNonNullParameter(PreparedStatement ps, int i, Date parameter, JdbcType jdbcType) throws SQLException {
    // 将时间转为毫秒值
    long time = parameter.getTime();
    // 设置指定位置的值为指定的毫秒值, 实现date日期与long类型的毫秒值的转换
    ps.setLong(i,time);
}

// 把数据库中的long类型数据转为java类型的date类型  根据字段的名称
@Override
public Date getNullableResult(ResultSet rs, String columnName) throws SQLException {
    Date date = new Date(rs.getLong(columnName));
    return date;
}

// 根据字段的顺序
@Override
public Date getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
    Date date = new Date(rs.getLong(columnIndex));
    return date;
}

// 根据
@Override
public Date getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
    java.sql.Date date = cs.getDate(columnIndex);
    return date;
}

}

<!--配置自定义的类型转换器-->
13-mybatis核心配置文件深入-plugins标签介绍和查询全部代码编写 为什么要是用分页插件? 方便

14-mybatis核心配置文件深入-plugins分页助手的代码实现
如何配置pagehelper插件?


如何设置分页限定条件?
// 设置分页的条件 在执行查询之前  设置当前页,以及每页的个数

PageHelper.startPage(1,3);

*****************
	1.导入分页插件坐标:
		pagehelper
	2.在核心配置文件中:
		<plugins>
			<plugin interceptor="com.github.pagehelper.PageHelper">
	<property name="dialect" value="你当前操作的是什么数据库"></property>
			</plugin>
		</plugins>
	3.在查询代码执行之前:设置分页限定条件
		PageHelper.startPage(当前页码,每页条数);

15-mybatis核心配置文件深入-plugins分页助手的分页相关数据获取
当分页查询完毕后,如何获取分页查询的其他结果,如总条数等信息;

根据查询出来的集合对象构建一个PageInfo即可:
	 PageInfo<User> pageInfo = new PageInfo<User>(查询出来的集合);

16-mybatis核心配置文件深入-知识小结
MyBatis核心配置文件常用标签:
1、properties标签:该标签可以加载外部的properties文件
2、typeAliases标签:设置类型别名
3、environments标签:数据源环境配置标签
4、typeHandlers标签:配置自定义类型处理器
5、plugins标签:配置MyBatis的插件

public class UserServiceDemo {
public static void main(String[] args) throws IOException {
// 加载资源
InputStream is = Resources.getResourceAsStream(“sqlMapConfig.xml”);
// 获取会话工厂
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
// 获取会话对象
SqlSession sqlSession = sqlSessionFactory.openSession(true);
// 执行操作 获取一个指定接口的动态代理对象
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
// 执行方法
List list = userMapper.findAll();
System.out.println(list);
}
}

mybatis类型转换器
在这里插入图片描述
mybatis执行流程

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值