Mybatis中实现实体类对数据库读写的3种方式应该如何选择?

  Mybatis是一个十分灵活的持久层框架,它提供了使用原生sql语句和封装好的java类对数据库进行读写的方式。面对这3中方式又该如何选择?

  第一种方法,使用接口继承BaseMapper

1.这是要用到的实体类

@Data
public class Orders {}//实体类字段略

2.定义继承BaseMapper的接口

@Mapper
public interface OrdersMapper extends BaseMapper<Orders>{}//继承并定义mapper

3.使用mapper和wrapper进行查询(示例)

​
@Service
@Transactional
public class OrdersSer
{
    @Autowired
    OrdersMapper ordersMapper;//注入mapper
    public Orders GetOrders(Long time)
    {
        QueryWrapper<Orders> ordersQueryWrapper=new QueryWrapper<Orders>()   //使用wrapper进行条件设置
                .eq("time",time);   //eq即equal,相当于sql语句中的=
        Orders orders=ordersMapper.selectOne(ordersQueryWrapper);//wrapper和mapper配合使用进行查询
        return orders;
    }
}

​

  这种方法的好处是避免了编写sql语句,自动化程度较高。缺点是在调用sql内置函数时不太方便,如sum()等。所以这种方法适用于比较简单的sql业务。

  第二种方法,使用@Select等注解

@Mapper
public interface SQLMapper 
{
    @Insert("Insert into item_type values(#{type})")
    void InsertTypes(@Param("type") String type);
}

  这种方法要求自行编写sql语句,灵活性较第一种方法更高。也可以直接调用sql内置的函数,适合在第一种方法不太方便的情况下使用。缺点是在面对较长的sql语句时可读性会降低。

  第三种方法,使用xml文件编写sql语句

1.在application.yml中配置xml文件的扫描路径

mybatis-plus:
  mapper-locations: classpath:Mapper/*.xml

2.在mapper接口中声明函数

@Mapper
public interface ItemMapper
{
    Item GetItem();
}

3.在xml文件中编辑sql语句,并指定要代理的接口中的函数。同时,配置命名空间和返回类型等参数。其中id对应被代理的函数名。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="Cat.MVC.DAO.Entity.Def.ItemDetailMapper">
    <select id="GetItem" resultType="Cat.MVC.DAO.Entity.View.Item">
        select * from Item
    </select>
</mapper>

  这种方法的好处是方便编写复杂的sql语句,也能在sql语句中写注释,提高代码可读性。这种方法适用于需要大量的参数及复杂的语句和返回结果的情况。

  总之,在实际开发中我们还要根据性能和需求来灵活地选择具体的实现方法。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值