学习mybatis的第二天


Mybatis基于代理Dao的CRUD操作

经过了前一天的mybatis的学习,掌握了mybatis的环境搭建以及知道了mybatis 的快速入门,其实mybatis在使用代理dao的方式实现增删改查时只做了两件事:

1、创建代理对象

2、在代理对象中调用selectList方法

基于代理Dao的CRUD操作的配置文件实现(IUserDao.xml):

1


2

其中id为dao接口中的方法名,parameterType为参数的类型,resultType为dao接口中的返回值类型。正是通过namespace属性值和id中的属性值以及parameterType和resultType的属性值,于是才可以定位到所要调用的方法,所要执行的SQL语句以及想要返回的类型。

Mybatis中参数的深入-使用实体类的包装对象作为查询条件:

需求:根据用户名查询用户信息,查询条件放到QueryVo的user属性中

首先关于OGNL表达式:

-----------------------------------------

OGNL表达式:

Object Graphic Navigation Language

对象       图           导航            语言

它是通过对象的取值方法来获取数据。在写法上把get给省略了。

比如:我们获取用户的名称

类中的写法:user.getUsername();

OGNL表达式写法:user.username

mybatis中为什么能直接写username,而不用user.呢:

因为在parameterType中已经提供了属性所属的类,所以此时不需要写对象名

-----------------------------------------

当使用QueryVo实体类将User对象进行包装之后,便不能#{username}直接使用属性名称了,而需要指定为哪一个包装对象的哪一个属性名,即


3


4

解决实体类属性与数据库字段名不对应的两种方式:

1、起别名的方式,这种方式执行的效率比较高,在写SQL语句时,用as将实体类的属性名使之与数据库字段名对应,但是此种方式在写多条SQL语句时显得麻烦,用起来较为简单。

2、使用resultMap标签,配置实体类属性与数据库字段名的对应关系,开发效率比较高,但是要多解析一段xml代码,执行效率比较低。


5
6

SqlMapConfig.xml 文件中:

properties标签的使用及细节:

properties标签用于导入外部的配置文件,当为resource属性值时只需要写其resources报下的文件名称即可,当为url属性值即统一资源定位符,需要写协议  主机  端口号  URI(统一资源标志符),具体实现如下:


7


8

其中value属性值为properties文件中的key值,${}包裹起来即可。


9


typeAliases标签和package标签的使用及细节:

10

此处的参数类型INT可以随便填写,int、INT、java.lang.Interger、甚至iNt都可以就是因为mybatis框架中有typeAliases标签,

typeAlias用于配置别名,type属性为封装对象的全限定类名,alias为别名,当取了别名便不区分大小写

11

package属性用于指定要配置别名的包,当指定之后,该包下的所有类都会注册别名,并且类名就是别名,不再区分大小写,范围更大


12

并且在配置映射文件的位置,当使用package标签时,package标签用于指定dao接口所在的包,当指定之后就不需要再写mapper标签以及其属性了


13




你可能感兴趣的:(学习mybatis的第二天)