18.5.6,mybatis总结2

1.mybatis使用ognl表达式解析对象的字段
2.Sql的入参可以是对象QueryVo

入参是QueryVo的话,拿QueryVo内部属性的属性:#{属性.属性}

3.resultTyperesultMap

当映射时数据库字段名和对象的属性名不一致时使用reslutMap映射。

pojo”  id=”与下方引用一致”>

id” column=”id”/>

4.动态sql拼接

If标签

Where 1=1

=null and 参数名!=‘’”>

And 参数名=#{参数名}

=null and 参数名!=‘’”>

And 参数名=#{参数名}

注意在使用这个标签一定要判断入参不为空且不为空串

Sqlsession用完是需要关闭的

Where标签

对于where可以使用where标签,它可以自动添加where,并对第一个and进行处理

And xx=#{}

Sql重用片段

Select  from....

Name,age

Refid=”namespace.aaa”引用其它的mapper的片段

Foreach标签

要遍历的集合,直接写queryvo的属性名:list   item=‘遍历的项

目,和后面的#{一致}  open=集合前面加的sql片段  close=集合后面加的sql片段  separator=指定集合元素之间使用什么间隔>

例:<foreach collection="ids" item="item" open="id IN (" close=")"

separator=",">

#{item}

foreach>

5.关联查询

通常的方法是如果是一对一的查询,那么创建一个对象来接收查出的所有参数。

也可以使用配置映射文件的方法来进行映射:在resultMap中的association

一对多查询:

需要修改一的一方的pojo类,添加一个集合字段,使用这个集合装返回的多的数据。(List orders).

并修改mapper文件的映射关系:在resultMap中使用节点进行配置

Collection对应java中的容器类型,是实现一对多的关键。

中对应的字段名” javaType=”对应的集合类型:list” ofType=”集合里

对象类名”>

sqlmapConfig.xml配置别名:(扫描的方式)

6.mybatis整合spring

sqlsessionFactory应该存在Spring容器中单例存在。

在使用传统的dao开发时 应该从容器中获得sqlsession对象。

在使用动态代理开发时应该直接存容器中获得mapper的代理对象。

数据库连接池和连接池事务应该交给spring来管理。

需要jar包:spring的包+mybatis 的包+Spring-mybatis 的包+mysql驱动包+数据库连接池的包。

配置SqlMapConfig.xml,此时configuretion内只剩下配置别名的了。

SqlSessionFactoryBeanmybatis-spring.jar这个包中,

整合mybatis使用的是SqlsessionFactoyBean

先是配置一个属性文件加载、数据库连接池、配置整合包的SqlSessionFactoryBean并将mybatis的核心配置文件加入到其中再配置数据源。

org.mybatis.spring.SqlSessionFactoryBean”>

configLocation’ value=”classpath:SqlMapConfig.xml”>

7.整合之后使用mapper的动态代理开发:

一是xml配置代理对象形式:

org.mybatis.spring.mapper.MapperFactoryBean”>

接口名” value=”全路径”/>

测试时:

Usermapper  us=applicationContext.getBean(userMapper.class);

二是扫描包形式配置mapper的代理对象

每个mapper代理对象的id就是类名,首字母小写

你可能感兴趣的:(mybatis总结,mybatis)