Mybatis框架第二天
Mybatis第二天
- Mybatis的CURD-保存操作
- Mybatis的CURD-修改和删除操作
- Mybatis的CURD-查询一个和模糊查询
- Mybatis的CURD-占位符分析
- Mybatis中参数的深入
- Mybatis的返回值深入
- 解决实体类属性名和数据库列名不对应的两种方式
- Mybatis实现Dao层开发,编写Dao实现类的使用方式
- 使用Dao实现类的执行过程分析-查询方法---源码分析
- 注意注意,调试源码的技巧,当你点进去的时候。如果是个接口,很明显你要找到这个接口的实现类,这样你才能知道你调用的方法的具体代码!但是怎么找呢? 可以在你调用这个方法的地方加断点,用dubeg的方式
- properties标签的细节
- typeAlias标签和package标签
今天涉及了好多源码知识,也讲了很多源码阅读的方法,主要是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属性标签
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了