Mybatis常遇问题
配置文件命名及存放位置
注意事项如图:dao接口与其对应的xml映射配置文件其路径必须一致,否则进行包扫描的时候,Mybatis是无法找到接口对应的配置文件,其名字也必须一致
动态sql:
if的使用方法
如图所示
如果需要判断基本数据类型,直接使用其变量名,如果是对象的成员,则通过 对象.成员 来引入,不需要加#{}
where的使用方法
可以自动处理第一个 and ,
where标签用在自己写sql语句的时候 where关键字不好处理的情况,代替where ‘1’ = ‘1’
如图所示
foreach用法
foreach标签用于遍历集合,它的属性:
- collection:代表要遍历的集合元素,注意编写时不要写#{}
- open:代表语句的开始部分(一直到动态的值之前)
- close:代表语句结束部分
- item:代表遍历集合的每个元素,生成的变量名(随便取)
- sperator:代表分隔符 (动态值之间的分割)
resultMap配置:
Spring配置文件常用配置及写法:
整合mybatis配置文件
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!--指定接口所在的包-->
<property name="basePackage" value="com.huangjiaming.health.dao" />
</bean>
<!--spring和mybatis整合的工厂bean-->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<!--别名配置,扫描pojo对象实体,则可以直接使用对象的别名,而不用全限定名-->
<!-- <property name="configLocation" value="classpath:sqlMapConfig.xml" />-->
<property name="typeAliasesPackage" value="com.huangjiaming.health.pojo"/>
<!-- 配置mybatis分页插件-->
<property name="plugins">
<array>
<bean class="com.github.pagehelper.PageHelper">
<property name="properties">
<!--使用下面的方式配置参数,一行配置一个 -->
<props>
<!--选择合适的分页方式为mysql-->
<prop key="dialect">mysql</prop>
</props>
</property>
</bean>
</array>
</property>
</bean>
导入加载其他的配置文件
springmvc的核心控制器配置的是/,表示所有请求都会执行springmvc的控制器,静态资源也会执行。这样不合理,需要放行静态资源
mvc:default-servlet-handler</mvc:default-servlet-handler>
配置事务管理
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<!--
开启事务控制的注解支持
注意:此处必须加入proxy-target-class="true",
需要进行事务控制,会由Spring框架产生代理对象,
Dubbo需要将Service发布为服务,要求必须使用cglib创建代理对象。
-->
<tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true"/>