欢迎访问昆山宝鼎软件有限公司网站! 设为首页 | 网站地图 | XML | RSS订阅 | 宝鼎邮箱 | 后台管理


新闻资讯

MENU

软件开发知识

String addUser(@Valid @RequestBody UserReq userReq){User use

点击: 次  来源:昆山软开发 时间:2018-08-19

原文出处: oKong

媒介

本章节开始先容数据会见方面的相关常识点。对付后端开拓者而言,劳务派遣管理系统,和数据库打交道是天天都在举办的,所以一个好用的ORM框架是很有须要的。今朝,绝大部门公司都选择MyBatis框架作为底层数据库耐久化框架。

多说几句

看着此刻Mybatis框架的大行其道,让我不禁想起,大学时期,其时照旧hibernate的时代,此刻根基已经健忘了。而其时,Mybatis的前身iBatis还在书中的某个章节呈现过。其时大学老师的意思是:今朝海内根基没有利用iBatis的公司,所以这一章节略过,略,过。。。此刻对这个还影象犹新,看着此刻Mybatis大行其道,不禁令人唏嘘呀。

Mybatis-Plus

Mybatis-Plus(简称MP)是一个 Mybatis 的加强东西,在 Mybatis 的基本上只做加强不做改变,为简化开拓、提高效率而生。

官方网站:http://mp.baomidou.com

简朴来说,Mybatis-PlusMybatis的加强东西包,其简化了CRUD操纵,提供了代码生成器,强大的条件结构器(这是我最喜欢的一个),同时内置了多个实用插件:标配的分页插件、机能阐明插件、全局拦截插件等。使得开拓进程中,根基的范式代码都一句话办理了,省去了许多反复的操纵(措施猿存在的意义呢,说好的让我们搬砖呢!)。

SpringBoot集成

这里选用的mybatis-plus版本为:2.1.9,
mybatisplus-spring-boot-starter版本为:1.0.5。
对应Mybatis版本为:3.4.5

0. 这里以user表为例子,数据库为mysql

DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
  `id` bigint(20) DEFAULT NULL COMMENT '独一标示',
  `code` varchar(20) DEFAULT NULL COMMENT '编码',
  `name` varchar(64) DEFAULT NULL COMMENT '名称',
  `status` char(1) DEFAULT '1' COMMENT '状态 1启用 0 停用',
  `gmt_create` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '建设时间',
  `gmt_modified` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

1. pom依赖:

 <!--mybatis plus -->
<dependency>
	<groupId>com.baomidou</groupId>
	<artifactId>mybatisplus-spring-boot-starter</artifactId>
	<version>1.0.5</version>
</dependency>
<dependency>
	<groupId>com.baomidou</groupId>
	<artifactId>mybatis-plus</artifactId>
	<version>2.1.9</version>
</dependency>

2. 设置文件(虽然也可以直接利用@Bean的方法举办可能通过application设置文件举办,详见官网)
spring-mybatis.xml

 

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">

    <!--建设jdbc数据源 这里直接利用阿里的druid数据库毗连池 -->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close">
        <property name="driverClassName" value="${mysql.driver}"/>
        <property name="url" value="${mysql.url}"/>
        <property name="username" value="${mysql.username}"/>
        <property name="password" value="${mysql.password}"/>
        <!-- 初始化毗连巨细 -->
        <property name="initialSize" value="0"/>
        <!-- 毗连池最大利用毗连数量 -->
        <property name="maxActive" value="20"/>
        <!-- 毗连池最大空闲 -->
        <property name="maxIdle" value="20"/>
        <!-- 毗连池最小空闲 -->
        <property name="minIdle" value="0"/>
        <!-- 获取毗连最大期待时间 -->
        <property name="maxWait" value="60000"/>

        <property name="validationQuery" value="${validationQuery}"/>
        <property name="testOnBorrow" value="false"/>
        <property name="testOnReturn" value="false"/>
        <property name="testWhileIdle" value="true"/>

        <!-- 设置隔断多久才举办一次检测,检测需要封锁的空闲毗连,单元是毫秒 -->
        <property name="timeBetweenEvictionRunsMillis" value="60000"/>
        <!-- 设置一个毗连在池中最小保留的时间,单元是毫秒 -->
        <property name="minEvictableIdleTimeMillis" value="25200000"/>

        <!-- 打开removeAbandoned成果 -->
        <property name="removeAbandoned" value="true"/>
        <!-- 1800秒,也就是30分钟 -->
        <property name="removeAbandonedTimeout" value="1800"/>
        <!-- 封锁abanded毗连时输堕落误日志 -->
        <property name="logAbandoned" value="true"/>

        <!-- 监控数据库 -->
        <property name="filters" value="mergeStat"/>
    </bean>

    <!-- (事务打点)transaction manager, use JtaTransactionManager for global tx -->
    <bean id="transactionManager"
          class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource" />
    </bean>

    <!-- 可通过注解节制事务 -->
    <tx:annotation-driven transaction-manager="transactionManager"/>

    <!--mybatis-->
    <bean id="sqlSessionFactory" class="com.baomidou.mybatisplus.spring.MybatisSqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
		<!-- 自动扫描mapper.xml文件,支持通配符 -->
        <property name="mapperLocations" value="classpath:mapper/**/*.xml"/>
		<!-- 设置文件,好比参数设置(是否启动驼峰等)、插件设置等 -->
        <property name="configLocation" value="classpath:mybatis/mybatis-config.xml"/>
		<!-- 启用别名,这样就无需写全路径类名了,详细可自行查阅资料 -->
        <property name="typeAliasesPackage" value="cn.lqdev.learning.springboot.chapter9.biz.entity"/>
        <!-- MP 全局设置注入 -->
        <property name="globalConfig" ref="globalConfig"/>
    </bean>
    <bean id="globalConfig" class="com.baomidou.mybatisplus.entity.GlobalConfiguration">
        <!--
            AUTO->`0`("数据库ID自增")QW
             INPUT->`1`(用户输入ID")
            ID_WORKER->`2`("全局独一ID")
            UUID->`3`("全局独一ID")
        -->
        <property name="idType" value="3" />
    </bean>
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
	<!-- 自动扫描包路径,接口自动注册为一个bean类 -->
        <property name="basePackage" value="cn.lqdev.learning.springboot.chapter9.biz.dao"/>
    </bean>

</beans>

3. 编写启动类,应用启动时自动加载设置xml文件

/**
 *  mybatisPlus 设置类,使其加载设置文件
 * @author oKong
 *
 */
@Configuration
@ImportResource(locations = {"classpath:/mybatis/spring-mybatis.xml"})
//@MapperScan("cn.lqdev.learning.springboot.chapter9.biz.dao")
//@EnableTransactionManagement
public class MybatisPlusConfig {

}