Mybatis框架第二天


今天涉及了好多源码知识,也讲了很多源码阅读的方法,主要是Dao接口实现类的源码阅读,和不用实现类,用动态代理的源码阅读,还是很有价值的

今天还介绍了几个重要的标签 首先就是resultMap标签,然后就是typeAlias标签和package标签

Mybatis的CURD-保存操作

在这里插入图片描述在这里插入图片描述
把代码中那些啰嗦的代码,用个方法封装起来
在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

Mybatis的CURD-修改和删除操作

在这里插入图片描述在这里插入图片描述

Mybatis的CURD-查询一个和模糊查询

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
因为xml里面没有提供百分号,所以测试代码参数里面要提供百分号
在这里插入图片描述在这里插入图片描述

Mybatis的CURD-占位符分析

在这里插入图片描述在这里插入图片描述
‘%${value}%’是用Statement对象的字符串拼接SQL
在这里插入图片描述
#{name} 这种是用preparedStatement 的占位符 ?

在这里插入图片描述
运行下列代码
在这里插入图片描述在这里插入图片描述

Mybatis中参数的深入

在这里插入图片描述
XML中参数是用ognl表达式,也就是xml中的#{ }中用的是ognl表达式,为什么不需要在#{ }里面填写类呢? 因为类已经在parameterType中已经写了
在这里插入图片描述在这里插入图片描述

使用实体类的包装对象作为查询条件

在这里插入图片描述在这里插入图片描述
运行下列代码
在这里插入图片描述

Mybatis的返回值深入

在这里插入图片描述在这里插入图片描述在这里插入图片描述
mysql数据库在win系统下,列名是不区分大小写的

解决实体类属性名和数据库列名不对应的两种方式

在这里插入图片描述
怎么解决呢? 两种方法
1、直接改sql语句,把数据库列名 改名 as
2、用resultMap属性标签

在这里插入图片描述
这里面的type属性,就是下面的查询返回值属性,就是resultType一样的意思,简单点说,resultMap里面的type属性就是 select标签里面的resultType属性

Mybatis实现Dao层开发,编写Dao实现类的使用方式

查询列表

修改实现类的代码,定义一个SqlSessionFactory类型的属性factory
在这里插入图片描述
通过这个factory工厂产生一个SqlSession,然后通过这个Sqlsession实现查询所有的操作
在这里插入图片描述

用dao实现类实现保存操作

在这里插入图片描述在这里插入图片描述

更新删除模糊查询等等操作,都大同小异

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

使用Dao实现类的执行过程分析-查询方法—源码分析

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

注意注意,调试源码的技巧,当你点进去的时候。如果是个接口,很明显你要找到这个接口的实现类,这样你才能知道你调用的方法的具体代码!但是怎么找呢? 可以在你调用这个方法的地方加断点,用dubeg的方式

在这里插入图片描述在这里插入图片描述在这里插入图片描述

上面是判断源码中使用的是哪个接口实现类。现在如果要判断源码的走向,那该怎么弄呢?那就是你不需要关注刚开始的代码体是怎么运行的,只需要关心源码的返回值return 后面的代码即可,因为这个返回值就是源码的走向,它肯定返回的是一个对象,当然了源码中的返回值类型好多都是泛型 T ,泛型刚开始要声明为

properties标签的细节

在这里插入图片描述
主要讲的是resource属性和url属性的区别:
resource属性就直接配置文件的位置,是必须按照类路径来写
url属性,在win系统下必须按照file协议的路径来写

Mybatis与数据库的连接信息,必须username和passworld可以用一个properties标签在项目里直接建立一个properties的文件,将连接信息用键值对的方式书写,然后在xml中用properties标签中的url属性填写这个文件的正确信息就行了

typeAlias标签和package标签

注意:这是给domain中的实体类配置别名,只要XML中用到了实体类的全限类名,你又嫌弃这个全限类名太长了,就可以配置这个,这样就只需要写最后的类名了,而且还不区分大小写

typeAlias标签里面的package标签:在主配置文件里面设置,作用是让所有映射文件中的全限类名都可以用最后的类名,这样简单些

mapper标签里面的package标签:在主配置文件里面设置,作用是那么多映射文件的位置,如果在同一个包下,因为映射文件的包路径要和domain实体类的包路径要保持一致,这样就不需要写那么多classes或者resource了,因为都在同一个包下
在这里插入图片描述
在这里插入图片描述
不仅仅xml和resultType中的全限类名可以用package来省略,连配置映射文件的位置 mappers标签里面都可以用package标签来省略 映射文件的位置也可以用package标签里面的包名,这样就不需要再具体的写映射文件的位置了,不用再写resource和classes了
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_42350785/article/details/106955846