MyBatis

SpringBoot整合Mybatis

扶醉桌前 提交于 2021-01-12 04:37:14
依赖 <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.3.2</version> </dependency> 纯注解版 如何告诉Spring容器,哪个接口是Mapper呢? 一般我们的都是单独创建一个mapper的packet, 闲麻烦可以选择使用 @Mapper 注解标记在单个mapper接口上,或者使用 @MapperScan 完成mapper的批量扫描 完成简单注解版的CURD 方法的名字见名知意就行,但是方法的返回值得是注解上sql对应的返回值 查询 @Select @Select("select * from person where id=#{id}") public Person getPersonById(Integer id); 删除 @Delete @Delete("delete from person where id = #{id}") public int deletePersonById(Integer id); 添加 @Insert // 添加Options注解,指定主键自增长, keyProperty 指定主键是谁,效果是运行完insert语句后

Springboot+Kotlin+mybatis 构建RESTFUL

 ̄綄美尐妖づ 提交于 2021-01-10 16:49:52
java 大多数代码写了很多沉长的getter 以及setter,似乎kotlin改造了这些东西,简化了实体类的写法。其语法类似于scala ,其实两者写起来感觉没多大区别。遵循大佬就是牛逼的原则,我更偏向于kotlin,毕竟人家手里有android,而且其语法最初也是支持android。 对于代码的编写其实并无多大区别,说下主要注意的地方;代码会在文章末尾奉上,文章在于辅助代码理解,如果你不想看这些可以直接跳到末尾查看源码。 实体类: 实体类的写法更加简单,但是有利必定有弊。其中遇到的坑Integer ,和时间date的转化。Integer 的区别在于int 还是Integer, Date 不管你使用 java.utils 还是 java.sql 都会报错,其中报错语句大致如下: matching [java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang. 所以现在的解决办法就是 所有时间戳类的都转化为timeStamp,至于Int 型 那么就是int? 这样就是一个简单的实体类就出来了,少了getter 少了setter。 剩下的就是老规矩,Controller,Services,Mapper,Xml

MySql嵌套查询+关联查询+多表查询+对应案例 超详细,一看就会!!!

浪尽此生 提交于 2021-01-10 10:20:20
最近学习MyBatis框架 用到多表查询比较多,以前学的不是很好,今特意回来补上。呜呜呜。 文章目录 先看我的数据库表 1. INNER JOIN 内连接 2 .LEFT JOIN 左查询 3. RIGHT JOIN 右查询 4. UNION 全外连接 5. LIMIT 分页查询 6. ORDER BY 排序查询 7. 聚合函数 8.分组查询 9.嵌套查询 1. IN 表示值是否存在子查询结果集中 2. EXISTS 是表示子查询是否返回结果,而不管返回的具体内容。 3.ALL表示子查询结果中的所有。 4.ANY是表示子查询结果中任意一个 先看我的数据库表 总共 4张表 老师职位表 tb_position 学生表(为了好辨认效果) tb_student 老师表 (id 班级 老师名字 职位对应表) tb_teacher 老师与学生的关系对应表,毕竟有多种关系 多对多 tb_stu_teach 1. INNER JOIN 内连接 -- 把两张表中 某列 相同值的给查询出来 select stu.t_stu_name,tea.t_no,tea.t_name from tb_teacher tea INNER JOIN tb_student stu on stu.id = tea.id; 2 .LEFT JOIN 左查询 -- 左查询 -- 以左边的表的数据为基准, 去匹配右边的表的数据

spring cloud + spring boot + springmvc+mybatis分布式微服务云架构

这一生的挚爱 提交于 2021-01-10 04:37:46
做一个微服务架构需要的技术整理: 壹玖零叁八叁贰伍柒玖 View: H5、Vue.js、Spring Tag、React、angularJs Spring Boot/Spring Cloud: Zuul、Ribbon、Feign、Turbine、Hystrix、Oauthor2、Sleuth、API Gateway、Spring Cloud、Config Eureka、SSO、Spring Cloud、 BUS、Turbine、Zipkin、Cache、Spring Cloud Admin、API Gateway、ELK Spring Cloud Security、 Spring Cloud Stream Component: RoketMQ、Kafka、MongoDB、OSS、Redis、Swagger、Zuul、Label、BASE、Charts、Utils DAO: Spring Data、Mybatis、OSS、 DTO Data Storage: RDBS DFS、NOSQL/Hadoop Infrastructure: LogBack、BUS、Jenkins、Zipkin、Druid、Swagger、Docker 来源: oschina 链接: https://my.oschina.net/u/3873725/blog/2396013

spring内嵌jetty容器,实现main方法启动web项目

送分小仙女□ 提交于 2021-01-09 17:08:33
Jetty 是一个开源的servlet容器,它为基于Java的web容器,例如JSP和servlet提供运行环境。Jetty是使用Java语言编写的,它的API以一组JAR包的形式发布。开发人员可以将Jetty容器实例化成一个对象,可以迅速为一些独立运行(stand-alone)的Java应用提供网络和web连接。Jetty相比与Tomcat是轻量级的,而且Jetty更灵活,体现在其可插拔性和可扩展性,更易于开发者对Jetty本身进行二次开发,定制一个适合自身需求的Web Server。 Jetty可以向Tomcat一样单独作为一个纯粹的web容器,但是Jetty的开发文档更偏向于推荐我们将jetty内嵌到我们的项目中,最为一个可插拔的组件进行开发。 下面直接上代码: POM文件 <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <java.version>1.8</java.version> <jetty.version>9.4.8.v20171121</jetty.version> <spring.version>4.0.6.RELEASE</spring.version> <mybatis.version>3.3.0</mybatis.version> <mysql

Spring和SpringMvc详细讲解

懵懂的女人 提交于 2021-01-09 12:30:56
转载自:https://www.cnblogs.com/doudouxiaoye/p/5693399.html 1. 为什么使用Spring ? 1). 方便解耦,简化开发 通过Spring提供的IoC容器,可以将对象之间的依赖关系交由Spring进行控制,避免硬编码所造成的过度程序耦合。 2). AOP编程的支持 通过Spring提供的AOP功能,方便进行面向切面的编程,如性能监测、事务管理、日志记录等。 3). 声明式事务的支持 4). 方便集成各种优秀框架 5). 降低Java EE API的使用难度 如对JDBC,JavaMail,远程调用等提供了简便封装 2. 什么是IoC,为什使用IoC ? IoC全称Iversion of Controller,控制反转。 这概念是说你不用创建对象,而只需要描述它如何被创建。 你不在代码里直接组装你的组件和服务,但是要在配置文件里描述哪些组件需要哪些服务,之后一个容器(IOC容器)负责把他们组装起来。 它能指导我们如何设计出松耦合、更优良的程序。 3. 什么是AOP,为什么使用AOP ? AOP全称:Aspect-Oriented Programming,面向切面编程。 AOP,面向切面编程,就是把可重用的功能提取出来,然后将这些通用功能在合适的时候织入到应用程序中,比如 事务管理 、 权限控制 、 日志记录 、性能统计等。

Spring Cloud Spring Boot mybatis分布式微服务云架构

不想你离开。 提交于 2021-01-09 10:03:13
简介 在上一节中,我们讨论了feign+hystrix在项目开发中,除了考虑正常的调用之外,负载均衡和故障转移也是关注的重点,这也是feign + ribbon+hystrix的优势所在,本节我们就讨论一下在feign中使用ribbon,有两种方式 一、通过在配置文件application.yml配置,开启ribbon,并指定调用生产者相对上一节可以不做任何更改,可以看项目(microservice-consumer-movie-feign-with-hystrix-hystrix-factory) 项目结构如下: application.yml配置文件: spring: application: name: microservice-consumer-movie-feign-with-hystrix-hystrix-factory server: port: 7901 eureka: client: healthcheck: enabled: true serviceUrl: defaultZone: http://jacky:admin@peer1:8761/eureka/,http://jacky:admin@peer2:8762/eureka/,http://jacky:admin@peer3:8763/eureka/ instance: prefer-ip-address

Spring整合mybatis

时光总嘲笑我的痴心妄想 提交于 2021-01-09 06:55:32
结论 任何框架与 spring 进行整合的时候都是 spring 来整合其余框架,也就是 spring 一直都是主控方,其余的框架是将自己的某些东西交给 spring 来进行管理。 对于spring与 mybatis 整合也是不例外的,主要是 mybatis 将自己的 sqlSessionFactory 交给 spring 来进行管理。 整合思路 mybatis实现思路 通过 SqlSessionFactory->SqlSession->mapper文件->通过mapper去出现增删改查 ,所以 mybatis 的根源就是 SqlSessionFactory ,那么 spring 整合 mybatis 其实就是将 mybatis 的 SqlSessionFactory 交给 spring 来管理。 整合步骤 需要的jar mybatis的 mybatis.jar spring的 spring-beans.jar spring-core.jar spring-context.jar spring-txt.jar spring-expression.jar spring-aop.jar spring-jdbc.jar spring-web.jar(如果是web项目则需要) 数据库的 commons-pool.jar ojdbc.jar commons-dbcp.jar // 数据源

MyBatis 的 4 个妙用,别再踩坑了!

丶灬走出姿态 提交于 2021-01-07 22:53:28
Mybatis 是 Java 中一个非常好用的数据库框架,这儿记录一下在使用过程中遇到的坑。 官方中文文档地址: http://www.mybatis.org/mybatis-3/zh/getting-started.html 1、在Mybatis mapping.xml映射配置文件中使用大于>号小于号< 由于Mybatis的映射文件遵循xml文件的格式,所以不能使用像大于号或者小于号这样的xml文件特殊字符,需要使用转义字符代替。 整理了一份272页MybatisPDF文档 可以使用: SELECT * FROM test WHERE 1 = 1 AND start_date <= CURRENT_DATE AND end_date >= CURRENT_DATE <![CDATA[ when min(starttime)<='12:00' and max(endtime)<='12:00' ]]> 2、Mybatis中使用OGNL表达式test比较字符串 在Mybatis映射配置文件中,使用OGNL表达式test的时候,比较字符串时,需要调用 toString()方法保证 == 两边的值都是 String 类型。 <!-- 以下为错误写法,会抛NumberFormatException异常 --> <if test="username == 'U'"> <!--

MyBatis如何做数据清洗

杀马特。学长 韩版系。学妹 提交于 2021-01-07 19:33:30
前言 系统升级后,原来的数据库结构及业务逻辑发生了变化,升级后的系统需要兼容历史数据,此时就需要对历史数据进行清洗。历史数据的清洗方式可以分为两种: 使用SQL脚本开发清洗逻辑 使用Java开发清洗逻辑,通过接口执行 通常,产品化的应用系统在做升级处理时,都是选择SQL脚本的方式进行清洗数据的。 企业内部,对于线上运行的项目,使用SQL脚本对数据进行变更都需要经过工单系统,流程相对复杂。此时将清洗逻辑直接使用编码的方式在系统中实现是相对比较简单的。 使用MyBatis 在使用MyBatis做数据清洗时,遇到了一个问题,那就是清洗后的数据无法指定主键即id的值,新写入的数据主键值被数据自增ID替换掉了。 /** * 自增主键 */ @TableId (value = "id" , type = IdType.AUTO) private Long id; 问题就出现在 @TableId 注解上。 @TableId是MyBatis-Plus提供的注解,@TableId注解代码如下: @Documented @Retention (RetentionPolicy.RUNTIME) @Target (ElementType.FIELD) public @interface TableId { /** * <p> * 字段值(驼峰命名方式,该值可无) * </p> */ String