用户登录
用户注册

分享至

mybatis注解sql语句

  • 作者: Zoan
  • 来源: 51数据库
  • 2020-09-28
您好,在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语句。



  您好,在spring中配置 自己写dao层方法的接口 public interface ordermapper extends sqlmapper{ @select("select * from tbl_order where room like #{room} and mydate like #{mydate}") public list getbyroom(orderpara op); }



  在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语句。



  and c.id=#{id}
and b.id=#{oid}
and a.pay_time BETWEEN #{startDate} AND #{endDate}
service层参数nullmybatis执行sql语句候拼接指定if标签sql语句
软件
前端设计
程序设计
Java相关