入参是QueryVo的话,拿QueryVo内部属性的属性:#{属性.属性}
当映射时数据库字段名和对象的属性名不一致时使用reslutMap映射。
If标签
Where 1=1
And 参数名=#{参数名}
And 参数名=#{参数名}
注意在使用这个标签一定要判断入参不为空且不为空串
Sqlsession用完是需要关闭的
Where标签
对于where可以使用where标签,它可以自动添加where,并对第一个and进行处理
And xx=#{}
Sql重用片段
Select
Name,age
Refid=”namespace.aaa”引用其它的mapper的片段
Foreach标签
目,和后面的#{一致}’ open=’集合前面加的sql片段’ close=’集合后面加的sql片段’ separator=’指定集合元素之间使用什么间隔’>
例:<foreach collection="ids" item="item" open="id IN (" close=")"
separator=",">
#{item}
foreach>
通常的方法是如果是一对一的查询,那么创建一个对象来接收查出的所有参数。
也可以使用配置映射文件的方法来进行映射:在resultMap中的association
一对多查询:
需要修改一的一方的pojo类,添加一个集合字段,使用这个集合装返回的多的数据。(List
并修改mapper文件的映射关系:在resultMap中使用
Collection对应java中的容器类型,是实现一对多的关键。
对象类名”>
sqlmapConfig.xml配置别名:(扫描的方式)
sqlsessionFactory应该存在Spring容器中单例存在。
在使用传统的dao开发时 应该从容器中获得sqlsession对象。
在使用动态代理开发时应该直接存容器中获得mapper的代理对象。
数据库连接池和连接池事务应该交给spring来管理。
需要jar包:spring的包+mybatis 的包+Spring-mybatis 的包+mysql驱动包+数据库连接池的包。
配置SqlMapConfig.xml,此时configuretion内只剩下配置别名的了。
SqlSessionFactoryBean在mybatis-spring.jar这个包中,
整合mybatis使用的是SqlsessionFactoyBean。
先是配置一个属性文件加载、数据库连接池、配置整合包的SqlSessionFactoryBean并将mybatis的核心配置文件加入到其中再配置数据源。
一是xml配置代理对象形式:
测试时:
Usermapper us=applicationContext.getBean(userMapper.class);
二是扫描包形式配置mapper的代理对象
每个mapper代理对象的id就是类名,首字母小写