mybatis plus该不该用 SpringData JPA也能写sql,为什么还要用mybatis?
SpringData JPA也能写sql,为什么还要用mybatis?
在头条上问这个问题真是太醉了。。顺便说一句,胡说八道太多了。
国内设计理念为表驱动。总之,逻辑是由数据表决定的,实现是由模型来完成的。事实上,这与面向对象的思想截然相反。大多数工程师手中所谓的mybatis的灵活性是,他们不需要考虑如何设计模型。”不管怎样,我可以用原生SQL来解决这个问题。模型设计太差了,只能靠SQL来修正。JPA是完全对象驱动的思想。早期设计的缺陷会制约后续的开发,不同的数据库可以用不同的方式实现(事实上,即使redis也是一样的)。回答一些常见的问题。
1. JPA表的连接行为具有不确定性和难以控制性。
您确定使用了spring数据JPA吗?不知道有实体图吗?当一个傻瓜达到这个水平时,他能做什么。
2. JPA子查询不容易实现。
我想你没用过,是吗?spring数据JPA的子查询不仅可以单独定义视图,还可以进行子查询,甚至可以直接使用jpql。
3. JPA不容易优化。
我真的不相信99%的优化能超过spring data JPA的优化。特别是,普通程序员能否停止谈论优化?他们甚至搞不懂MySQL的锁。表设计就像一堆废话,他们仍然每天使用原生SQL。你觉得他们很棒吗?JPA可以将表属性反映到对象。当然,运行时优化是有基础的。ORM的发展空间太大了。任何有点技术知识的人都知道ORM将拥有越来越多的优势。有一点经验的程序员都知道,在谈论其他人之前,是时候先谈论良好的维护了。解决性能问题的方法太多了。
最后,难道你不知道ORM cqrs现在是提倡的吗?请问,有没有什么复杂的问题没有原生SQL的介入是无法解决的。
使用mybatisplus,如何定义service层和dao层?
根据mybatis plus的设计模式,那些接受conditional or和wrapper参数的方法就是conditional or wrapper object的参数
!在您的示例中:用户映射器.selectOne(new QueryWrapper<User>().eq(”user)此映射器方法属于Dao层。它接受从服务层传递的对象querywrapper。你认为你有一种心态用户映射器.selectOne(new QueryWrapper<User>().eq(“userAge”,Age)作为一个整体是一个Dao方法,不是
用户映射器.selectOne(),您只需要自定义所创建的包装器对象。
记住:方法是一个参数,不是别的。
mybatis plus该不该用?
个人建议:mybatis plus为mybatis做了很多改进。简而言之,hibernate的优点,mybatis=mybatis plus的优点,增强了mybatis改变数据库时SQL的兼容性(hibernate的优点和mybatis的缺点),封装了一些简单的SQL(hibernate的优点和mybatis的缺点),从而在不降低性能的前提下提高mybatis的开发效率。Mybatis plus与Mybatis兼容,但发电机除外。新项目可以根据项目情况使用,旧项目不需要抛掷。运行项目通常首先是稳定的。如果你完全负责一个新项目的后端,你可以使用你想要的任何东西。如果你是一个团队,你必须讨论它。作为一个开发人员,这不是胡说八道。你必须两者都知道。该项目可优先考虑plus。
为什么阿里巴巴的持久层采用iBatis框架,而不使用hibernate框架呢?感觉hibernate更厉害的样子?
Ibatis在编写SQL方面更加灵活。事实上,大多数项目对于单表操作来说都很简单,而最复杂的是查询。这说明阿里的问题水平相对较高,而不是很多人停留的积垢水平。我觉得冬眠就够了
!当然,阿里选择ibatis或mybatis也是有历史局限性的,因为sqltoy ORM不是在那个时候出生的。否则,最好的选择是sqltoy
!这个时代应该融合hibernate和mybatis的优点,加强查询才是正道
!为什么mybatis(plus)仍然不好(特别是对于查询,crud有一个底部,但是查询需求没有上限!下面展示的是一个比较简单的点查询,而实际的项目SQL可能比较复杂,如何编写mybatis!写作后如何保持?我怎么看呢这里有几个小例子来说明区别!
mybatis plus该不该用 mybatisplus多条件查询 不要使用mybatisplus
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。