<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          MyBatis 使用手冊(cè)

          共 24814字,需瀏覽 50分鐘

           ·

          2020-12-11 11:05

          上一篇:
          程序員找工作黑名單.pdf

          MyBatis 是一款優(yōu)秀的持久層框架,它支持自定義 SQL、存儲(chǔ)過程以及高級(jí)映射。MyBatis 免除了幾乎所有的 JDBC 代碼以及設(shè)置參數(shù)和獲取結(jié)果集的工作。MyBatis 可以通過簡(jiǎn)單的 XML 或注解來配置和映射原始類型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 對(duì)象)為數(shù)據(jù)庫中的記錄。

          越來越多的企業(yè)已經(jīng)將 MyBatis 使用到了正式的生產(chǎn)環(huán)境,本文就使用 MyBatis 的幾種方式提供簡(jiǎn)單的示例,以及如何對(duì)數(shù)據(jù)庫密碼進(jìn)行加密,目前有以下章節(jié):

          • 單獨(dú)使用 MyBatis
          • 集成 Spring 框架
          • 集成 Spring Boot 框架
          • Spring Boot 配置數(shù)據(jù)庫密碼加密

          1.單獨(dú)使用

          引入 MyBatis 依賴,單獨(dú)使用,版本是3.5.6

          引入依賴


          ????????
          ????????
          ????????????org.mybatis
          ????????????mybatis
          ????????????3.5.6
          ????????

          ????????
          ????????
          ????????????mysql
          ????????????mysql-connector-java
          ????????????8.0.19
          ????????

          ????

          添加mybatis-config.xml

          "1.0"?encoding="UTF-8"??>
          ????????PUBLIC?"-//mybatis.org//DTD?Config?3.0//EN"
          ????????"http://mybatis.org/dtd/mybatis-3-config.dtd">

          ????
          ????
          ????
          ????????
          ????????"cacheEnabled"?value="false"?/>
          ????????
          ????????"multipleResultSetsEnabled"?value="true"?/>
          ????????
          ????????"mapUnderscoreToCamelCase"?value="true"?/>
          ????????
          ????????"localCacheScope"?value="STATEMENT"?/>
          ????

          ????
          ????
          ????????"tk.mybatis.simple.model"?/>
          ????

          ????
          ????"development">
          ????????"development">
          ????????????type="JDBC">
          ????????????????""?value=""/>
          ????????????
          ????????????
          ????????????type="UNPOOLED">
          ????????????????"driver"?value="com.mysql.cj.jdbc.Driver"/>
          ????????????????"url"?value="jdbc:mysql://localhost:3306/gsfy_user?useUnicode=true&characterEncoding=UTF-8&useSSL=false"/>
          ????????????????"username"?value="user"/>
          ????????????????"password"?value="password"/>
          ????????????
          ????????
          ????
          ?
          ????
          ????????"tk.mybatis.simple.mapper"/>
          ????


          開始使用

          Model類

          tk.mybatis.simple.model.DbTest.java
          package?tk.mybatis.simple.model;

          public?class?DbTest?{

          ????public?Integer?id;
          ????public?String?text;

          ????public?Integer?getId()?{
          ????????return?id;
          ????}

          ????public?void?setId(Integer?id)?{
          ????????this.id?=?id;
          ????}

          ????public?String?getText()?{
          ????????return?text;
          ????}

          ????public?void?setText(String?text)?{
          ????????this.text?=?text;
          ????}

          ????@Override
          ????public?String?toString()?{
          ????????return?"DbTest{"?+
          ????????????????"id="?+?id?+
          ????????????????",?text='"?+?text?+?'\''?+
          ????????????????'
          }';
          ????}
          }

          Mapper接口

          tk.mybatis.simple.mapper.DbTestMapper
          package?tk.mybatis.simple.mapper;

          import?tk.mybatis.simple.model.DbTest;

          public?interface?DbTestMapper?{

          ????DbTest?queryById(Integer?id);
          }

          XML映射文件

          XML映射文件請(qǐng)放于Mapper接口所在路徑下,保證名稱相同

          tk/mybatis/simple/mapper/DbTestMapper.xml
          "1.0"?encoding="UTF-8"?>
          "-//mybatis.org//DTD?Mapper?3.0//EN"?"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
          "tk.mybatis.simple.mapper.DbTestMapper">
          ????"queryById"?parameterType="int"?resultType="DbTest">
          ????????SELECT?db_test_id?AS?id,?db_test_text?AS?text
          ????????FROM?db_test
          ????????WHERE?db_test_id?=?#{id,?jdbcType=INTEGER}
          ????

          執(zhí)行示例

          package?tk.mybatis.simple;

          import?org.apache.ibatis.io.Resources;
          import?org.apache.ibatis.session.SqlSession;
          import?org.apache.ibatis.session.SqlSessionFactory;
          import?org.apache.ibatis.session.SqlSessionFactoryBuilder;
          import?tk.mybatis.simple.mapper.DbTestMapper;

          import?java.io.IOException;
          import?java.io.Reader;

          public?class?MyBatisHelper?{

          ????private?static?SqlSessionFactory?sqlSessionFactory;

          ????static?{
          ????????try?{
          ????????????//?MyBatis的配置文件
          ????????????Reader?reader?=?Resources.getResourceAsReader("mybatis-config.xml");
          ????????????//?創(chuàng)建一個(gè)?sqlSessionFactory?工廠類
          ????????????sqlSessionFactory?=?new?SqlSessionFactoryBuilder().build(reader);
          ????????????reader.close();
          ????????}?catch?(IOException?e)?{
          ????????????e.printStackTrace();
          ????????}
          ????}

          ????public?static?SqlSession?getSqlSession()?{
          ????????return?sqlSessionFactory.openSession();
          ????}

          ????public?static?void?main(String[]?args)?{
          ????????//?創(chuàng)建一個(gè)?SqlSession?會(huì)話
          ????????SqlSession?sqlSession?=?MyBatisHelper.getSqlSession();
          ????????//?獲取?DbTestMapper?接口的動(dòng)態(tài)代理對(duì)象
          ????????DbTestMapper?dbTestMapper?=?sqlSession.getMapper(DbTestMapper.class);
          ????????//?執(zhí)行查詢
          ????????System.out.println(dbTestMapper.queryById(1).toString());
          ????}
          }

          2.集成Spring

          在 Spring 項(xiàng)目中,使用 MyBatis 的模板,請(qǐng)注意 Spring 的版本為5.2.10.RELEASE

          日志框架使用Log4j2(推薦),版本為2.13.3,性能高于logback和log4j

          我的項(xiàng)目模板 Git 地址

          工程結(jié)構(gòu)圖

          MyBatis-Spring-Example-Structure
          • 其中jquery.min.js文件可以去官網(wǎng)下載

          引入依賴

          "1.0"?encoding="UTF-8"?>
          "http://maven.apache.org/POM/4.0.0"
          ?????????xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          ?????????xsi:schemaLocation="http://maven.apache.org/POM/4.0.0?http://maven.apache.org/xsd/maven-4.0.0.xsd">
          ????4.0.0
          ????
          ????tk.mybatis.simple
          ????mybatis-spring
          ????war

          ????
          ????????
          ????????3.5.6
          ????????
          ????????2.11.3
          ????????1.8
          ????????UTF-8
          ????


          ????
          ????????
          ????????????
          ????????????????org.springframework
          ????????????????spring-framework-bom
          ????????????????5.2.10.RELEASE
          ????????????????<type>pomtype>
          ????????????????import
          ????????????

          ????????????
          ????????????????org.apache.logging.log4j
          ????????????????log4j-bom
          ????????????????2.13.3
          ????????????????import
          ????????????????<type>pomtype>
          ????????????

          ????????

          ????


          ????
          ????????
          ????????
          ????????????org.mybatis
          ????????????mybatis-spring
          ????????????1.3.2
          ????????

          ????????
          ????????????org.mybatis
          ????????????mybatis
          ????????????${mybatis.version}
          ????????

          ????????
          ????????????mysql
          ????????????mysql-connector-java
          ????????????8.0.19
          ????????

          ????????
          ????????
          ????????????com.alibaba
          ????????????druid
          ????????????1.2.3
          ????????

          ????????
          ????????
          ????????????com.github.pagehelper
          ????????????pagehelper
          ????????????5.2.0
          ????????

          ????????
          ????????????com.github.jsqlparser
          ????????????jsqlparser
          ????????????3.2
          ????????


          ????????
          ????????
          ????????
          ????????????javax.servlet
          ????????????servlet-api
          ????????????2.5
          ????????????provided
          ????????

          ????????
          ????????
          ????????????javax.servlet.jsp
          ????????????jsp-api
          ????????????2.1
          ????????????provided
          ????????

          ????????
          ????????
          ????????????javax.servlet
          ????????????jstl
          ????????????1.2
          ????????


          ????????
          ????????
          ????????????org.springframework
          ????????????spring-context
          ????????

          ????????
          ????????
          ????????????org.springframework
          ????????????spring-jdbc
          ????????

          ????????
          ????????
          ????????????org.springframework
          ????????????spring-tx
          ????????

          ????????
          ????????
          ????????????org.springframework
          ????????????spring-aop
          ????????

          ????????
          ????????
          ????????????org.aspectj
          ????????????aspectjweaver
          ????????????1.8.2
          ????????

          ????????
          ????????
          ????????????javax.annotation
          ????????????javax.annotation-api
          ????????????1.2
          ????????

          ????????
          ????????
          ????????????javax.transaction
          ????????????javax.transaction-api
          ????????????1.2
          ????????


          ????????
          ????????
          ????????????org.springframework
          ????????????spring-web
          ????????

          ????????
          ????????
          ????????????org.springframework
          ????????????spring-webmvc
          ????????

          ????????
          ????????
          ????????????com.fasterxml.jackson.core
          ????????????jackson-databind
          ????????????${jackson.version}
          ????????

          ????????
          ????????????com.fasterxml.jackson.core
          ????????????jackson-core
          ????????????${jackson.version}
          ????????

          ????????
          ????????????com.fasterxml.jackson.core
          ????????????jackson-annotations
          ????????????${jackson.version}
          ????????


          ????????
          ????????
          ????????
          ????????????org.apache.logging.log4j
          ????????????log4j-core
          ????????

          ????????
          ????????????org.apache.logging.log4j
          ????????????log4j-api
          ????????

          ????????
          ????????
          ????????????org.apache.logging.log4j
          ????????????log4j-web
          ????????

          ?????????
          ????????????org.apache.logging.log4j
          ????????????log4j-slf4j-impl
          ????????

          ?????????
          ????????????org.apache.logging.log4j
          ????????????log4j-1.2-api
          ????????

          ?????????
          ????????????org.apache.logging.log4j
          ????????????log4j-jcl
          ????????

          ????????
          ????????
          ????????????org.slf4j
          ????????????slf4j-api
          ????????????1.7.7
          ????????

          ????????
          ????????
          ????????????com.lmax
          ????????????disruptor
          ????????????3.4.2
          ????????

          ????????

          ????????
          ????????
          ????????????commons-fileupload
          ????????????commons-fileupload
          ????????????1.4
          ????????

          ????????
          ????????????commons-io
          ????????????commons-io
          ????????????2.8.0
          ????????

          ????????
          ????????????commons-codec
          ????????????commons-codec
          ????????????1.15
          ????????

          ????


          ????
          ????????study-ssm
          ????????
          ????????????
          ????????????????maven-compiler-plugin
          ????????????????
          ????????????????????<source>1.8source>
          ????????????????????1.8
          ????????????????????UTF-8
          ????????????????

          ????????????

          ????????

          ????????
          ????????????
          ????????????????src/main/java
          ????????????????
          ????????????????????**/*.properties
          ????????????????????**/*.xml
          ????????????????

          ????????????????false
          ????????????

          ????????????
          ????????????????src/main/resources/META-INF/spring
          ????????????????
          ????????????????????spring-mybatis.xml
          ????????????????????spring-mvc.xml
          ????????????????

          ????????????????false
          ????????????

          ????????????
          ????????????????src/main/resources
          ????????????????
          ????????????????????**/*.properties
          ????????????????????**/*.xml
          ????????????????

          ????????????????false
          ????????????

          ????????

          ????



          添加spring-mvc.xml

          "1.0"?encoding="UTF-8"?>
          "http://www.springframework.org/schema/beans"
          ???????xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          ???????xmlns:context="http://www.springframework.org/schema/context"
          ???????xmlns:mvc="http://www.springframework.org/schema/mvc"
          ???????xsi:schemaLocation="http://www.springframework.org/schema/beans
          ???????????????????????????http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
          ???????????????????????????http://www.springframework.org/schema/context
          ???????????????????????????http://www.springframework.org/schema/context/spring-context-3.1.xsd
          ???????????????????????????http://www.springframework.org/schema/mvc
          ???????????????????????????http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd"
          >
          ????
          ????"tk.mybatis.simple"?/>

          ????
          ????"mappingJacksonHttpMessageConverter"
          ??????????class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
          ????????"supportedMediaTypes">
          ????????????
          ????????????????text/html;charset=UTF-8
          ????????????

          ????????
          ????
          ????
          ????"org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter?">
          ????????"messageConverters">
          ????????????
          ????????????????"mappingJacksonHttpMessageConverter"?/>?
          ????????????

          ????????
          ????

          ????
          ????"multipartResolver"?class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
          ????????
          ????????"defaultEncoding"?value="utf-8"?/>
          ????????
          ????????"maxUploadSize"?value="104857600"?/>
          ????????
          ????????"maxInMemorySize"?value="40960"?/>
          ????????
          ????????"resolveLazily"?value="true"/>
          ????

          ????
          ????"org.springframework.web.accept.ContentNegotiationManagerFactoryBean">
          ????????"favorParameter"?value="true"?/>
          ????????"parameterName"?value="format"/>
          ????????"ignoreAcceptHeader"?value="true"?/>
          ????????"mediaTypes">
          ????????????
          ????????????????
          ????????????????json=application/json
          ????????????????xml=application/xml
          ????????????????html=text/html
          ????????????

          ????????
          ????????"defaultContentType"?value="text/html"?/>

          ????

          ????
          ????"org.springframework.web.servlet.view.InternalResourceViewResolver">
          ????????
          ????????"prefix"?value="/WEB-INF/jsp/"?/>
          ????????"suffix"?value=".jsp"?/>
          ????

          ????
          ????
          ????
          ????
          ????
          ????"static/"?mapping="/static/**"/>


          添加mybatis-config.xml

          "1.0"?encoding="UTF-8"??>
          ????????PUBLIC?"-//mybatis.org//DTD?Config?3.0//EN"
          ????????"http://mybatis.org/dtd/mybatis-3-config.dtd">

          ?
          ?
          ?
          ??
          ??"cacheEnabled"?value="false"?/>
          ??
          ??"localCacheScope"?value="STATEMENT"?/>
          ??
          ??
          ??"lazyLoadingEnabled"?value="true"?/>
          ??
          ??
          ??"aggressiveLazyLoading"?value="false"?/>
          ??
          ??"useColumnLabel"?value="true"?/>
          ??
          ??"useGeneratedKeys"?value="false"?/>
          ??
          ??"mapUnderscoreToCamelCase"?value="true"?/>
          ?

          ?
          ?
          ??"tk.mybatis.simple.model"?/>
          ?

          ?
          ??
          ??"com.github.pagehelper.PageInterceptor">
          ???
          ???"helperDialect"?value="mysql"/>
          ???
          ???"offsetAsPageNum"?value="true"?/>
          ???
          ???"rowBoundsWithCount"?value="true"?/>
          ???
          ???"pageSizeZero"?value="true"?/>
          ??
          ?


          添加spring-mybatis.xml

          "1.0"?encoding="UTF-8"?>
          "http://www.springframework.org/schema/beans"
          ???????xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          ???????xmlns:tx="http://www.springframework.org/schema/tx"?xmlns:aop="http://www.springframework.org/schema/aop"
          ???????xsi:schemaLocation="http://www.springframework.org/schema/beans
          ????????????????????????http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
          ????????????????????????http://www.springframework.org/schema/tx
          ????????????????????????http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
          ????????????????????????http://www.springframework.org/schema/aop
          ????????????????????????https://www.springframework.org/schema/aop/spring-aop.xsd"
          >
          ????
          ????"dataSource"?class="com.alibaba.druid.pool.DruidDataSource"
          ??????????init-method="init"?destroy-method="close">
          ????????"url"?value="jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8"/>
          ????????"driverClassName"?value="com.mysql.cj.jdbc.Driver"/>
          ????????"username"?value="root"/>
          ????????"password"?value="password"/>
          ????????"filters"?value="stat,log4j,wall"/>
          ????????
          ????????"maxActive"?value="20"/>
          ????????"minIdle"?value="20"/>
          ????????
          ????????"initialSize"?value="5"/>
          ????????
          ????????"maxWait"?value="10000"/>
          ????????
          ????????"timeBetweenEvictionRunsMillis"?value="3600000"/>
          ????????
          ????????"minEvictableIdleTimeMillis"?value="120000"/>
          ????????"testWhileIdle"?value="true"/>
          ????????"testOnBorrow"?value="false"/>
          ????

          ????
          ????"mySqlSessionFactory"?class="org.mybatis.spring.SqlSessionFactoryBean">
          ????????"dataSource"?ref="dataSource"/>
          ????????
          ????????"configLocation"?value="classpath:mybatis-config.xml"/>
          ????????
          ????????"mapperLocations"?value="classpath:tk/mybatis/simple/mapper/*.xml"/>
          ????

          ????
          ????"org.mybatis.spring.mapper.MapperScannerConfigurer">
          ????????
          ????????"basePackage"?value="tk.mybatis.simple.mapper"/>
          ????????
          ????????"sqlSessionFactoryBeanName"?value="mySqlSessionFactory"/>
          ????

          ????
          ????"txManager"?class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
          ????????
          ????????"dataSource"?ref="dataSource"/>
          ????
          ????
          ????"txManager"/>

          ????
          ????"transactionAdvice"?transaction-manager="txManager">
          ????????
          ????????????"insert*"?rollback-for="java.lang.Exception"/>
          ????????????"delete*"?rollback-for="java.lang.Exception"/>
          ????????????"update*"?rollback-for="java.lang.Exception"/>
          ????????????"*"?read-only="true"/>
          ????????

          ????
          ????
          ????
          ????????"transactionAdvice"?pointcut="execution(*?tk.mybatis.*.service..*Service*.*(..))"/>
          ????

          ????


          添加log4j2.xml

          "1.0"?encoding="UTF-8"?>
          "INFO"?monitorInterval="30">
          ????
          ????????
          ????????
          ????????"Console"?target="SYSTEM_OUT">
          ????????????
          ????????????"INFO"?onMatch="ACCEPT"?onMismatch="DENY"/>
          ????????????
          ????????????"%d{yyyy-MM-dd?HH:mm:ss,SSS}:%4p?%t?(%F:%L)?-?%m%n"/>
          ????????
          ????????
          ????????"RollingFile"?fileName="logs/trace.log"
          ?????????????????????append="true"?filePattern="logs/$${date:yyyy-MM}/trace-%d{yyyy-MM-dd}-%i.log.gz">
          ????????????
          ????????????"INFO"?onMatch="ACCEPT"?onMismatch="DENY"/>
          ???
          ????????????"%d{yyyy-MM-dd?HH:mm:ss,SSS}:%4p?%t?(%F:%L)?-?%m%n"/>
          ????????????
          ????????????????
          ????????????????"100?MB"/>
          ????????????

          ????????
          ??
          ????????"RollingErrorFile"?fileName="logs/error.log"
          ?????????????????????append="true"?filePattern="logs/$${date:yyyy-MM}/error-%d{yyyy-MM-dd}-%i.log.gz">
          ???
          ????????????"WARN"?onMatch="ACCEPT"?onMismatch="DENY"/>
          ???
          ????????????"%d{yyyy-MM-dd?HH:mm:ss,SSS}:%4p?%t?(%F:%L)?-?%m%n"/>
          ????????????
          ????????????????
          ????????????????"100?MB"/>
          ????????????

          ????????
          ????

          ????
          ????????
          ????????"org.springframework"?level="INFO"/>
          ????????"org.mybatis"?level="INFO"/>
          ????????"INFO"?includeLocation="true">
          ????????????"Console"/>
          ????????????"RollingFile"/>
          ????????????"RollingErrorFile"/>
          ????????
          ????


          添加web.xml

          "1.0"?encoding="UTF-8"?>
          "http://www.w3.org/2001/XMLSchema-instance"
          ?????????xmlns="http://java.sun.com/xml/ns/javaee"
          ?????????xsi:schemaLocation="http://java.sun.com/xml/ns/javaee?http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
          ?????????version="3.0">
          ????Archetype?Created?Web?Application

          ????
          ????
          ????????contextConfigLocation
          ????????classpath:spring-mybatis.xml
          ????


          ????
          ????
          ????????encodingFilter
          ????????org.springframework.web.filter.CharacterEncodingFilter
          ????????true
          ????????
          ????????????encoding
          ????????????UTF-8
          ????????

          ????????
          ????????????forceEncoding
          ????????????true
          ????????

          ????

          ????
          ????????encodingFilter
          ????????/*
          ????


          ????
          ????
          ????
          ????????org.springframework.web.context.ContextLoaderListener
          ????

          ????
          ????
          ????????org.springframework.web.util.IntrospectorCleanupListener
          ????


          ????
          ????
          ????????
          ????????SpringMVC
          ????????org.springframework.web.servlet.DispatcherServlet
          ????????
          ????????
          ????????????contextConfigLocation
          ????????????classpath:spring-mvc.xml
          ????????

          ????????
          ????????1
          ????????true
          ????

          ????
          ????????
          ????????SpringMVC
          ????????
          ????????/
          ????



          ????
          ????????
          ????????index.jsp
          ????



          開始使用

          Model類

          tk.mybatis.simple.model.DbTest.java
          package?tk.mybatis.simple.model;

          public?class?DbTest?{

          ????public?Integer?id;
          ????public?String?text;

          ????public?Integer?getId()?{
          ????????return?id;
          ????}

          ????public?void?setId(Integer?id)?{
          ????????this.id?=?id;
          ????}

          ????public?String?getText()?{
          ????????return?text;
          ????}

          ????public?void?setText(String?text)?{
          ????????this.text?=?text;
          ????}

          ????@Override
          ????public?String?toString()?{
          ????????return?"DbTest{"?+
          ????????????????"id="?+?id?+
          ????????????????",?text='"?+?text?+?'\''?+
          ????????????????'
          }';
          ????}
          }

          Mapper接口

          tk.mybatis.simple.mapper.DbTestMapper
          package?tk.mybatis.simple.mapper;

          import?tk.mybatis.simple.model.DbTest;

          public?interface?DbTestMapper?{

          ????DbTest?queryById(Integer?id);
          }

          XML映射文件

          XML映射文件請(qǐng)放于Mapper接口所在路徑下,保證名稱相同

          tk/mybatis/simple/mapper/DbTestMapper.xml
          "1.0"?encoding="UTF-8"?>
          "-//mybatis.org//DTD?Mapper?3.0//EN"?"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
          "tk.mybatis.simple.mapper.DbTestMapper">
          ????"queryById"?parameterType="int"?resultType="DbTest">
          ????????SELECT?db_test_id?AS?id,?db_test_text?AS?text
          ????????FROM?db_test
          ????????WHERE?db_test_id?=?#{id,?jdbcType=INTEGER}
          ????

          Controller類

          package?tk.mybatis.simple.controller;

          import?org.apache.logging.log4j.LogManager;
          import?org.apache.logging.log4j.Logger;
          import?org.springframework.beans.factory.annotation.Autowired;
          import?org.springframework.stereotype.Controller;
          import?org.springframework.web.bind.annotation.GetMapping;
          import?org.springframework.web.bind.annotation.RequestMapping;
          import?org.springframework.web.bind.annotation.RequestParam;
          import?org.springframework.web.servlet.ModelAndView;
          import?tk.mybatis.simple.mapper.DbTestMapper;
          import?tk.mybatis.simple.model.DbTest;

          @Controller
          @RequestMapping(value?=?"/test")
          public?class?DbTestController?{

          ????private?static?final?Logger?logger?=?LogManager.getLogger(DbTestController.class);

          ????@Autowired
          ????private?DbTestMapper?dbTestMapper;

          ????@GetMapping("/")
          ????public?String?index()?{
          ????????return?"welcome";
          ????}

          ????@GetMapping("/query")
          ????public?ModelAndView?query(@RequestParam("id")?Integer?id)?{
          ????????DbTest?dbTest?=?dbTestMapper.queryById(id);
          ????????logger.info("入?yún)ⅲ簕},查詢結(jié)果:{}",?id,?dbTest.toString());
          ????????ModelAndView?mv?=?new?ModelAndView();
          ????????mv.setViewName("result");
          ????????mv.addObject("test",?dbTest);
          ????????return?mv;
          ????}
          }

          index.jsp

          <%@?taglib?prefix="c"?uri="http://java.sun.com/jsp/jstl/core"?%>
          <%@?page?contentType="text/html;charset=UTF-8"?language="java"?%>
          "zh-CN">

          ????"utf-8">
          ????"X-UA-Compatible"?content="IE=edge">
          ????"viewport"?content="width=device-width,?initial-scale=1">
          ????首頁


          Hello?World!


          "get"?action="/test/"/>">
          ????"btn?btn-default"
          ?type="submit">
          ????????開始測(cè)試
          ????



          welcome.jsp

          <%--
          ??Created?by?IntelliJ?IDEA.
          ??User:?jingp
          ??Date:?2019/6/5
          ??Time:?15:17
          ??To?change?this?template?use?File?|?Settings?|?File?Templates.
          --%>
          <%@?taglib?prefix="c"?uri="http://java.sun.com/jsp/jstl/core"?%>
          <%@?page?contentType="text/html;charset=UTF-8"?language="java"?%>
          "zh-CN">

          ????"utf-8">
          ????"X-UA-Compatible"?content="IE=edge">
          ????"viewport"?content="width=device-width,?initial-scale=1">
          ????查詢



          查詢數(shù)據(jù)庫


          "get"?action="/test/query"/>">
          ????"input-group"
          >
          ????????"input-group-addon">ID:
          ????????type="number"?name="id"?class="form-control"?required>
          ????

          ????"btn?btn-default"?type="submit">
          ????????查詢
          ????





          result.jsp

          <%@?taglib?prefix="c"?uri="http://java.sun.com/jsp/jstl/core"?%>
          <%@?page?contentType="text/html;charset=UTF-8"?language="java"?%>
          "zh-CN">

          ????"utf-8">
          ????"X-UA-Compatible"?content="IE=edge">
          ????"viewport"?content="width=device-width,?initial-scale=1">
          ????結(jié)果


          查詢結(jié)果:${test.toString()}


          "post"?action="/"/>">
          ????"btn?btn-default"
          ?type="submit">
          ????????退出
          ????





          運(yùn)行程序

          配置好Tomcat,然后啟動(dòng)就可以了,進(jìn)入頁面,點(diǎn)擊開始測(cè)試,然后查詢數(shù)據(jù)庫就可以通過MyBatis操作數(shù)據(jù)庫了

          3.集成SpringBoot

          引入依賴

          "1.0"?encoding="UTF-8"?>
          "http://maven.apache.org/POM/4.0.0"
          ?????????xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          ?????????xsi:schemaLocation="http://maven.apache.org/POM/4.0.0?http://maven.apache.org/xsd/maven-4.0.0.xsd">
          ????
          ????????org.springframework.boot
          ????????spring-boot-starter-parent
          ????????2.0.3.RELEASE
          ????

          ????4.0.0
          ????
          ????tk.mybatis.simple
          ????mybatis-spring-boot
          ????jar

          ????
          ????????1.8
          ????????UTF-8
          ????


          ????
          ????????
          ????????????
          ????????????????org.apache.logging.log4j
          ????????????????log4j-bom
          ????????????????2.13.3
          ????????????????import
          ????????????????<type>pomtype>
          ????????????

          ????????

          ????


          ????
          ????????
          ????????
          ????????????org.springframework.boot
          ????????????spring-boot-starter
          ????????????
          ????????????????
          ????????????????????org.springframework.boot
          ????????????????????spring-boot-starter-logging
          ????????????????

          ????????????

          ????????

          ????????
          ????????
          ????????????org.springframework.boot
          ????????????spring-boot-starter-web
          ????????

          ????????
          ????????
          ????????????org.springframework.boot
          ????????????spring-boot-starter-test
          ????????????test
          ????????


          ????????
          ????????
          ????????????org.projectlombok
          ????????????lombok
          ????????????1.16.22
          ????????????provided
          ????????


          ????????
          ????????
          ????????????org.mybatis.spring.boot
          ????????????mybatis-spring-boot-starter
          ????????????2.1.4
          ????????

          ????????
          ????????????mysql
          ????????????mysql-connector-java
          ????????????8.0.19
          ????????

          ????????
          ????????
          ????????????com.alibaba
          ????????????druid-spring-boot-starter
          ????????????1.2.3
          ????????

          ????????
          ????????
          ????????????com.github.pagehelper
          ????????????pagehelper-spring-boot-starter
          ????????????1.3.0
          ????????


          ????????
          ????????
          ????????
          ????????????org.apache.logging.log4j
          ????????????log4j-core
          ????????

          ????????
          ????????????org.apache.logging.log4j
          ????????????log4j-api
          ????????

          ????????
          ????????
          ????????????org.apache.logging.log4j
          ????????????log4j-web
          ????????

          ?????????
          ????????????org.apache.logging.log4j
          ????????????log4j-slf4j-impl
          ????????

          ?????????
          ????????????org.apache.logging.log4j
          ????????????log4j-1.2-api
          ????????

          ?????????
          ????????????org.apache.logging.log4j
          ????????????log4j-jcl
          ????????

          ????????
          ????????
          ????????????org.slf4j
          ????????????slf4j-api
          ????????????1.7.7
          ????????

          ????????
          ????????
          ????????????com.lmax
          ????????????disruptor
          ????????????3.4.2
          ????????

          ????????

          ????????
          ????????
          ????????????com.alibaba
          ????????????fastjson
          ????????????1.2.54
          ????????

          ????


          ????
          ????????basic
          ????????
          ????????
          ????????????
          ????????????
          ????????????
          ????????????????org.codehaus.mojo
          ????????????????appassembler-maven-plugin
          ????????????????1.10
          ????????????????
          ????????????????????
          ????????????????????
          ????????????????????????unix
          ????????????????????????windows
          ????????????????????

          ????????????????????
          ????????????????????lib
          ????????????????????
          ????????????????????flat
          ????????????????????
          ????????????????????conf
          ????????????????????
          ????????????????????true
          ????????????????????
          ????????????????????src/main/resources
          ????????????????????true
          ????????????????????
          ????????????????????${project.build.directory}/basic-assemble
          ????????????????????
          ????????????????????????
          ????????????????????????????
          ????????????????????????????com.fullmoon.study.Application
          ????????????????????????????
          ????????????????????????????basic
          ????????????????????????????
          ????????????????????????????
          ????????????????????????????????
          ????????????????????????????????????
          ????????????????????????????????????-XX:+HeapDumpOnOutOfMemoryError
          ????????????????????????????????????-XX:HeapDumpPath=/app/dump
          ????????????????????????????????????-Xmx512m
          ????????????????????????????????????-Xms512m
          ????????????????????????????????

          ????????????????????????????

          ????????????????????????

          ????????????????????

          ????????????????

          ????????????

          ????????????
          ????????????
          ????????????????org.apache.maven.plugins
          ????????????????maven-compiler-plugin
          ????????????????
          ????????????????????<source>1.8source>
          ????????????????????1.8
          ????????????????

          ????????????

          ????????

          ????????
          ????????
          ????????????
          ????????????????src/main/resources
          ????????????????
          ????????????????????*.properties
          ????????????????????*.xml
          ????????????????????*.yml
          ????????????????

          ????????????????false
          ????????????

          ????????????
          ????????????????src/main/resources/mapper
          ????????????????mapper/
          ????????????????
          ????????????????????*.xml
          ????????????????

          ????????????????false
          ????????????

          ????????

          ????



          添加mybatis-config.xml

          MyBatis 的配置文件

          "1.0"?encoding="UTF-8"??>
          ????????PUBLIC?"-//mybatis.org//DTD?Config?3.0//EN"
          ????????"http://mybatis.org/dtd/mybatis-3-config.dtd">

          ?
          ?
          ?
          ??
          ??"cacheEnabled"?value="false"?/>
          ??
          ??"localCacheScope"?value="STATEMENT"?/>
          ??
          ??
          ??"lazyLoadingEnabled"?value="true"?/>
          ??
          ??
          ??"aggressiveLazyLoading"?value="false"?/>
          ??
          ??"useColumnLabel"?value="true"?/>
          ??
          ??"useGeneratedKeys"?value="false"?/>
          ??
          ??"mapUnderscoreToCamelCase"?value="true"?/>
          ?


          添加application.yml

          Spring Boot 的配置文件

          server:
          ??port:?9092
          ??servlet:
          ????context-path:?/mybatis-spring-boot-demo
          ??tomcat:
          ????accept-count:?200
          ????min-spare-threads:?200
          spring:
          ??application:
          ????name:?mybatis-spring-boot-demo
          ??profiles:
          ????active:?test
          ??servlet:
          ????multipart:
          ??????max-file-size:?100MB
          ??????max-request-size:?100MB
          ??datasource:
          ????type:?com.alibaba.druid.pool.DruidDataSource
          ????druid:
          ??????driver-class-name:?com.mysql.cj.jdbc.Driver?#?不配置則會(huì)根據(jù)?url?自動(dòng)識(shí)別
          ??????initial-size:?5?#?初始化時(shí)建立物理連接的個(gè)數(shù)
          ??????min-idle:?20?#?最小連接池?cái)?shù)量
          ??????max-active:?20?#?最大連接池?cái)?shù)量
          ??????max-wait:?10000?#?獲取連接時(shí)最大等待時(shí)間,單位毫秒
          ??????validation-query:?SELECT?1?#?用來檢測(cè)連接是否有效的?sql
          ??????test-while-idle:?true?#?申請(qǐng)連接的時(shí)候檢測(cè),如果空閑時(shí)間大于?timeBetweenEvictionRunsMillis,則執(zhí)行?validationQuery?檢測(cè)連接是否有效
          ??????test-on-borrow:?false?#?申請(qǐng)連接時(shí)執(zhí)行?validationQuery?檢測(cè)連接是否有效
          ??????min-evictable-idle-time-millis:?120000?#?連接保持空閑而不被驅(qū)逐的最小時(shí)間,單位是毫秒
          ??????time-between-eviction-runs-millis:?3600000?#?配置間隔多久才進(jìn)行一次檢測(cè),檢測(cè)需要關(guān)閉的空閑連接,單位是毫秒
          ??????filters:?stat,log4j,wall?#?配置過濾器,stat-監(jiān)控統(tǒng)計(jì),log4j-日志,wall-防御?SQL?注入
          ??????connection-properties:?'druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000'?#?StatFilter配置,打開合并?SQL?功能和慢?SQL?記錄
          ??????web-stat-filter:?#?WebStatFilter?配置
          ????????enabled:?true
          ????????url-pattern:?'/*'
          ????????exclusions:?'*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*'
          ??????stat-view-servlet:?#?StatViewServlet?配置
          ????????enabled:?true
          ????????url-pattern:?'/druid/*'
          ????????reset-enable:?false
          ????????login-username:?druid
          ????????login-password:?druid
          ??????aop-patterns:?'com.fullmoon.study.service.*'?#?Spring?監(jiān)控配置
          mybatis:
          ??type-aliases-package:?tk.mybatis.simple.model
          ??mapper-locations:?classpath:mapper/*.xml
          ??config-location:?classpath:mybatis-config.xml
          pagehelper:
          ??helper-dialect:?mysql
          ??reasonable:?true?#?分頁合理化參數(shù)
          ??offset-as-page-num:?true?#?將?RowBounds?中的?offset?參數(shù)當(dāng)成?pageNum?使用
          ??supportMethodsArguments:?true?#?支持通過?Mapper?接口參數(shù)來傳遞分頁參數(shù)
          #?測(cè)試環(huán)境
          ---
          spring:
          ??profiles:?test
          ??datasource:
          ????druid:
          ??????url:?jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8
          ??????username:?root
          ??????password:?password

          注意上面 mybatis 的相關(guān)配置,XML 映射文件是存放于 classpath 下的 mapper 文件夾下面的

          添加log4j2.xml

          "1.0"?encoding="UTF-8"?>
          "INFO"?monitorInterval="30">
          ?
          ??
          ??
          ??"Console"?target="SYSTEM_OUT">
          ???
          ???"INFO"?onMatch="ACCEPT"?onMismatch="DENY"/>
          ???
          ???"%d{yyyy-MM-dd?HH:mm:ss,SSS}:%4p?%t?(%F:%L)?-?%m%n"/>
          ??
          ??
          ??"RollingFile"?fileName="logs/trace.log"
          ??????append="true"?filePattern="logs/$${date:yyyy-MM}/trace-%d{yyyy-MM-dd}-%i.log.gz">
          ???
          ???"INFO"?onMatch="ACCEPT"?onMismatch="DENY"/>
          ???
          ???"%d{yyyy-MM-dd?HH:mm:ss,SSS}:%4p?%t?(%F:%L)?-?%m%n"/>
          ???
          ????
          ????"100?MB"/>
          ???

          ??
          ??
          ??"RollingErrorFile"?fileName="logs/error.log"
          ??????append="true"?filePattern="logs/$${date:yyyy-MM}/error-%d{yyyy-MM-dd}-%i.log.gz">
          ???
          ???"WARN"?onMatch="ACCEPT"?onMismatch="DENY"/>
          ???
          ???"%d{yyyy-MM-dd?HH:mm:ss,SSS}:%4p?%t?(%F:%L)?-?%m%n"/>
          ???
          ????
          ????"100?MB"/>
          ???

          ??
          ?

          ?
          ??
          ??"org.springframework"?level="INFO"/>
          ??"org.mybatis"?level="INFO"/>
          ??"INFO"?includeLocation="true">
          ???"Console"/>
          ???"RollingFile"/>
          ???"RollingErrorFile"/>
          ??
          ?


          開始使用

          在 Spring Boot 項(xiàng)目的啟動(dòng)類上面添加 @MapperScan("tk.mybatis.simple.mapper") 注解,指定 Mapper 接口所在的包路徑,啟動(dòng)類如下:

          @SpringBootApplication
          @EnableTransactionManagement
          @MapperScan("tk.mybatis.simple.mapper")
          public?class?Application?{
          ????public?static?void?main(String[]?args){
          ????????SpringApplication.run(Application.class,?args);
          ????}
          }

          然后在 classpath 下的 mapper 文件夾(根據(jù) application.yml 配置文件中的定義)添加 XML 映射文件,即可開始使用 MyBatis了

          其中 @EnableTransactionManagement 注解表示開啟事務(wù)的支持(@SpringBootApplication 注解在加載容器的時(shí)候已經(jīng)開啟事務(wù)管理的功能了,也可不需要添加該注解)

          在需要事務(wù)的方法或者類上面添加 @Transactional 注解即可,引入spring-boot-starter-jdbc依賴,注入的是 DataSourceTransactionManager 事務(wù)管理器,事務(wù)的使用示例如下:

          @Transactional(propagation?=?Propagation.REQUIRED,?rollbackFor?=?Exception.class)
          public?int?insertFeedback(UserFeedbackInfo?requestAddParam)?{
          ????try?{
          ????????//?...?業(yè)務(wù)邏輯?
          ????}?catch?(Exception?e)?{
          ????????//?事務(wù)回滾
          ????????TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
          ????????return?0;
          ????}
          }

          4.SpringBoot配置數(shù)據(jù)庫密碼加密?

          4.1 借助Druid數(shù)據(jù)源

          Druid 數(shù)據(jù)源支持?jǐn)?shù)據(jù)庫密碼進(jìn)行加密,在 Spring Boot 中配置方式如下:

          加密數(shù)據(jù)庫密碼,通過 Druid 的 com.alibaba.druid.filter.config.ConfigTools 工具類對(duì)數(shù)據(jù)庫密碼進(jìn)行加密(RSA 算法),如下:

          public?static?void?main(String[]?args)?throws?Exception?{
          ????ConfigTools.main(new?String[]{"you_password"});
          }

          或者執(zhí)行以下命令:

          java?-cp?druid-1.0.16.jar?com.alibaba.druid.filter.config.ConfigTools?you_password

          輸出:

          privateKey:MIIBVgIBADANBgkqhkiG9w0BAQEFAASCAUAwggE8AgEAAkEA6+4avFnQKP+O7bu5YnxWoOZjv3no4aFV558HTPDoXs6EGD0HP7RzzhGPOKmpLQ1BbA5viSht+aDdaxXp6SvtMQIDAQABAkAeQt4fBo4SlCTrDUcMANLDtIlax/I87oqsONOg5M2JS0jNSbZuAXDv7/YEGEtMKuIESBZh7pvVG8FV531/fyOZAiEA+POkE+QwVbUfGyeugR6IGvnt4yeOwkC3bUoATScsN98CIQDynBXC8YngDNwZ62QPX+ONpqCel6g8NO9VKC+ETaS87wIhAKRouxZL38PqfqV/WlZ5ZGd0YS9gA360IK8zbOmHEkO/AiEAsES3iuvzQNYXFL3x9Tm2GzT1fkSx9wx+12BbJcVD7AECIQCD3Tv9S+AgRhQoNcuaSDNluVrL/B/wOmJRLqaOVJLQGg==
          publicKey:MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAOvuGrxZ0Cj/ju27uWJ8VqDmY7956OGhVeefB0zw6F7OhBg9Bz+0c84RjzipqS0NQWwOb4kobfmg3WsV6ekr7TECAwEAAQ==
          password:PNak4Yui0+2Ft6JSoKBsgNPl+A033rdLhFw+L0np1o+HDRrCo9VkCuiiXviEMYwUgpHZUFxb2FpE0YmSguuRww==

          然后在 application.yml 中添加以下配置:

          spring:
          ??datasource:
          ????druid:
          ??????password:?${password}?#?加密后的數(shù)據(jù)庫密碼
          ??????filters:?config?#?配置?ConfigFilter?,通過它進(jìn)行解密
          ??????#?提示需要對(duì)數(shù)據(jù)庫密碼進(jìn)行解密
          ??????connection-properties:?'config.decrypt=true;config.decrypt.key=${publickey}'
          publicKey:?MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAJvQUB7pExzbzTpaQCCY5qS+86MgYWvRpqPUCzjFwdMgrBjERE5X5oojSe48IGZ6UtCCeaI0PdhkFoNaJednaqMCAwEAAQ==

          這樣就OK了,主要是在 ConfigFilter 過濾器中,會(huì)先對(duì)密碼進(jìn)行解密,然后再設(shè)置到 DataSource 數(shù)據(jù)源

          4.2 借助Jasypt加密包

          Jasypt是一個(gè) Java 庫,可以讓開發(fā)人員將基本的加密功能添加到項(xiàng)目中,而無需對(duì)加密的工作原理有深入的了解

          接下來講述的在 Spring Boot 項(xiàng)目中如何使用Jasypt,其他使用方法請(qǐng)參考Jasypt Github地址

          引入依賴



          ????com.github.ulisesbocchio
          ????jasypt-spring-boot-starter
          ????3.0.3

          添加注解

          在啟動(dòng)類上面添加@EnableEncryptableProperties注解,使整個(gè) Spring 環(huán)境啟用 Jasypt 加密功能,如下:

          @SpringBootApplication
          @EnableEncryptableProperties
          public?class?Application?{
          ????public?static?void?main(String[]?args){
          ????????SpringApplication.run(Application.class,?args);
          ????}
          }

          獲取密文

          需要通過 Jasypt 官方提供的 jar 包進(jìn)行加密,如下:

          import?com.ulisesbocchio.jasyptspringboot.properties.JasyptEncryptorConfigurationProperties;
          import?org.jasypt.encryption.pbe.PooledPBEStringEncryptor;
          import?org.jasypt.encryption.pbe.config.PBEConfig;
          import?org.jasypt.encryption.pbe.config.SimpleStringPBEConfig;

          /**
          ?*?@author?jingping.liu
          ?*?@date?2020-11-20
          ?*?@description?Jasypt?安全框架加密類工具包
          ?*/
          public?class?JasyptUtils?{

          ????/**
          ?????*?生成一個(gè)?{@link?PBEConfig}?配置對(duì)象
          ?????*?


          ?????*?注意!!!
          ?????*?可查看?Jasypt?全局配置對(duì)象?{@link?JasyptEncryptorConfigurationProperties}?中的默認(rèn)值
          ?????*?這里的配置建議與默認(rèn)值保持一致,否則需要在?application.yml?中定義這里的配置(也可以通過?JVM?參數(shù)的方法)
          ?????*?注意?password?和?algorithm?配置項(xiàng),如果不一致在啟動(dòng)時(shí)可能會(huì)解密失敗而報(bào)錯(cuò)
          ?????*
          ?????*?@param?salt?鹽值
          ?????*?@return?SimpleStringPBEConfig?加密配置
          ?????*/
          ????private?static?SimpleStringPBEConfig?generatePBEConfig(String?salt)?{
          ????????SimpleStringPBEConfig?config?=?new?SimpleStringPBEConfig();
          ????????//?設(shè)置?salt?鹽值
          ????????config.setPassword(salt);
          ????????//?設(shè)置要?jiǎng)?chuàng)建的加密程序池的大小,這里僅臨時(shí)創(chuàng)建一個(gè),設(shè)置?1?即可
          ????????config.setPoolSize("1");
          ????????//?設(shè)置加密算法,?此算法必須由?JCE?提供程序支持,默認(rèn)值?PBEWITHHMACSHA512ANDAES_256
          ????????config.setAlgorithm("PBEWithMD5AndDES");
          ????????//?設(shè)置應(yīng)用于獲取加密密鑰的哈希迭代次數(shù)
          ????????config.setKeyObtentionIterations("1000");
          ????????//?設(shè)置要請(qǐng)求加密算法的安全提供程序的名稱
          ????????config.setProviderName("SunJCE");
          ????????//?設(shè)置?salt?鹽的生成器
          ????????config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator");
          ????????//?設(shè)置?IV?生成器
          ????????config.setIvGeneratorClassName("org.jasypt.iv.RandomIvGenerator");
          ????????//?設(shè)置字符串輸出的編碼形式,支持?base64?和?hexadecimal
          ????????config.setStringOutputType("base64");
          ????????return?config;
          ????}

          ????/**
          ?????*?通過?{@link?PooledPBEStringEncryptor}?進(jìn)行加密密
          ?????*
          ?????*?@param?salt?鹽值
          ?????*?@param?message?需要加密的內(nèi)容
          ?????*?@return?加密后的內(nèi)容
          ?????*/
          ????public?static?String?encrypt(String?salt,?String?message)?{
          ????????PooledPBEStringEncryptor?encryptor?=?new?PooledPBEStringEncryptor();
          ????????SimpleStringPBEConfig?pbeConfig?=?generatePBEConfig(salt);
          ????????//?生成加密配置
          ????????encryptor.setConfig(pbeConfig);
          ????????System.out.println("----ARGUMENTS-------------------");
          ????????System.out.println("message:?"?+?message);
          ????????System.out.println("salt:?"?+?pbeConfig.getPassword());
          ????????System.out.println("algorithm:?"?+?pbeConfig.getAlgorithm());
          ????????System.out.println("stringOutputType:?"?+?pbeConfig.getStringOutputType());
          ????????//?進(jìn)行加密
          ????????String?cipherText?=?encryptor.encrypt(message);
          ????????System.out.println("----OUTPUT-------------------");
          ????????System.out.println(cipherText);
          ????????return?cipherText;
          ????}

          ????public?static?String?decrypt(String?salt,?String?message)?{
          ????????PooledPBEStringEncryptor?encryptor?=?new?PooledPBEStringEncryptor();
          ????????//?設(shè)置解密配置
          ????????encryptor.setConfig(generatePBEConfig(salt));
          ????????//?進(jìn)行解密
          ????????return?encryptor.decrypt(message);
          ????}

          ????public?static?void?main(String[]?args)?{
          ????????//?隨機(jī)生成一個(gè)?salt?鹽值
          ????????String?salt?=?UUID.randomUUID().toString().replace("-",?"");
          ????????//?進(jìn)行加密
          ????????encrypt(salt,?"message");
          ????}
          }

          如何使用

          直接在 application.yml 配置文件中添加 Jasypt 配置和生成的密文

          jasypt:
          ??encryptor:
          ????password:?salt?#?salt?鹽值,需要和加密時(shí)使用的?salt?一致
          ????algorithm:?PBEWithMD5AndDES?#?加密算法,需要和加密時(shí)使用的算法一致
          ????string-output-type:?hexadecimal?#?密文格式,,需要和加密時(shí)使用的輸出格式一致
          spring:
          ??datasource:
          ????druid:
          ??????username:?root
          ??????password:?ENC(cipherText)?# Jasypt 密文格式:ENC(密文)

          salt 鹽值也可以通過 JVM 參數(shù)進(jìn)行設(shè)置,例如:-Djasypt.encryptor.password=salt

          啟動(dòng)后,Jasypt 會(huì)先根據(jù)配置將 ENC(密文) 進(jìn)行解密,然后設(shè)置到 Spring 環(huán)境中

          作者:月圓吖

          www.cnblogs.com/lifullmoon/p/14014660.html


          最近熬夜給大家準(zhǔn)備了515套Java代碼,有一些是業(yè)務(wù)類的小項(xiàng)目,比如Java博客項(xiàng)目,也有腳手架、也有平時(shí)用一些的工具類、21套小程序代碼,也有一些游戲類的項(xiàng)目。

          掃以下二維碼并回復(fù)“828”即可獲取


          或者在本公眾號(hào)對(duì)話框回復(fù)【828】馬上獲取


          瀏覽 50
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲黄色免费观看 | 操操操操操操操操操操 | 色影音先锋色资源网站 | 操逼逼啊啊啊 | 夜夜骚视频 |