mybatis 怎么让dao直接走xml中的sql而不走实现类
1个回答
展开全部
在spring中配置
<,-- 通过扫描的模式,扫描目录在com.mrorder.dao目录下,所有的mapper都继承SqlMapper接口的接口 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.mrorder.dao"/>
<property name="markerInterface" value="com.mrorder.dao.SqlMapper"/>
</bean>
自己写dao层方法的接口
public interface OrderMapper extends SqlMapper{
@Select("select * from tbl_order where room like #{room} and mydate like #{mydate}")
public List<Order> getbyroom(OrderPara op);
}
这样整个语句是写死的,必须有2个参数,在这种模式下,如何能实现根据room和mydate是否为空来动态的拼写sql语句
比如当mydate=""
Select("select * from tbl_order where room like #{room} ")
public List<Order> getbyroom(OrderPara op);
如果用xml来配置语句的话,可以用<when test="title ,= null">
and mydate= #{mydate}
</when>
如果是用@Select 这种 改如何做呢?
利用自定义注解,通过反射,拼出SQL语句。
<,-- 通过扫描的模式,扫描目录在com.mrorder.dao目录下,所有的mapper都继承SqlMapper接口的接口 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.mrorder.dao"/>
<property name="markerInterface" value="com.mrorder.dao.SqlMapper"/>
</bean>
自己写dao层方法的接口
public interface OrderMapper extends SqlMapper{
@Select("select * from tbl_order where room like #{room} and mydate like #{mydate}")
public List<Order> getbyroom(OrderPara op);
}
这样整个语句是写死的,必须有2个参数,在这种模式下,如何能实现根据room和mydate是否为空来动态的拼写sql语句
比如当mydate=""
Select("select * from tbl_order where room like #{room} ")
public List<Order> getbyroom(OrderPara op);
如果用xml来配置语句的话,可以用<when test="title ,= null">
and mydate= #{mydate}
</when>
如果是用@Select 这种 改如何做呢?
利用自定义注解,通过反射,拼出SQL语句。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询