Giter Site home page Giter Site logo

bes2008 / sqlhelper Goto Github PK

View Code? Open in Web Editor NEW
307.0 16.0 64.0 3.9 MB

SQL Tools ( Dialect, Pagination, DDL dump, UrlParser, SqlStatementParser, WallFilter, BatchExecutor for Test) based Java. it is easy to integration into any ORM frameworks

Home Page: https://github.com/fangjinuo/sqlhelper

License: Apache License 2.0

Java 98.87% Batchfile 0.26% Shell 0.24% CSS 0.44% HTML 0.20%
mybatis dialect pagination spring-boot jfinal ebean sql jdbc orm mango

sqlhelper's People

Contributors

bes2008 avatar chinalsl avatar dependabot-preview[bot] avatar dependabot[bot] avatar ijxinyu avatar noear avatar smallgray avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

sqlhelper's Issues

order by后拼接动态参数问题

order by后拼接动态参数报如下错误:
Caused by: org.apache.ibatis.type.TypeException: Error setting non null for parameter #3 with JdbcType null . Try setting a different JdbcType for this parameter or a different configuration property. Cause: java.sql.SQLException: Parameter index out of range (3 > number of parameters, which is 2).
at org.apache.ibatis.type.BaseTypeHandler.setParameter(BaseTypeHandler.java:71) ~[mybatis-3.5.3.jar:3.5.3]
at com.jn.sqlhelper.mybatis.plugins.pagination.CustomMybatisParameterHandler.setOriginalParameters(CustomMybatisParameterHandler.java:115) ~[sqlhelper-mybatis-2.3.1.jar:na]
... 100 common frames omitted
Caused by: java.sql.SQLException: Parameter index out of range (3 > number of parameters, which is 2).
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:965) ~[mysql-connector-java-5.1.48.jar:5.1.48]
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:898) ~[mysql-connector-java-5.1.48.jar:5.1.48]
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:887) ~[mysql-connector-java-5.1.48.jar:5.1.48]
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:861) ~[mysql-connector-java-5.1.48.jar:5.1.48]

pagination fail for GBase

Describe the bug
pagination fail for GBase

Expected behavior
paginaion success

Desktop (please complete the following information):

  • OS: all
  • Browser: all
  • Version: all

Additional context
all

sqlhelper-examples执行接口/users/_useSqlhelper_over_pageHelper报错

源码sqlhelper-examples下载启动后,执行接口/users/_useSqlhelper_over_pageHelper报错,报错信息如下:

2019-09-23 16:58:01.498 ERROR 94275 --- [nio-8088-exec-7] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.NullPointerException] with root cause

java.lang.NullPointerException: null
	at com.jn.sqlhelper.examples.common.controller.UserController.list_sqlhelper_over_pageHelper(UserController.java:83) ~[classes/:na]
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na]
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
	at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na]
	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190) ~[spring-web-5.1.7.RELEASE.jar:5.1.7.RELEASE]
	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138) ~[spring-web-5.1.7.RELEASE.jar:5.1.7.RELEASE]
	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104) ~[spring-webmvc-5.1.7.RELEASE.jar:5.1.7.RELEASE]
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:892) ~[spring-webmvc-5.1.7.RELEASE.jar:5.1.7.RELEASE]
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:797) ~[spring-webmvc-5.1.7.RELEASE.jar:5.1.7.RELEASE]
	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.1.7.RELEASE.jar:5.1.7.RELEASE]
	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1039) ~[spring-webmvc-5.1.7.RELEASE.jar:5.1.7.RELEASE]
	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:942) ~[spring-webmvc-5.1.7.RELEASE.jar:5.1.7.RELEASE]
	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1005) ~[spring-webmvc-5.1.7.RELEASE.jar:5.1.7.RELEASE]
	at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:897) ~[spring-webmvc-5.1.7.RELEASE.jar:5.1.7.RELEASE]
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:634) ~[tomcat-embed-core-9.0.19.jar:9.0.19]
	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:882) ~[spring-webmvc-5.1.7.RELEASE.jar:5.1.7.RELEASE]
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741) ~[tomcat-embed-core-9.0.19.jar:9.0.19]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) ~[tomcat-embed-core-9.0.19.jar:9.0.19]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.19.jar:9.0.19]
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-embed-websocket-9.0.19.jar:9.0.19]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.19.jar:9.0.19]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.19.jar:9.0.19]
	at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99) ~[spring-web-5.1.7.RELEASE.jar:5.1.7.RELEASE]
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-5.1.7.RELEASE.jar:5.1.7.RELEASE]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.19.jar:9.0.19]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.19.jar:9.0.19]
	at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:92) ~[spring-web-5.1.7.RELEASE.jar:5.1.7.RELEASE]
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-5.1.7.RELEASE.jar:5.1.7.RELEASE]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.19.jar:9.0.19]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.19.jar:9.0.19]
	at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:93) ~[spring-web-5.1.7.RELEASE.jar:5.1.7.RELEASE]
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-5.1.7.RELEASE.jar:5.1.7.RELEASE]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.19.jar:9.0.19]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.19.jar:9.0.19]
	at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200) ~[spring-web-5.1.7.RELEASE.jar:5.1.7.RELEASE]
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-5.1.7.RELEASE.jar:5.1.7.RELEASE]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.19.jar:9.0.19]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.19.jar:9.0.19]
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:200) ~[tomcat-embed-core-9.0.19.jar:9.0.19]

sqlhelper-examples: the test case named'list_sqlhelper_over_pageHelper' throws NPE when its parameters has not setter

Describe the bug
because the paramter for the test case 'list_sqlhelper_over_pageHelper' in sqlhelper-examples UserController, so will reoduce a NPE when its parameter has not set

To Reproduce
Steps to reproduce the behavior:

  1. startup sqlhelper-examples
  2. go to swagger-ui.html
  3. find the test case named 'list_sqlhelper_over_pageHelper'
  4. click the 'try it out' button
  5. click the 'execute' button

Expected behavior
has first page data , but not

Screenshots
If applicable, add screenshots to help explain your problem.

Desktop (please complete the following information):

  • OS: Windows
  • Browser: chrome
  • Version: 2.0.3

插件适用性问题有严重BUG

Method threw 'java.lang.RuntimeException' exception. Cannot evaluate com.jn.sqlhelper.dialect.pagination.PagingRequest.toString()

无论我如何尝试,是直接适用其插件,还是配合springboot ,或者是兼容pageH都会给我报这种错误在执行第一行分页就会抛出

PagingRequest request1 = new PagingRequest().setPageNo(currentPage).setPageSize(pageSize);
PagingRequest request = SqlPaginations.preparePagination(currentPage == 0 ? 1 : currentPage, pageSize == 0 ? -1 : pageSize, "DESC");

我在想你们是如何使用其插件的???

README version links is wrong

Describe the bug
every version links are wrong in README.md

reproduce

  • Version [1.0-RELEASE, 1.1 RELEASE, 1.2.0, 1.2.1, 1.2.2. 1.2.3]

Can't find any supported JSON libraries : [gson, jackson, fastjson], check you classpath has one of these jar pairs: [fastjson, easyjson-fastjson], [gson, easyjson-gson], [jackson, easyjson-jackson]

SLF4J: Failed toString() invocation on an object of type [com.jn.sqlhelper.dialect.conf.SQLInstrumentConfig]
Reported exception:
java.lang.RuntimeException: Can't find any supported JSON libraries : [gson, jackson, fastjson], check you classpath has one of these jar pairs: [fastjson, easyjson-fastjson], [gson, easyjson-gson], [jackson, easyjson-jackson]
at com.jn.easyjson.core.JSONBuilderProvider.create(JSONBuilderProvider.java:61)
at com.jn.easyjson.core.JSONBuilderProvider.create(JSONBuilderProvider.java:46)
at com.jn.sqlhelper.dialect.conf.SQLInstrumentConfig.toString(SQLInstrumentConfig.java:49)
at org.slf4j.helpers.MessageFormatter.safeObjectAppend(MessageFormatter.java:277)
at org.slf4j.helpers.MessageFormatter.deeplyAppendParameter(MessageFormatter.java:249)
at org.slf4j.helpers.MessageFormatter.arrayFormat(MessageFormatter.java:211)
at org.slf4j.helpers.MessageFormatter.arrayFormat(MessageFormatter.java:161)
at ch.qos.logback.classic.spi.LoggingEvent.getFormattedMessage(LoggingEvent.java:293)
at ch.qos.logback.classic.spi.LoggingEvent.prepareForDeferredProcessing(LoggingEvent.java:206)
at ch.qos.logback.core.OutputStreamAppender.subAppend(OutputStreamAppender.java:223)
at ch.qos.logback.core.OutputStreamAppender.append(OutputStreamAppender.java:102)
at ch.qos.logback.core.UnsynchronizedAppenderBase.doAppend(UnsynchronizedAppenderBase.java:84)
at ch.qos.logback.core.spi.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:51)
at ch.qos.logback.classic.Logger.appendLoopOnAppenders(Logger.java:270)
at ch.qos.logback.classic.Logger.callAppenders(Logger.java:257)
at ch.qos.logback.classic.Logger.buildLoggingEventAndAppend(Logger.java:421)
at ch.qos.logback.classic.Logger.filterAndLog_2(Logger.java:414)
at ch.qos.logback.classic.Logger.info(Logger.java:587)
at com.jn.sqlhelper.dialect.SQLStatementInstrumentor.init(SQLStatementInstrumentor.java:69)
at com.jn.sqlhelper.mybatis.plugins.SqlHelperMybatisPlugin.init(SqlHelperMybatisPlugin.java:63)
at com.jn.sqlhelper.mybatis.spring.boot.autoconfigure.SqlHelperMybatisAutoConfiguration.customize(SqlHelperMybatisAutoConfiguration.java:81)
at org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration.applyConfiguration(MybatisAutoConfiguration.java:190)
at org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration.sqlSessionFactory(MybatisAutoConfiguration.java:139)
at org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration$$EnhancerBySpringCGLIB$$2ca9c6bc.CGLIB$sqlSessionFactory$1()
at org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration$$EnhancerBySpringCGLIB$$2ca9c6bc$$FastClassBySpringCGLIB$$36c60b8b.invoke()
at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:244)
at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:331)
at org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration$$EnhancerBySpringCGLIB$$2ca9c6bc.sqlSessionFactory()
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154)
at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:651)
at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:636)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1338)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1177)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:557)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:517)
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:323)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:321)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:882)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:878)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:550)
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:141)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:747)
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:315)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1226)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1215)
at com.test.Test1Appliaction.main(Test1Appliaction.java:28)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49)

报这个,我们应该怎么配置呢?
文档中没有相关说明,而环境中肯定是有各种json的,系统一直在用什么fastjson,且与spring boot结合了的,spring boot都已经配置成默认使用fastjson来做各种序列化了

排序入参问题

数据库字段为user_id
�业务中字段为驼峰userId
前端给后端的key值肯定是userId
PagingRequest request = new PagingRequest()
// 会报错
.limit(1 ,2).setOrderBy(SqlStyleOrderByBuilder.DEFAULT.build("userId desc"));
// 正常
.limit(1 ,2).setOrderBy(SqlStyleOrderByBuilder.DEFAULT.build("user_id desc"));
可否有相关配置来确定数据库字段和业务中对象属性之间的转换关系呢?

when pageNo grate maxPageNo, return empty array in mybatis environment

assume totol 101
pagesize 10
so maxPageNo is 11
when you request pageNo is greate 11, for example 12,

the response is :
{
pageSize: 10,
pageNo:12,
total:101,
maxPageNo: 11,
items: []
}

expect result is :
{
pageSize: 10,
pageNo:11,
total:101,
maxPageNo:11,
items:[
{
id: xxxx
name: xxxxx
}
]
}

MyBatis Pagination: support pagination in subquery

下面是一个摘自PageHelper的一个特性诉求,原文如下:

select * from t1 where dmaketime>'2019-01-01' order by ts limit 100000,10
分页很多的时候 查询最后一页组装出来的sql是这样的,结果会很慢很慢。
通过下面方式避免回表会快到0.016秒
select a.* from t1 a,(select id from t1 where dmaketime>'2019-01-01' order by ts limit 100000,10) b where a.id=b.id
但是就没办法用pagehelper了,我现在是单独写了个SQL
select a.* from t1 a,(select id from t1 where dmaketime>'2019-01-01' order by ts {#LIMIT#}) b where a.id=b.id
然后修改pagehelper的MySqlDialect和CountSqlParser 去替换掉 {#LIMIT#}
但是当不用pagehelper分页时这个SQL 就不正确了,因为{#LIMIT#} 就不符合mybatis写法

我的多数据源配置不生效,分页信息都没传到sql里

我的多数据源是这样配置的,不用切换
@configuration
@MapperScan(basePackages = "com.lingdong.business.mapper,com.lingdong.mapper",sqlSessionTemplateRef ="firstSqlSessionTemplate")
public class FirstDataSourceConfig {

@Autowired
private FirstDataBaseProperties prop;

/**创建数据源*/
@Bean(name = "firstDS")
@ConfigurationProperties(prefix = "spring.datasource.first")
@Primary
public DataSource getFirstDataSource() {
    DruidDataSource dataSource = new DruidDataSource();
    dataSource.setDriverClassName(prop.driverClassName);
    dataSource.setUrl(prop.url);
    dataSource.setUsername(prop.username);
    dataSource.setPassword(prop.password);

    return dataSource;
}


/**创建SessionFactory*/
@Bean(name = "firstSqlSessionFactory")
@Primary
public SqlSessionFactory firstSqlSessionFactory(@Qualifier("firstDS") DataSource dataSource) throws Exception {
    SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
    bean.setDataSource(dataSource);
    bean.setTypeAliasesPackage("com.lingdong.bean,com.lingdong.bean.business");

    Resource[] mapperLocations1 = new PathMatchingResourcePatternResolver().getResources("classpath*:mapper/*.xml");
    Resource[] mapperLocations2 = new PathMatchingResourcePatternResolver().getResources("classpath*:business/mapper/*.xml");
    Resource[] mapperLocations = new Resource[mapperLocations1.length+mapperLocations2.length];
    int inx = 0;
    for(Resource r:mapperLocations1){
        mapperLocations[inx++] = r;
    }
    for(Resource r:mapperLocations2){
        mapperLocations[inx++] = r;
    }
    bean.setMapperLocations(mapperLocations);

    return bean.getObject();
}

为什么性能要比Mybatis-PageHelper更高

性能要比Mybatis-PageHelper更高, 因为SQL中的 limit、offset 会以占位符 '?'的形式存在,支持缓存等,总之PageHelper支持的这里都支持,PageHelper不支持的这里也支持。

这边可以解释下原理吗?

看了 Mybatis-PageHelper 的 com.github.pagehelper.dialect.helper
分页实现是使用sqlBuilder.append(" LIMIT ?, ? ");
那 sqlhelper是如何实现的呢? 为什么性能更高? 可以解释下并更新至文挡吗? 这样相信会更多人使用
谢谢!

提供对tk.mapper 的支持

当前使用的是tk.mapper(通用mapper),能否提供类似sqlhelper-mybatisplus-spring-boot的sqlhelper-tkmapper-spring-boot.

Supports Count(indexedColumn)

目前分页sql生成的count语句为 select count(1)。
在某些情况下,如果可以 能够执行select count(indexedColumn) 无疑会使得性能更高。

现在分页at com.jn.easyjson.core.exclusion.ExclusionConfiguration.isExcludedField报空指针

java.lang.NullPointerException: null
at com.jn.easyjson.core.exclusion.ExclusionConfiguration.isExcludedField(ExclusionConfiguration.java:110)
at com.jn.easyjson.fastjson.ext.EasyJsonSerializeConfig.createJavaBeanSerializer(EasyJsonSerializeConfig.java:50)
at com.alibaba.fastjson.serializer.SerializeConfig.createJavaBeanSerializer(SerializeConfig.java:118)
at com.alibaba.fastjson.serializer.SerializeConfig.getObjectWriter(SerializeConfig.java:776)
at com.alibaba.fastjson.serializer.SerializeConfig.getObjectWriter(SerializeConfig.java:430)
at com.alibaba.fastjson.serializer.JSONSerializer.getObjectWriter(JSONSerializer.java:410)
at com.alibaba.fastjson.serializer.JSONSerializer.write(JSONSerializer.java:282)
at com.jn.easyjson.fastjson.FastJsonAdapter.serialize(FastJsonAdapter.java:50)
at com.jn.easyjson.core.JSON.toJson(JSON.java:51)
at com.jn.easyjson.core.JSON.toJson(JSON.java:39)
at com.jn.sqlhelper.dialect.pagination.PagingRequest.toString(PagingRequest.java:217)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.test.controller.TestController.testPage(TestController.java:65)
图片

selectById Parameters: null

您好,我使用的是sqlhelper-mybatisplus-spring-boot-starter:3.0.1
当我调用selectById时控制台输出的sql参数为空,如图所示:
image

我的id是Long类型,且名称为id,我使用构造查询时一切都正常
roleService.getOne(Wrappers.<Role>lambdaQuery().eq(Role::getId, roleId));
尝试了很多办法,最后升级依赖mybatis-plus:3.3.0,并且解决com.baomidou.mybatisplus.autoconfigure.ConfigurationCustomizer接口的升级兼容性问题,再次调用selectById,参数为空的问题就没有了,这个或许是mybatisplus:3.2.0的问题,所以我想问您是否会考虑升级mybatisplus依赖

Can't find a suitable or enabled SQL instrumentation

最新代码编译后不能用:
com.jn.sqlhelper.dialect.instrument.SQLStatementInstrumentor中
104行 Preconditions.checkNotNull(instrumentation,"Can't find a suitable or enabled SQL instrumentation");检验不通过

命名建议

PagingRequest request = new PagingRequest()
这个是sqlhelper的对象,
其实在服务器端开发中,经常会用到HttpServletRequest
也经常会命名为request,
感觉会容易混淆,能否有明显的区分呢?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.