MyBatis

Mybatis的分页插件PageHelper的使用及支持的数据库

早过忘川 提交于 2020-02-26 16:41:37
一、Mybatis框架的分页插件PageHelper, 目前支持Oracle,Mysql,MariaDB,SQLite,Hsqldb,PostgreSQL六种数据库分页 。 他的使用非常简单, 简要步骤如下: 第一步: 添加 jar 包 到工程中 <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>4.0.0</version> </dependency> 第二步:在**SqlMapConfig.xml****,配置一个 plugin ,**如下 : <plugins> <!-- com.github.pagehelper为PageHelper类所在包名 --> <plugin interceptor="com.github.pagehelper.PageHelper"> <property name="dialect" value="mysql"/> <!-- 该参数默认为false --> <!-- 设置为true时,会将RowBounds第一个参数offset当成pageNum页码使用 --> <!-- 和startPage中的pageNum效果一样--> <property name="offsetAsPageNum" value

springboot代码自动生成

我怕爱的太早我们不能终老 提交于 2020-02-26 15:44:34
在项目开始阶段经常需要自动生成一批代码,如果使用了mybatis则可以使用mybatis plus就可以生成mybatis相关代码。不过经常项目中还有一些mvc代码需要生成,比如说前端代码、相关sql、swagger注解、权限注解等等。 下面提供一个代码生成demo springboot集成vm自动生成前端代码、controller、service、mybatis、sql等相关代码,其中还包括swagger注解等。 gitee地址: https://gitee.com/lpxs/code-generator.git 来源: oschina 链接: https://my.oschina.net/u/560547/blog/3162147

Spring框架(二):Spring整合Mybatis、添加事物

﹥>﹥吖頭↗ 提交于 2020-02-26 14:56:41
Spring 整合 MyBatis 案例 实现功能:在数据库中根据id查找用户的信息 一、创建与数据库表中对应的实体类 使用 lombok 简化创建 User 类 package com . kuang . pojo ; @Data @AllArgsConstructor @NoArgsConstructor public class User { //注意 字段与表中列名对应 private int id ; private String name ; private String pwd ; } 二、写出这个类的映射接口,接口里有我们查询数据库的方法 package com . kuang . mapper ; import com . kuang . pojo . User ; import java . util . List ; public interface UserMapper { public List < User > getUserList ( ) ; } 三、写出接口的XML文件 xml 中有查询语句 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd

后端问题如何快速定位?

空扰寡人 提交于 2020-02-26 13:56:12
结合自己的工作经验,谈谈问题为什么会产生,已经定位后端问题的一些经验总结。这个只是本人的一点想法而已,大家有啥想补充的都可以留言说明。 01 — Bug是如何产生的? 计算机是精确的,而人是非理性的。这是Bug之所以会产生,且一直烧之不尽的本质原因。如果将编程比喻成施咒,一个字符、一个停顿,没有与正确的形式一致,咒语就不会生效。 另外还有一个次要原因:开发目标、所需资源往往都是 由 他人提供的, 程序员很少能够自己控制工作环境和工作目标。 综上,程序员能做的只是不断逼近完美,但是并没有办法将Bug从软件中彻底清除。 02 — 后端开发的现状 目前,搭建若干套环境是目前技术公司都会采用的方案。这里抽象为开发环境、测试环境、线上环境,三者之间共用一套程序,但是数据是隔离的。 开发环境由开发人员维护,主要用于验证方案,调试程序,变更频繁但是数据单一。由于开发能够直接介入,这个阶段出现的问题往往都能够被很快的解决。开发自测通过后,程序会被发布到测试环境。 测试环境相较于开发环境更加稳定,数据也更接近线上环境。开发收到的问题反馈大量的集中在这一阶段,而且由于不能直接介入,定位与解决问题的难度开始提升。测试人员测试通过后,程序正式向用户发布。 线上环境是直接面向用户的,流量大且请求多样。请求多样意味着正式环境能够暴露前两个阶段未能发现的问题,流量大意味着出现问题往往就会造成重大影响

美团7面 问了哪些问题 java 4年

与世无争的帅哥 提交于 2020-02-26 13:49:12
前提:包括电面,美团一共7面,面了两个部门,后面一个部门面完hr面,等通知。结果凉凉。 详细的已经记不清楚了,每个问题都是根据回答再继续扩展问,只是简单的列一下。 explain的用法 分布式锁 写接口时考虑哪些 事务的传播机制 分布式一致性 线上遇到的问题,怎么解决 rabbitmq 消息发送的流程 rabbitmq如果一个消息堵在了队列头,如何处理 是否使用过rabbitmq的ack应答机制 rabbitmq的持久化 volitile关键字 threadlocal的使用场景 锁有哪几种 创建线程池的参数的含义 动态代理有哪些? mybatis的查询过程 btree和b+tree和二叉树、红黑树有什么区别 spring中用到哪些设计模式 来源: oschina 链接: https://my.oschina.net/wuyiyi/blog/3159617

Spring Boot + mybatis + Thymeleaf 分页示例(纯底层代码,不是pagehelper)

天大地大妈咪最大 提交于 2020-02-26 13:37:41
最近放假在家,终于有时间学习springboot了,当下最流行的java框架,我还没有接触过,有点遗憾,看过尚硅谷雷丰阳老师的springboot基础整合篇,现在轮到项目整合了,在B站发现一个码匠社区项目挺好的,最近刚完成了分页部分的练习,居然没用插件,直接原生代码,有点牛笔。 一、项目架构 二、实现功能 目前我实现了登录,简单的springboot+mybatis的增删改查,使用bootstrap的前台布局,问题列表展示,分页展示等功能。 三、代码实例 我一般是从controller层开始写 indexController package life.majiang.community.controller; ... @Controller public class IndexController { @Autowired QuestionService questionService ; @GetMapping ( "/" ) public String index( @RequestParam (name= "page" ,defaultValue = "1" ) Integer page, @RequestParam (name= "size" ,defaultValue = "5" ) Integer size, Model model) { PaginationDTO

来自阿里的P7高级程序员教你如何成为一名合格的Java程序员

最后都变了- 提交于 2020-02-26 11:18:24
Java程序员的基本技能 基本语法 这包括static、final、transient等关键字的作用,foreach循环的原理等等。今天面试我问你static关键字有哪些作用,如果你答出static修饰变量、修饰方法我会认为你合格,答出静态块,我会认为你不错,答出静态内部类我会认为你很好,答出静态导包我会对你很满意,因为能看出你非常热衷研究技术。 集合 非常重要,也是必问的内容。基本上就是List、Map、Set,问的是各种实现类的底层实现原理,实现类的优缺点。 集合要掌握的是ArrayList、LinkedList、Hashtable、HashMap、ConcurrentHashMap、HashSet的实现原理,能流利作答,当然能掌握CopyOnWrite容器和Queue是再好不过的了。另外多说一句,ConcurrentHashMap的问题在面试中问得特别多,大概是因为这个类可以衍生出非常多的问题,关于ConcurrentHashMap,我给网友朋友们提供三点回答或者是研究方向: ConcurrentHashMap的锁分段技术 ConcurrentHashMap的读是否要加锁,为什么 ConcurrentHashMap的迭代器是强一致性的迭代器还是弱一致性的迭代器 设计模式 当然咱们不能这么功利,为了面试而学习,设计模式在工作中还是非常重要、非常有用的

2020金三银四,面试求生指南

家住魔仙堡 提交于 2020-02-26 11:12:04
2020年,面试就靠它们了,现在每天刷题,看源码文档,最近看的这些题目还是有些难度,有一部分我都要好好想一想才能回答出来,或者回答不出来,总的来说知识宽度够了深度还跟不上。所以要重点突破下底层的东西。这篇文章我总结了很久,希望对正在准备面试的同仁们有点帮助。没错我就是传说中的面霸!! 一. 面试准备 首先,是笔试题,这点是初级程序员绕不过去的坎。 笔试题一般的公司都会出的,除非你是大牛,可以选择不做。所以,还是老老实实的准备吧。 这里列举下一些比较常见出现的问题 JAVA 5个常用的java-api包。 String类中常用的5个方法。 API接口开发的注意事项。 TCP/IP、HTTP协议。 集合相关的问题(重点) HashMap、TreeMap、Hashtable、LinkedHashMap、ConcurrentHashMap、ArrayList、LinkedList的实现和区别之类的。 上述集合中的那些是线程安全的,那些不是。 在那些场景使用这些集合。 List、Map、Set三个接口,存取元素时,各有什么特点。 线程相关问题(重点) 创建线程的几种方式。 线程同步的方法。 wait和sleep区别。 Runnable接口和Callable接口的区别。 如何实现线程安全。 框架相关知识(这块反而不多) Mybatis#和$的区别. Hibernate和Mybatis的区别。

MyBatis缓存配置

眉间皱痕 提交于 2020-02-26 10:19:19
一级缓存   Mybatis对缓存提供支持,但是在没有配置的默认情况下,它只开启一级缓存,一级缓存只是相对于同一个SqlSession而言。所以在参数和SQL完全一样的情况下,我们使用同一个SqlSession对象调用一个Mapper方法,往往只执行一次SQL,因为使用SelSession第一次查询后,MyBatis会将其放在缓存中,以后再查询的时候,如果没有声明需要刷新,并且缓存没有超时的情况下,SqlSession都会取出当前缓存的数据,而不会再次发送SQL到数据库。                  为什么要使用一级缓存,不用多说也知道个大概。但是还有几个问题我们要注意一下。    1、一级缓存的生命周期有多长?    a、MyBatis在开启一个数据库会话时,会 创建一个新的SqlSession对象,SqlSession对象中会有一个新的Executor对象。Executor对象中持有一个新的PerpetualCache对象;当会话结束时,SqlSession对象及其内部的Executor对象还有PerpetualCache对象也一并释放掉。   b、如果SqlSession调用了close()方法,会释放掉一级缓存PerpetualCache对象,一级缓存将不可用。   c、如果SqlSession调用了clearCache()