• MyBatis如何学习
    求高手分享心得
  • [Java] mybatis 和 hibernate 的区别
    (1)Mybatis和hibernate不同,它不完全是一个ORM框架,因为MyBatis需要程序员自己编写Sql语句。(2)Mybatis直接编写原生态sql,可以严格控制sql执行性能,灵活度高,非常适合对关系数据模型要求不高的软件开发,因为这类软件需求变化频繁,一但需求变化要求迅速输出成果。但是灵活的前提是mybatis无法做到数据库无关性,如果需要实现支持多种数据库的软件,则需要自定义多套sql映射文件,工作量大。(3)Hibernate对象/关系映射能力强,数据库无关性好,对于关系模型要求高的软件,如果用hibernate开发可以节省很多代码,提高效率。
  • [Java] mybatis逻辑分页和物理分页的区别是什么?
    5
  • [Java] mybatis如何编写一个自定义插件?
    4
  • maven镜像仓库缺少mybatis 3.5.2 版本
    如果可以的话 希望可以更新最新版本
  • MyBatis介绍
    MyBatis 本是apache 的一个开源项目iBatis,2010 年这个项目由apache 迁移到了google,并更名为MyBatis。2013 年迁移到Github。MyBatis 是一个优秀的基于Java 的持久层框架,它内部封装了JDBC,使开发者只需关注SQL 语句本身,而不用再花费精力去处理诸如注册驱动、创建Connection、配置Statement等繁杂过程。Mybatis通过xml 或注解的方式将要执行的各种statement(statement、preparedStatement等)配置起来,并通过Java 对象和Statement 中SQL 的动态参数进行映射生成最终执行的SQL 语句,最后由MyBatis 框架执行SQL 并将结果映射成Java 对象并返回。MyBatis 的可以在github 官网下载:https://github.com/mybatis
  • Mybatis解决jdbc编程的问题
        (1)数据库链接创建、释放频繁造成系统资源浪费从而影响系统性能,如果使用数据库链接池可解决此问题。解决:在SqlMapConfig.xml中配置数据链接池,使用连接池管理数据库链接。(2)Sql语句写在代码中造成代码不易维护,实际应用sql变化的可能较大,sql变动需要改变java代码。解决:将Sql语句配置在XXXXmapper.xml文件中与java代码分离。(3)向sql语句传参数麻烦,因为sql语句的where条件不一定,可能多也可能少,占位符需要和参数一一对应。解决:Mybatis自动将java对象映射至sql语句,通过statement中的parameterType定义输入参数的类型。(4)对结果集解析麻烦,sql变化导致解析代码变化,且解析前需要遍历,如果能将数据库记录封装成pojo对象解析比较方便。解决:Mybatis自动将sql执行结果映射至java对象,通过statement中的resultType定义输出结果的类型。
  • mybatis框架使用总结
    1、mybatis框架执行过程:(1)配置mybatis的配置文件,SqlMapConfig.xml(名称不固定)(2)通过配置文件,加载mybatis运行环境,创建SqlSessionFactory会话工厂 SqlSessionFactory在实际使用时按单例方式。(3)通过SqlSessionFactory创建SqlSession SqlSession是一个面向用户接口(提供操作数据库方法),实现对象是线程不安全的,     建议sqlSession应用场合在方法体内。(4)调用sqlSession的方法去操作数据。 如果需要提交事务,需要执行SqlSession的commit()方法。(5)释放资源,关闭SqlSession 2、输入映射:parameterType:指定输入参数类型可以简单类型、pojo、hashmap。。对于综合查询,建议parameterType使用包装的pojo,有利于系统 扩展。 3、输出映射:resultType:查询到的列名和resultType指定的pojo的属性名一致,才能映射成功。reusltMap:可以通过resultMap 完成一些高级映射。如果查询到的列名和映射的pojo的属性名不一致时,通过resultMap设置列名和属性名之间的对应关系(映射关系)。可以完成映射。 4、dao及实现类开发问题总结(1)dao接口实现类中存在大量模板方法,设想能否将这些代码提取出来,大大减轻程序员的工作量;(2)调用sqlsession方法时将statement的id硬编码了(3)调用sqlsession方法时参入的变量,由于sqlsession方法是用泛型,即使变量类型传入错误,在编译阶段也不报错。 5、mapper代理实现总结Mapper接口开发方法只需要程序员编写Mapper接口(相当于Dao接口),由Mybatis框架根据接口定义创建接口的动态代理对象,代理对象的方法体同上边Dao接口实现类方法。Mapper接口开发需要遵循以下规范:(1)Mapper.xml文件中的namespace与mapper接口的类路径相同。(2)Mapper接口方法名和Mapper.xml中定义的每个statement的id相同 (3)Mapper接口方法的输入参数类型和mapper.xml中定义的每个sql 的parameterType的类型相同(4)Mapper接口方法的输出参数类型和mapper.xml中定义的每个sql的resultType的类型相同
  • cse整和mybatis报错,无法注入
    ------------------2018-08-23 09:03:16,990 [ERROR] invoke failed, invocation=PRODUCER rest collector.collector.helloworld org.apache.servicecomb.swagger.invocation.exception.DefaultExceptionToResponseConverter.convert(DefaultExceptionToResponseConverter.java:35)java.lang.NullPointerExceptionat com.huawei.cse.porter.controller.CollectorImpl.helloworld(CollectorImpl.java:49)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:498)at org.apache.servicecomb.swagger.engine.SwaggerProducerOperation.doInvoke(SwaggerProducerOperation.java:148)at org.apache.servicecomb.swagger.engine.SwaggerProducerOperation.syncInvoke(SwaggerProducerOperation.java:139)at org.apache.servicecomb.swagger.engine.SwaggerProducerOperation.invoke(SwaggerProducerOperation.java:109)at org.apache.servicecomb.core.handler.impl.ProducerOperationHandler.handle(ProducerOperationHandler.java:40)at org.apache.servicecomb.core.Invocation.next(Invocation.java:148)at org.apache.servicecomb.bizkeeper.BizkeeperCommand.lambda$construct$2(BizkeeperCommand.java:79)at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:50)at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:50)at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)at rx.Observable.unsafeSubscribe(Observable.java:8666)at rx.internal.operators.OnSubscribeDefer.call(OnSubscribeDefer.java:52)at rx.internal.operators.OnSubscribeDefer.call(OnSubscribeDefer.java:36)at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:50)at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:50)at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:50)at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:50)at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:50)at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:50)at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:50)at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)at rx.Observable.unsafeSubscribe(Observable.java:8666)at rx.internal.operators.OnSubscribeDefer.call(OnSubscribeDefer.java:52)at rx.internal.operators.OnSubscribeDefer.call(OnSubscribeDefer.java:36)at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:50)at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:50)at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:50)at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:50)at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)at rx.Observable.unsafeSubscribe(Observable.java:8666)at rx.internal.operators.OnSubscribeDefer.call(OnSubscribeDefer.java:52)at rx.internal.operators.OnSubscribeDefer.call(OnSubscribeDefer.java:36)at rx.Observable.subscribe(Observable.java:8759)at rx.Observable.subscribe(Observable.java:8726)at rx.Observable.subscribe(Observable.java:8619)at org.apache.servicecomb.bizkeeper.BizkeeperHandler.handle(BizkeeperHandler.java:77)at org.apache.servicecomb.core.Invocation.next(Invocation.java:148)at com.huawei.paas.cse.tcc.handler.ProviderTccTransactionHandler.handle(ProviderTccTransactionHandler.java:59)at org.apache.servicecomb.core.Invocation.next(Invocation.java:148)at org.apache.servicecomb.qps.ProviderQpsFlowControlHandler.handle(ProviderQpsFlowControlHandler.java:50)at org.apache.servicecomb.core.Invocation.next(Invocation.java:148)at com.huawei.paas.cse.handler.stats.PerfStatsHandler.handle(PerfStatsHandler.java:60)at org.apache.servicecomb.core.Invocation.next(Invocation.java:148)at org.apache.servicecomb.core.handler.ShutdownHookHandler.handle(ShutdownHookHandler.java:68)at org.apache.servicecomb.core.Invocation.next(Invocation.java:148)at org.apache.servicecomb.common.rest.AbstractRestInvocation.doInvoke(AbstractRestInvocation.java:189)at org.apache.servicecomb.common.rest.AbstractRestInvocation.invoke(AbstractRestInvocation.java:165)at org.apache.servicecomb.common.rest.AbstractRestInvocation.runOnExecutor(AbstractRestInvocation.java:150)at org.apache.servicecomb.common.rest.AbstractRestInvocation.lambda$scheduleInvocation$0(AbstractRestInvocation.java:133)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)at java.lang.Thread.run(Thread.java:748)2018-08-23 09:03:16,995 [WARN] bizkeeper command failed due to:InvocationException: code=590;msg=CommonExceptionData [message=Cse Internal Server Error] org.apache.servicecomb.bizkeeper.BizkeeperCommand.lambda$null$1(BizkeeperCommand.java:82)2018-08-23 09:03:16,996 [WARN] bizkeeper execution error org.apache.servicecomb.bizkeeper.BizkeeperHandler$1.onExecutionError(BizkeeperHandler.java:54)InvocationException: code=590;msg=CommonExceptionData [message=Cse Internal Server Error]at org.apache.servicecomb.swagger.invocation.exception.ExceptionFactory.d**ate(ExceptionFactory.java:79)at org.apache.servicecomb.swagger.invocation.exception.ExceptionFactory.convertException(ExceptionFactory.java:124)at org.apache.servicecomb.swagger.invocation.exception.ExceptionFactory.convertProducerException(ExceptionFactory.java:97)at org.apache.servicecomb.swagger.invocation.Response.createProducerFail(Response.java:134)at org.apache.servicecomb.swagger.invocation.Response.producerFailResp(Response.java:145)at org.apache.servicecomb.swagger.invocation.exception.DefaultExceptionToResponseConverter.convert(DefaultExceptionToResponseConverter.java:36)at org.apache.servicecomb.swagger.invocation.exception.ExceptionToResponseConverters.convertExceptionToResponse(ExceptionToResponseConverters.java:47)at org.apache.servicecomb.swagger.invocation.exception.ExceptionFactory.convertExceptionToResponse(ExceptionFactory.java:128)at org.apache.servicecomb.swagger.engine.SwaggerProducerOperation.proces**ception(SwaggerProducerOperation.java:161)at org.apache.servicecomb.swagger.engine.SwaggerProducerOperation.doInvoke(SwaggerProducerOperation.java:151)at org.apache.servicecomb.swagger.engine.SwaggerProducerOperation.syncInvoke(SwaggerProducerOperation.java:139)at org.apache.servicecomb.swagger.engine.SwaggerProducerOperation.invoke(SwaggerProducerOperation.java:109)at org.apache.servicecomb.core.handler.impl.ProducerOperationHandler.handle(ProducerOperationHandler.java:40)at org.apache.servicecomb.core.Invocation.next(Invocation.java:148)at org.apache.servicecomb.bizkeeper.BizkeeperCommand.lambda$construct$2(BizkeeperCommand.java:79)at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:50)at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:50)at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)at rx.Observable.unsafeSubscribe(Observable.java:8666)at rx.internal.operators.OnSubscribeDefer.call(OnSubscribeDefer.java:52)at rx.internal.operators.OnSubscribeDefer.call(OnSubscribeDefer.java:36)at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:50)at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:50)at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:50)at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:50)at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:50)at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:50)at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:50)at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)at rx.Observable.unsafeSubscribe(Observable.java:8666)at rx.internal.operators.OnSubscribeDefer.call(OnSubscribeDefer.java:52)at rx.internal.operators.OnSubscribeDefer.call(OnSubscribeDefer.java:36)at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:50)at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:50)at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:50)at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:50)at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)at rx.Observable.unsafeSubscribe(Observable.java:8666)at rx.internal.operators.OnSubscribeDefer.call(OnSubscribeDefer.java:52)at rx.internal.operators.OnSubscribeDefer.call(OnSubscribeDefer.java:36)at rx.Observable.subscribe(Observable.java:8759)at rx.Observable.subscribe(Observable.java:8726)at rx.Observable.subscribe(Observable.java:8619)at org.apache.servicecomb.bizkeeper.BizkeeperHandler.handle(BizkeeperHandler.java:77)at org.apache.servicecomb.core.Invocation.next(Invocation.java:148)at com.huawei.paas.cse.tcc.handler.ProviderTccTransactionHandler.handle(ProviderTccTransactionHandler.java:59)at org.apache.servicecomb.core.Invocation.next(Invocation.java:148)at org.apache.servicecomb.qps.ProviderQpsFlowControlHandler.handle(ProviderQpsFlowControlHandler.java:50)at org.apache.servicecomb.core.Invocation.next(Invocation.java:148)at com.huawei.paas.cse.handler.stats.PerfStatsHandler.handle(PerfStatsHandler.java:60)at org.apache.servicecomb.core.Invocation.next(Invocation.java:148)at org.apache.servicecomb.core.handler.ShutdownHookHandler.handle(ShutdownHookHandler.java:68)at org.apache.servicecomb.core.Invocation.next(Invocation.java:148)at org.apache.servicecomb.common.rest.AbstractRestInvocation.doInvoke(AbstractRestInvocation.java:189)at org.apache.servicecomb.common.rest.AbstractRestInvocation.invoke(AbstractRestInvocation.java:165)at org.apache.servicecomb.common.rest.AbstractRestInvocation.runOnExecutor(AbstractRestInvocation.java:150)at org.apache.servicecomb.common.rest.AbstractRestInvocation.lambda$scheduleInvocation$0(AbstractRestInvocation.java:133)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)at java.lang.Thread.run(Thread.java:748)Caused by: java.lang.NullPointerExceptionat com.huawei.cse.porter.controller.CollectorImpl.helloworld(CollectorImpl.java:49)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:498)at org.apache.servicecomb.swagger.engine.SwaggerProducerOperation.doInvoke(SwaggerProducerOperation.java:148)... 60 more
总条数:54 到第
上滑加载中