mybatis 版的 spring-data-jpa mybatis-jpa

Apache
Java 查看源码»
跨平台
2016-11-18
大道至简氵

mybatis-jpa

当时看到spring-data-jpa用方法名来定义sql查询感觉非常好,后来用了一段时间,因为spring-data-jpa是基于hibernate,而我的hibernate又是非常不好,于是在网上查询了相关资料,主要借鉴了mybatis通用mapper的实现方式,写了一版mybatis版的spring-data-jpa:

  • 1.x版本预期实现目标:(如没有重大逻辑性错误,1.0正式版本将在2016年11月30日前发布。)  1.0版本主要实现目标为对mysql、sqlserver、oracle等三大数据库的单表操作,并在后续1.x版本中增加其它的数据库单表操作实现

  • 2.x版本展望目标:实现多表的级联查询

如何集成mybatis-jpa:

只需要将org.mybatis.spring.mapper.MapperFactoryBean這个类替换成mybatis-jpa的com.woodws.mybatis.jpa.MyMapperFactoryBean。因为使用了jpa规范所以需要导入javax.persistence相关jar包

```
    <!-- MyBatis配置 -->
    <bean id="sqlSessionFactory" class="com.woodws.mybatis.jpa.JpaMapperFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <property name="typeAliasesPackage" value="com.woodws"/>
        <property name="mapperLocations" value="${sqlSessionFactory.mapperLocations}" />
    </bean>
```

使用示例

只需要在mapper接口方法中按着方法命名规范命名mybatis-jpa将自动生成相关的sql,mapper.xml中的配置为主,只要当在mapper.xml中没有的sqlId才会自动生成,命名规范可以查询com.woodws.mybatis.jpa.Definition

```
List<User> findOrderByAge();
    List<User> findOrderByAgeDesc();
    List<User> findByNameOrderByAge(String name);
    List<User> findByNameOrAgeGreaterOrderByAge(@Param("name") String name,
                                                @Param("age") Integer age);
    String findNameById(Integer id);
    int updateName(User user);
    List<User> findByNameLike(String name);
```

自定义扩展

当命名规范于自己的习惯不一致的时候可以增加相关的规范,或者想添加命名解析sql查询,如下就是增加FUNCTION方法命名查询(FUNCTION、PROCEDURE在1.0版本中将自带支持)

```
Definition.expand("func","FUNCTION", Function.class);
```

同时希望各位网友能提出宝贵的意见和改进代码,让mybatis-jpa更加完善。

的码云指数为
超过 的项目
加载中

评论(4)

juekzhan
juekzhan
干啥要脱了裤子放屁呢,mybatis 本来就是让入门更简单写,sql 看起来更易懂些 ,你加个JPA 那还不如直接用hibernate 呢 ,效率高高的,而且对数据库的插拔方便
宇宙蒙面侠X
宇宙蒙面侠X
这方面一直比较纠结,懒得写SQL但是参数多了sonar又会报函数名太长 #mybatis-jpa#
大道至简氵 软件作者
自顶一下,非常好用的mybatis扩展 #mybatis-jpa#

mybatis-jpa 正式版发布了

mybatis-jpa 正式版发布了,更新如下: 使用 gradle 重新结构,增加 FUNCTION 和 PROCEDURE 命名查询。 由于最近比较忙,没有时间研究将 jar 发布到公网仓库上,后续发布的 https://git.osch...

2016/11/30 20:04

没有更多内容

加载失败,请刷新页面

没有更多内容

暂无问答

技术专题讨论:如何对 JPA 或者 MyBatis 进行技术选型

在我们平时的项目中,大家都知道可以使用 JPA 或者 Mybatis 作为 ORM 层。对 JPA 和 Mybatis 如何进行技术选型? 下面看看大精华总结如下: 最佳回答 首先表达个人观点,JPA必然是首选的。 ...

2018/06/27 15:13
597
0
spring+springMVC+mybatis框架搭建(上篇)

Spring的配置文件src下面创建:applicationContext.xml 将代码粘贴进去 <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instanc...

03/07 21:58
2
1
SpringBoot+Jpa+MySql学习

上一篇介绍了springboot简单整合mybatis的教程。这一篇是介绍springboot简单整合jpa的教程。 由于jpa的功能强大,后续会继续写关于jpa的介绍已经使用,本文只是简单介绍一下它与springboot的...

03/11 13:58
4
0
关于SSM中配置合买网站出租文件XML的理解

1、有几个配置合买网站出租haozbbs.com Q1446595067文件? 基础的web.xml spring-mybatis.xml:spring本身的配置,以及spring的数据库配置(即与mybatis的联合配置) spring-mvc.xml:sprin...

2018/07/13 14:42
1
0
Spring整合Web,Mybatis,Hibernate

一.Spring整合web 1.添加jar IOC+AOP spring-web.jar 2.web.xml配置文件 <!--配置访问默认主页 --> <welcome-file-list> <welcome-file>/public/index.html</welcome-file> </welcome-file-l...

2017/10/18 17:32
10
0
(四)SpringBoot——JPA

一、JPA JPA(Java Persistence API),通过JDK5注解或者xml描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。 例如,开源的Hibernate就是遵循JPA规范的,我们经常用到的M...

2018/04/23 12:24
56
0
JSP/Java毕业设计免费领

作为一个IT民工,曾经大大小小的写过各种项目,给学生做过无数个项目,现在拿出200来套毕业设计项目做分享,大学生可以作为参考,同时职场小白也可以练练手。项目列表如下: 【018-jsp】M-J...

2018/05/08 11:49
853
1
springMVC完整开发步骤(SSM)

完整开发步骤 导包 spring的jar包 mybatis的jar包 mybatis-Spring的jar包 aop的依赖jar包 oracle等数据库连接的jar包 DataSource的jar包 日志包 导入配置文件 web.xml mvc.xml applicationC...

2018/12/19 19:30
14
0
Tomcat 容器与servlet的交互原理

Tomcat 是Web应用服务器,是一个Servlet/JSP容器. Tomcat 作为Servlet容器,负责处理客户请求,把请求传送给Servlet,并将Servlet的响应传送回给客户.而Servlet是一种运行在支持Java语言的服务器...

02/25 02:43
25
0
JSP/Servlet 工作原理

Servlet Servlet 没有 main 方法,不能够独立的运行,它的运行需要容器的支持,Tomcat 是最常用的 JSP/Servlet 容器。 Servlet 运行在 Servlet 容器中,并由容器管理从创建到销毁的整个过程。...

2015/06/13 10:44
15
0

没有更多内容

加载失败,请刷新页面

返回顶部
顶部