MyBatis

mybatis支持多数据库切换

泄露秘密 提交于 2020-02-29 06:15:43
使用mybatis时都是用的sqlmapper来做的数据库到java对象的映射,因此在针对一些特定数据库方言使用时无法在多个数据库上切换。 解决方案: mybatis篇 思路: 通过定义environment的id来指定使用不同的数据库映射文件,如下 <!--WizRtf2Html Charset=0 --> [html] view plain copy print ? <? xml version = "1.0" encoding = "UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd" > < configuration > < environments default = "mysql" > < environment id = "mysql" > < transactionManager type = "JDBC" /> < dataSource type = "POOLED" > < property name = "driver" value = "com.mysql.jdbc.Driver" /> < property name = "url" value = "jdbc

构建dubbo分布式平台-maven构建ant-framework核心代码annotation

感情迁移 提交于 2020-02-29 03:41:10
今天重点讲解的是ant-framework核心代码的编写过程。 其中ant-framework是ant分布式框架的基础核心框架,其中包括CRUD,MVC等一系列基类和模板。另外定义了spring,mybatis,wink等底层框架扩展项目,具体内容包括: 1. annotation相关注解:数据签名注解、用户是否走sso登录注解等,今天我们着重讲解一下annotation的编写。 提醒:自定义annotation可以有效的将我们需要注解的类、方法、字段根据业务所需进行定义可配置化。 2. 编写数字签名的annotaion的类,DataSign.java内容如下: package com.sml.sz.common.annotation; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; /** * 数据签名注解 */ @Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) public @interface DataSign { } 3.

idea2019 通过Maven搭建Mybatis环境

喜你入骨 提交于 2020-02-29 02:06:32
黑马程序员Mybatis学习笔记 通过Maven搭建Mybatis环境 1.新建Mysql数据库 1.通过SQLyog新建一个名称为“eesy”的数据库。 2.新建一个“询问” 3.输入以下代码 CREATE TABLE ` user ` ( ` id ` INT ( 11 ) NOT NULL AUTO_INCREMENT , ` username ` VARCHAR ( 32 ) NOT NULL COMMENT '用户名称' , ` birthday ` DATETIME DEFAULT NULL COMMENT '生日' , ` sex ` CHAR ( 1 ) DEFAULT NULL COMMENT '性别' , ` address ` VARCHAR ( 256 ) DEFAULT NULL COMMENT '地址' , PRIMARY KEY ( ` id ` ) ) ENGINE = INNODB DEFAULT CHARSET = utf8 ; 运行后,再输入 INSERT INTO ` user ` ( ` id ` , ` username ` , ` birthday ` , ` sex ` , ` address ` ) VALUES ( 41 , '老王' , '2018-03-07 17:47:08' , '男' , '北京' ) , ( 42 ,

上传多张缩略图(vue+element)

不想你离开。 提交于 2020-02-29 01:45:01
需求:添加商品时,支持上传多张缩略图。 效果: 实现: (1)前端 <el-form-item label="缩略图" prop="thumb"> <span v-for="item in form.thumb"> <el-popover placement="left" title="" trigger="hover" width="600"> <img :src="item"width="100%"/> <img slot="reference" :src="item" :alt="item" style="height: 150px;width: 150px; padding: 3px"> </el-popover> </span> <!--<el-input v-model="form.thumb" placeholder="请选择缩略图"></el-input>--> <el-upload class="upload-demo" action="#" ref="upload" :multiple="true" accept="image/jpeg,image/jpg,image/png" :auto-upload="false" :on-preview="handlePreview" :on-change="handleChange" :on-remove=

Mybatis操作mysql 8的Json字段类型

安稳与你 提交于 2020-02-28 23:41:13
Json字段是从mysql 5.7起加进来的全新的字段类型,现在我们看看在什么情况下使用该字段类型,以及用mybatis如何操作该字段类型 一般来说,在不知道字段的具体数量的时候,使用该字段是非常合适的,比如说——商品的无限属性。 现在我们来假设这么一个场景,在商品的二级分类中给商品定义足够多的属性,我们先设计属性的类 /** * 商品自定义属性 */ @NoArgsConstructor @AllArgsConstructor public class OtherProperty implements Serializable { @Getter @Setter private Long id ; //属性id @Getter @Setter private FormType formType ; //前端使用的表单类型 @Getter @Setter private String name ; //属性名称 @Getter @Setter private String unit ; //单位 @Getter @Setter private String values ; //可选值以@分隔,如配件@车品 @Getter private List<String> valueList = new ArrayList<>() ; //对可选值的取值列表 @Getter @Setter

MyBatis常见面试问题

我是研究僧i 提交于 2020-02-28 22:31:15
一、 JDBC编程有哪些不足之处,Mybatis是如何解决这些问题的? 1) 数据库连接的创建、释放频繁造成系统资源浪费从而影响了性能,如果使用数据库连接池就可以解决这个问题。当然JDBC同样能够使用数据源。 解决:在xml中配置数据连接池,使用数据库连接池管理数据库连接。 2) SQL语句在写代码中不容易维护,事件需求中SQL变化的可能性很大,SQL变动需要改变JAVA代码。 解决:将SQL语句配置在mapper.xml文件中与java代码分离。 3) 向SQL语句传递参数麻烦,因为SQL语句的where条件不一定,可能多,也可能少,占位符需要和参数一一对应。 解决:Mybatis自动将java对象映射到sql语句。 4) 对结果集解析麻烦,sql变化导致解析代码变化,且解析前需要遍历,如果能将数据库记录封装成pojo对象解析比较方便。 解决:Mbatis自动将SQL执行结果映射到java对象。 二、 Mybatis编程步骤 ? Step1:创建SQLSessionFactory Step2:通过SQLSessionFactory创建SQLSession Step3:通过SQLSession执行数据库操作 Step4:调用session.commit()提交事物 Step5:调用session.close()关闭会话 三、 MyBatis与hibernate有哪些不同 ? 1

SpringBoot整合mybatis的mybatis-spring的配置方式

送分小仙女□ 提交于 2020-02-28 22:07:45
我大概是15年初的时候,接触了SpringBoot,不过只开发了一个小项目,就没再使用过。时隔两年,SpringBoot变的热火朝天,我也不得不认真学习一下了,以下个人心得,愿对新手有所帮助。 SpringBoot集成MyBatis有两种方式,一种简单的方式就是使用MyBatis官方提供的: mybatis-spring-boot-starter 另外一种方式也是我推荐的整合方式: 就是仍然用类似mybatis-spring的配置方式,这种方式需要自己写一些代码,但是可以很方便的控制MyBatis的各项配置。 ①:在http://start.spring.io/,配置你的项目信息并下载,我的是《1.5.9.RELEASE》最初的应该如下图: ②:在POM文件中加,整合的最基础的包,包版本你们自己定 <!-- 因为是web应用程序,aop.beans,web,mvc等都不再需要导入了,并自动完成组件配置 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId

MyBaties中resultMap简单入门

眉间皱痕 提交于 2020-02-28 21:59:04
一、简介 resultType可以把查询结果封装到pojo类型中,但必须pojo类的属性名和查询到的数据库表的字段名一致。 如果sql查询到的字段与pojo的属性名不一致,则需要使用resultMap将字段名和属性名对应起来,进行手动配置封装,将结果映射到pojo中。resultMap可以实现将查询结果映射为复杂类型的pojo,比如在查询结果映射对象中包括pojo和list实现一对一查询和一对多查询。 二、简单使用 order订单表:id,user_id,number,createtime,note <!-- 查询所有的订单数据 --> <!-- resultMap:填入配置的resultMap标签的id值 --> <select id="queryOrderAll" resultMap="orderResultMap"> SELECT id, user_id, number, createtime, note FROM `order` </select> <!-- resultMap最终还是要将结果映射到pojo上,type就是指定映射到哪一个pojo --> <!-- id:设置ResultMap的id --> <resultMap id="orderResultMap" type="order"> <!-- 定义主键 ,非常重要。如果是多个字段,则定义多个id --> <!-

MyBatis通用dao和通用service

ぐ巨炮叔叔 提交于 2020-02-28 21:54:12
更新于2015/01/29,增加了第三种方法 ##更新于2015/02/09,第三种方法方法改进,service实现上不需要加泛型 概述: 使用通用dao和通用service可以减少代码的开发。可以将常用的增删改查放到通用dao中。对不同的or框架,基本上都有自己的实现如SpringJPA的Repository就提供了常用的增删改查方法。而MyBatis借助代码生成工具也可以生成常用方法的映射 这里只针对Mybatis。如果使用代码生成工具,会有一个问题:每个Mapper里面都有一些方法(增晒改查)。维护起来的话还好。只是在写service的时候会有一个问题。比如UserMapper里面有 insert(User user) , find(Integer id) , delete(Integer id) 等方法,则在service中也要有这些方法的实现。假设每个Mapper有5个方法。则service也需要有5个方法的实现。如果有10个实体类。mapper可以省略(由生成工具生成),但是service有50个方法。到后期肯定不好进行维护 使用通用Mapper和Service 该通用Mapper使用了Spring-mybatis。所以没有实现类,而是直接调用xml文件中的同名方法。之所以将通用Mapper抽出来主要是为了方便些通用的service 第一种:需要三个泛型,当前实体对象

分布式项目(二)Web Manage 设备数据上行

我们两清 提交于 2020-02-28 21:13:54
上回咋们说了iot-pt的整套结构,接着咋们开始说web manage,web manage是iot-pt提供可视化操作的服务,但是笔者前端功底实在太弱,这里就不打算做页面了,就使用swagger了。 流程说明 用户在web端添加产品,持久化产品数据 根据产品添加属性信息,持久化属性数据,redis缓存属性数据 根据产品创建指令,持久化指令数据 根据产品创建事件,持久化事件数据 根据产品创建设备,持久化设备数据,redis缓存设备数据 结构图 项目搭建 使用idea搭建spring boot iot-pt项目,创建iot-manage模块,笔者这里的spring boot版本是2.1.4,引入swagger,mybatis,pgsql依赖。 构建基础iot-beans模块,用于公用实体类,公用工具类的编写 具体的搭建细节就不在笔者的说明范围之内了哈 模型搭建 这里先实现iot数据的上行,也就是设备上报的业务数据 产品模型 @ApiModel(value = "产品参数") public class ProductDTO { @ApiModelProperty(value = "产品名称") @NotBlank private String name; @ApiModelProperty(value = "设备型号") @NotBlank private String model;