mybatis数据层的三种实现方式(xml、@Select注解、代码实现)

发布时间 2023-03-22 21:10:54作者: 古锁阳关

mybatis数据层的三种实现方式(xml、@Select注解、代码实现)

引言

       在平常的日常java开发过程中,功能之间的交互,不可避免的要与数据库打交道,这中间就涉及到数据层的实现问题,有xml、@Select注解、Java代码三种实现方式,具体的可以根据自己的业务难易程度来选择某个实现方式,接下来具体看一下每种实现方式的是如何实现的。

1:XML的 方式

     XML的方式也是项目开发中应用最多的一种方式,就是建一个Mapper的接口,然后对应建一个名字一样的XML文件,具体的业务Sql都在xml中去实现

 

2:@Select 注解的方式

     就是将具体的业务逻辑Sql直接写在mapper中对应的方法上

复制代码

@Select("select * from dfcv_vps_plus_crm_order_dfl_vl_gps_01" +
"where 1=1" +
"and if(#{chassisNo} is null,1=1,chassis_no like CONCAT('%',#{chassisNo},'%'))" +
"and if(#{orderNo} is null,1=1,order_no like CONCAT('%',#{orderNo},'%'))")
List<CarStatus> getList(String chassisNo,String orderNo);

复制代码

 然后在ServiceImpl业务实现层直接调用mapper中的方法即可

 

3:Java代码的方式

    就是将具体的业务Sql通过mybatis提供对应的类和方式去进行实现和组装,如and、like、or、等等,其底层原理也是通过实体类上边对应的@TableName注解,找到是需要查询那张表,然后根据业务中的拼接条件,就知道我们是需要and、like、or或是排序分组等等,就能拼接出一条完整的sql了

 上边的java代码对应的sql就是

select *  from dfcv_vps_plus_api_boxing_unlock_vehicle

where chassis_no like '%chassisNo%' or chassis_new like '%chassisNew%'and order_no like '%orderNo%'

总结:

    三种方式各有各的优势和利弊

    xml适用于需要多表联合查询的复杂业务场景,sql代码清晰明了,查询逻辑也一清二楚,但是要建xml文件,写大量的代码sql

   @Select注解的方式适合业务不是很复杂,不想写xml文件的,可以直接在mapper方法上通过注解的方式写sql代码,但是不适合复杂业务,通过编码起来不方便,不直观

   Java代码的方式 适合于单表的简单业务,不用写xml了,但是不适合复杂业务,sql的具体实现也不直观,需要执行代码了才知道估计拼接的sql