Mybatis Select 返回 Map
一、数据库使用Postgres
1.Docker Postgres 官方数据库镜像拉取与启动:
##拉取
docker pull postgres:14.1
##启动
docker run --privileged=true -d --name pg -e POSTGRES_PASSWORD=123456 -e POSTGRES_USER=postgres -p 5432:5432 -e TZ=PRC postgres:14.1
2.数据库备份命令
/usr/bin/pg_dump --username=postgres -h 127.0.0.1 --create --disable-triggers -c --if-exists zhx 1>> zhx.sql
3.备份文件内容(zhx.sql)
--
-- PostgreSQL database dump
--
-- Dumped from database version 14.1 (Debian 14.1-1.pgdg110+1)
-- Dumped by pg_dump version 14.1 (Debian 14.1-1.pgdg110+1)
SET statement_timeout = 0;
SET lock_timeout = 0;
SET idle_in_transaction_session_timeout = 0;
SET client_encoding = 'UTF8';
SET standard_conforming_strings = on;
SELECT pg_catalog.set_config('search_path', '', false);
SET check_function_bodies = false;
SET xmloption = content;
SET client_min_messages = warning;
SET row_security = off;
DROP DATABASE IF EXISTS zhx;
--
-- Name: zhx; Type: DATABASE; Schema: -; Owner: postgres
--
CREATE DATABASE zhx WITH TEMPLATE = template0 ENCODING = 'UTF8' LOCALE = 'en_US.utf8';
ALTER DATABASE zhx OWNER TO postgres;
\connect zhx
SET statement_timeout = 0;
SET lock_timeout = 0;
SET idle_in_transaction_session_timeout = 0;
SET client_encoding = 'UTF8';
SET standard_conforming_strings = on;
SELECT pg_catalog.set_config('search_path', '', false);
SET check_function_bodies = false;
SET xmloption = content;
SET client_min_messages = warning;
SET row_security = off;
--
-- Name: zhx; Type: DATABASE PROPERTIES; Schema: -; Owner: postgres
--
ALTER DATABASE zhx CONNECTION LIMIT = 10;
\connect zhx
SET statement_timeout = 0;
SET lock_timeout = 0;
SET idle_in_transaction_session_timeout = 0;
SET client_encoding = 'UTF8';
SET standard_conforming_strings = on;
SELECT pg_catalog.set_config('search_path', '', false);
SET check_function_bodies = false;
SET xmloption = content;
SET client_min_messages = warning;
SET row_security = off;
SET default_tablespace = '';
SET default_table_access_method = heap;
--
-- Name: tbl_user; Type: TABLE; Schema: public; Owner: postgres
--
CREATE TABLE public.tbl_user (
id integer NOT NULL,
name character varying(255),
age integer
);
ALTER TABLE public.tbl_user OWNER TO postgres;
--
-- Data for Name: tbl_user; Type: TABLE DATA; Schema: public; Owner: postgres
--
COPY public.tbl_user (id, name, age) FROM stdin;
1 李淳风 58
2 袁天罡 98
\.
--
-- Name: tbl_user tbl_user_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres
--
ALTER TABLE ONLY public.tbl_user
ADD CONSTRAINT tbl_user_pkey PRIMARY KEY (id);
--
-- PostgreSQL database dump complete
--
二、工程
1.项目结构
2.启动类
package com.demo;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* Description: 数据库测试
*
* @Author: zhx & moon hongxu_1234@163.com
* @Date: 2022-01-19 21:48
* @version: V1.0.0
*/
@SpringBootApplication
@MapperScan("com.demo.mapper")
public class PgsqlApplication {
public static void main(String[] args) {
SpringApplication.run(PgsqlApplication.class,args);
}
}
3.数据库配置
package com.demo.config;
import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.support.http.StatViewServlet;
import com.alibaba.druid.support.http.WebStatFilter;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;
import javax.sql.DataSource;
import java.sql.SQLException;
/**
* DRUID 数据库连接池类
* @author zhx & moon hongxu_1234@163.com
* @date 2020/11/19 22:19
* @version V1.0.0
*/
@Configuration
@Slf4j
@PropertySource("classpath:application-dev.yml")
public class DruidConfig {
private static final String DB_PREFIX = "spring.datasource";
@Component
@ConfigurationProperties(prefix = DB_PREFIX)
static class IDataSourceProperties {
private String url;
private String username;
private String password;
private String driverClassName;
private int initialSize;
private int minIdle;
private int maxActive;
private int maxWait;
private int timeBetweenEvictionRunsMillis;
private int minEvictableIdleTimeMillis;
private String validationQuery;
private boolean testWhileIdle;
private boolean testOnBorrow;
private boolean testOnReturn;
private boolean poolPreparedStatements;
private int maxPoolPreparedStatementPerConnectionSize;
private String filters;
private String connectionProperties;
@Bean //声明其为Bean实例
@Primary //在同样的DataSource中,首先使用被标注的DataSource
public DataSource dataSource() {
DruidDataSource datasource = new DruidDataSource();
datasource.setUrl(url);
datasource.setUsername(username);
datasource.setPassword(password);
datasource.setDriverClassName(driverClassName);
//configuration
datasource.setInitialSize(initialSize);
datasource.setMinIdle(minIdle);
datasource.setMaxActive(maxActive);
datasource.setMaxWait(maxWait);
datasource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis);
datasource.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis);
datasource.setValidationQuery(validationQuery);
datasource.setTestWhileIdle(testWhileIdle);
datasource.setTestOnBorrow(testOnBorrow);
datasource.setTestOnReturn(testOnReturn);
datasource.setPoolPreparedStatements(poolPreparedStatements);
datasource.setMaxPoolPreparedStatementPerConnectionSize(maxPoolPreparedStatementPerConnectionSize);
try {
datasource.setFilters(filters);
} catch (SQLException e) {
log.error("druid configuration initialization filter: " , e);
}
datasource.setConnectionProperties(connectionProperties);
return datasource;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getDriverClassName() {
return driverClassName;
}
public void setDriverClassName(String driverClassName) {
this.driverClassName = driverClassName;
}
public int getInitialSize() {
return initialSize;
}
public void setInitialSize(int initialSize) {
this.initialSize = initialSize;
}
public int getMinIdle() {
return minIdle;
}
public void setMinIdle(int minIdle) {
this.minIdle = minIdle;
}
public int getMaxActive() {
return maxActive;
}
public void setMaxActive(int maxActive) {
this.maxActive = maxActive;
}
public int getMaxWait() {
return maxWait;
}
public void setMaxWait(int maxWait) {
this.maxWait = maxWait;
}
public int getTimeBetweenEvictionRunsMillis() {
return timeBetweenEvictionRunsMillis;
}
public void setTimeBetweenEvictionRunsMillis(int timeBetweenEvictionRunsMillis) {
this.timeBetweenEvictionRunsMillis = timeBetweenEvictionRunsMillis;
}
public int getMinEvictableIdleTimeMillis() {
return minEvictableIdleTimeMillis;
}
public void setMinEvictableIdleTimeMillis(int minEvictableIdleTimeMillis) {
this.minEvictableIdleTimeMillis = minEvictableIdleTimeMillis;
}
public String getValidationQuery() {
return validationQuery;
}
public void setValidationQuery(String validationQuery) {
this.validationQuery = validationQuery;
}
public boolean isTestWhileIdle() {
return testWhileIdle;
}
public void setTestWhileIdle(boolean testWhileIdle) {
this.testWhileIdle = testWhileIdle;
}
public boolean isTestOnBorrow() {
return testOnBorrow;
}
public void setTestOnBorrow(boolean testOnBorrow) {
this.testOnBorrow = testOnBorrow;
}
public boolean isTestOnReturn() {
return testOnReturn;
}
public void setTestOnReturn(boolean testOnReturn) {
this.testOnReturn = testOnReturn;
}
public boolean isPoolPreparedStatements() {
return poolPreparedStatements;
}
public void setPoolPreparedStatements(boolean poolPreparedStatements) {
this.poolPreparedStatements = poolPreparedStatements;
}
public int getMaxPoolPreparedStatementPerConnectionSize() {
return maxPoolPreparedStatementPerConnectionSize;
}
public void setMaxPoolPreparedStatementPerConnectionSize(int maxPoolPreparedStatementPerConnectionSize) {
this.maxPoolPreparedStatementPerConnectionSize = maxPoolPreparedStatementPerConnectionSize;
}
public String getFilters() {
return filters;
}
public void setFilters(String filters) {
this.filters = filters;
}
public String getConnectionProperties() {
return connectionProperties;
}
public void setConnectionProperties(String connectionProperties) {
this.connectionProperties = connectionProperties;
}
@Bean
public ServletRegistrationBean<StatViewServlet> druidServlet() {// 主要实现web监控的配置处理
ServletRegistrationBean<StatViewServlet> servletRegistrationBean = new ServletRegistrationBean<>(
new StatViewServlet(), "/druid/*");//表示进行druid监控的配置处理操作
servletRegistrationBean.addInitParameter("allow", "127.0.0.1,192.168.0.12");//白名单
servletRegistrationBean.addInitParameter("deny", "129.168.1.12");//黑名单
servletRegistrationBean.addInitParameter("loginUsername", "root");//用户名
servletRegistrationBean.addInitParameter("loginPassword", "123456");//密码
servletRegistrationBean.addInitParameter("resetEnable", "false");//是否可以重置数据源
return servletRegistrationBean;
}
@Bean //监控
public FilterRegistrationBean<WebStatFilter> filterRegistrationBean(){
FilterRegistrationBean<WebStatFilter> filterRegistrationBean=new FilterRegistrationBean<>();
filterRegistrationBean.setFilter(new WebStatFilter());
filterRegistrationBean.addUrlPatterns("/*");//所有请求进行监控处理
filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.css,/druid/*");//排除
return filterRegistrationBean;
}
}
}
4.Result处理句柄
package com.demo.mapper.session;
import org.apache.ibatis.session.ResultContext;
import org.apache.ibatis.session.ResultHandler;
import java.util.HashMap;
import java.util.Map;
/**
* Description: 结果处理句柄
*
* @Author: zhx & moon hongxu_1234@163.com
* @Date: 2022-01-19 23:06
* @version: V1.0.0
*/
public class MapResultHandler implements ResultHandler {
@SuppressWarnings("rawtypes")
private final Map mappedResults = new HashMap();
@SuppressWarnings("unchecked")
@Override
public void handleResult(ResultContext context) {
@SuppressWarnings("rawtypes")
Map map = (Map)context.getResultObject();
// xml 配置里面的property的值,对应的列
mappedResults.put(map.get("keys"), map.get("val") + "");
}
public Map getMappedResults() {
return mappedResults;
}
}
5.Session处理器
package com.demo.mapper.session;
import com.demo.mapper.DemoMapper;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.support.SqlSessionDaoSupport;
import org.springframework.context.annotation.DependsOn;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Map;
/**
* Description: PG SESSION
*
* @Author: zhx & moon hongxu_1234@163.com
* @Date: 2022-01-19 23:00
* @version: V1.0.0
*/
@Service
@DependsOn(value = {"dataSource"})
public class DemoSession extends SqlSessionDaoSupport {
@Override
@Resource
public void setSqlSessionFactory(SqlSessionFactory sqlSessionFactory) {
super.setSqlSessionFactory(sqlSessionFactory);
}
@SuppressWarnings("unchecked")
public Map<String,String> queryMap(){
MapResultHandler handler = new MapResultHandler();
this.getSqlSession().select(DemoMapper.class.getName()+".queryMap", handler);
Map<String, String> map = handler.getMappedResults();
return map;
}
}
6.测试接口
package com.demo.controller;
import com.demo.mapper.session.DemoSession;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Map;
/**
* Description: 测试类
*
* @Author: zhx & moon hongxu_1234@163.com
* @Date: 2022-01-19 23:11
* @version: V1.0.0
*/
@RestController
@RequestMapping("/demo")
@Slf4j
public class DemoController {
private DemoSession demoSession;
@Autowired
public void setDemoSession(DemoSession demoSession){
this.demoSession = demoSession;
}
@GetMapping("/map")
public void query(){
try{
Map<String,String> map = demoSession.queryMap();
map.forEach((k,v)->{
log.info("姓名:{} 年龄:{}",k,v);
});
}catch (Exception e){
log.error("",e);
}
}
}
7.Map接口
package com.demo.mapper;
import java.util.Map;
/**
* 用户登录 MAPPER
* @author zhx & moon hongxu_1234@163.com
* @date 2020/11/19 22:19
* @version V1.0.0
*/
public interface DemoMapper {
/**
* 查询
* @return
*/
Map<String,String> queryMap();
}
8.Xml文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--
* @author zhx & moon hongxu_1234@163.com
* 2020/11/19 2:06
* @version 1.0
-->
<mapper namespace="com.demo.mapper.DemoMapper">
<!--查询表字段-->
<select id="queryMap" resultType="map">
select name as keys , age as val
from tbl_user
</select>
</mapper>
9.Yam配置文件
application.yml
spring:
# 环境 dev:开发环境|test:测试环境|prod:生产环境
profiles:
active: dev #激活的配置文件
application-dev.yml
server:
port: 8093
spring:
application:
name: moon
datasource:
username: postgres
password: 123456
url: jdbc:postgresql://106.12.148.211:5432/zhx #jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false
driverClassName: org.postgresql.Driver #com.mysql.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource
# 下面为连接池的补充设置,应用到上面所有数据源中
# 初始化大小,最小,最大
initial-size: 5
min-idle: 5
max-active: 20
# 配置获取连接等待超时的时间
max-wait: 60000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
time-between-eviction-runs-millis: 60000
# 配置一个连接在池中最小生存的时间,单位是毫秒
min-evictable-idle-time-millis: 300000
validation-query: select version()
test-while-idle: true
test-on-borrow: false
test-on-return: false
# 打开PSCache,并且指定每个连接上PSCache的大小
pool-prepared-statements: true
# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,wall用于防火墙
max-pool-prepared-statement-per-connection-size: 20
filters: stat,wall
use-global-data-source-stat: true
# 通过connectProperties属性来打开mergeSql功能;慢SQL记录
connect-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
#mybatis配置
mybatis:
mapper-locations: classpath:/mapper/*.xml #修改为对应的mapper文件路径
#驼峰命名
configuration:
map-underscore-to-camel-case: true
#打印sql
logging:
level:
com.demo: debug
10.Pom配置
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="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">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.1</version>
<relativePath/>
</parent>
<groupId>com.demo</groupId>
<artifactId>pgdemo</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<!-- mybatis -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.1</version>
</dependency>
<!-- pgsql -->
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<scope>42.2.18</scope>
</dependency>
<!-- druid -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.16</version>
</dependency>
</dependencies>
</project>
三、调试
1.调用
http://127.0.0.1:8093/demo/map
2.结果
"C:\Program Files\Java\jdk-17.0.1\bin\java.exe" -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:61382,suspend=y,server=n -XX:TieredStopAtLevel=1 -noverify -Dspring.output.ansi.enabled=always -javaagent:C:\Users\Administrator\AppData\Local\JetBrains\IntelliJIdea2021.2\captureAgent\debugger-agent.jar -Dcom.sun.management.jmxremote -Dspring.jmx.enabled=true -Dspring.liveBeansView.mbeanDomain -Dspring.application.admin.enabled=true -Dfile.encoding=UTF-8 -classpath "E:\IdeaProjects\pgdemo\target\classes;D:\apache-maven-space\org\springframework\boot\spring-boot-starter-web\2.6.1\spring-boot-starter-web-2.6.1.jar;D:\apache-maven-space\org\springframework\boot\spring-boot-starter\2.6.1\spring-boot-starter-2.6.1.jar;D:\apache-maven-space\org\springframework\boot\spring-boot\2.6.1\spring-boot-2.6.1.jar;D:\apache-maven-space\org\springframework\boot\spring-boot-autoconfigure\2.6.1\spring-boot-autoconfigure-2.6.1.jar;D:\apache-maven-space\org\springframework\boot\spring-boot-starter-logging\2.6.1\spring-boot-starter-logging-2.6.1.jar;D:\apache-maven-space\ch\qos\logback\logback-classic\1.2.7\logback-classic-1.2.7.jar;D:\apache-maven-space\ch\qos\logback\logback-core\1.2.7\logback-core-1.2.7.jar;D:\apache-maven-space\org\apache\logging\log4j\log4j-to-slf4j\2.14.1\log4j-to-slf4j-2.14.1.jar;D:\apache-maven-space\org\apache\logging\log4j\log4j-api\2.14.1\log4j-api-2.14.1.jar;D:\apache-maven-space\org\slf4j\jul-to-slf4j\1.7.32\jul-to-slf4j-1.7.32.jar;D:\apache-maven-space\jakarta\annotation\jakarta.annotation-api\1.3.5\jakarta.annotation-api-1.3.5.jar;D:\apache-maven-space\org\springframework\spring-core\5.3.13\spring-core-5.3.13.jar;D:\apache-maven-space\org\springframework\spring-jcl\5.3.13\spring-jcl-5.3.13.jar;D:\apache-maven-space\org\yaml\snakeyaml\1.29\snakeyaml-1.29.jar;D:\apache-maven-space\org\springframework\boot\spring-boot-starter-json\2.6.1\spring-boot-starter-json-2.6.1.jar;D:\apache-maven-space\com\fasterxml\jackson\core\jackson-databind\2.13.0\jackson-databind-2.13.0.jar;D:\apache-maven-space\com\fasterxml\jackson\core\jackson-annotations\2.13.0\jackson-annotations-2.13.0.jar;D:\apache-maven-space\com\fasterxml\jackson\core\jackson-core\2.13.0\jackson-core-2.13.0.jar;D:\apache-maven-space\com\fasterxml\jackson\datatype\jackson-datatype-jdk8\2.13.0\jackson-datatype-jdk8-2.13.0.jar;D:\apache-maven-space\com\fasterxml\jackson\datatype\jackson-datatype-jsr310\2.13.0\jackson-datatype-jsr310-2.13.0.jar;D:\apache-maven-space\com\fasterxml\jackson\module\jackson-module-parameter-names\2.13.0\jackson-module-parameter-names-2.13.0.jar;D:\apache-maven-space\org\springframework\boot\spring-boot-starter-tomcat\2.6.1\spring-boot-starter-tomcat-2.6.1.jar;D:\apache-maven-space\org\apache\tomcat\embed\tomcat-embed-core\9.0.55\tomcat-embed-core-9.0.55.jar;D:\apache-maven-space\org\apache\tomcat\embed\tomcat-embed-el\9.0.55\tomcat-embed-el-9.0.55.jar;D:\apache-maven-space\org\apache\tomcat\embed\tomcat-embed-websocket\9.0.55\tomcat-embed-websocket-9.0.55.jar;D:\apache-maven-space\org\springframework\spring-web\5.3.13\spring-web-5.3.13.jar;D:\apache-maven-space\org\springframework\spring-beans\5.3.13\spring-beans-5.3.13.jar;D:\apache-maven-space\org\springframework\spring-webmvc\5.3.13\spring-webmvc-5.3.13.jar;D:\apache-maven-space\org\springframework\spring-aop\5.3.13\spring-aop-5.3.13.jar;D:\apache-maven-space\org\springframework\spring-context\5.3.13\spring-context-5.3.13.jar;D:\apache-maven-space\org\springframework\spring-expression\5.3.13\spring-expression-5.3.13.jar;D:\apache-maven-space\org\springframework\boot\spring-boot-configuration-processor\2.6.1\spring-boot-configuration-processor-2.6.1.jar;D:\apache-maven-space\org\projectlombok\lombok\1.18.22\lombok-1.18.22.jar;D:\apache-maven-space\com\alibaba\fastjson\1.2.70\fastjson-1.2.70.jar;D:\apache-maven-space\org\mybatis\spring\boot\mybatis-spring-boot-starter\2.2.1\mybatis-spring-boot-starter-2.2.1.jar;D:\apache-maven-space\org\springframework\boot\spring-boot-starter-jdbc\2.6.1\spring-boot-starter-jdbc-2.6.1.jar;D:\apache-maven-space\com\zaxxer\HikariCP\4.0.3\HikariCP-4.0.3.jar;D:\apache-maven-space\org\slf4j\slf4j-api\1.7.32\slf4j-api-1.7.32.jar;D:\apache-maven-space\org\springframework\spring-jdbc\5.3.13\spring-jdbc-5.3.13.jar;D:\apache-maven-space\org\springframework\spring-tx\5.3.13\spring-tx-5.3.13.jar;D:\apache-maven-space\org\mybatis\spring\boot\mybatis-spring-boot-autoconfigure\2.2.1\mybatis-spring-boot-autoconfigure-2.2.1.jar;D:\apache-maven-space\org\mybatis\mybatis\3.5.9\mybatis-3.5.9.jar;D:\apache-maven-space\org\mybatis\mybatis-spring\2.0.6\mybatis-spring-2.0.6.jar;D:\apache-maven-space\org\postgresql\postgresql\42.3.1\postgresql-42.3.1.jar;D:\apache-maven-space\org\checkerframework\checker-qual\3.5.0\checker-qual-3.5.0.jar;D:\apache-maven-space\com\alibaba\druid\1.1.16\druid-1.1.16.jar;D:\Program Files\JetBrains\IntelliJ IDEA 2020.2.3\lib\idea_rt.jar" com.demo.PgsqlApplication
Java HotSpot(TM) 64-Bit Server VM warning: Options -Xverify:none and -noverify were deprecated in JDK 13 and will likely be removed in a future release.
Connected to the target VM, address: '127.0.0.1:61382', transport: 'socket'
Java HotSpot(TM) 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.6.1)
2022-01-20 00:42:51.118 INFO 3692 --- [ main] com.demo.PgsqlApplication : Starting PgsqlApplication using Java 17.0.1 on zhx_yue with PID 3692 (E:\IdeaProjects\pgdemo\target\classes started by Administrator in E:\IdeaProjects\pgdemo)
2022-01-20 00:42:51.120 DEBUG 3692 --- [ main] com.demo.PgsqlApplication : Running with Spring Boot v2.6.1, Spring v5.3.13
2022-01-20 00:42:51.120 INFO 3692 --- [ main] com.demo.PgsqlApplication : The following profiles are active: dev
2022-01-20 00:42:51.611 INFO 3692 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8093 (http)
2022-01-20 00:42:51.616 INFO 3692 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2022-01-20 00:42:51.616 INFO 3692 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.55]
2022-01-20 00:42:51.656 INFO 3692 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2022-01-20 00:42:51.657 INFO 3692 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 512 ms
2022-01-20 00:42:51.989 INFO 3692 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8093 (http) with context path ''
2022-01-20 00:42:51.994 INFO 3692 --- [ main] com.demo.PgsqlApplication : Started PgsqlApplication in 1.08 seconds (JVM running for 1.537)
2022-01-20 01:07:12.799 INFO 3692 --- [nio-8093-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet'
2022-01-20 01:07:12.800 INFO 3692 --- [nio-8093-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
2022-01-20 01:07:12.801 INFO 3692 --- [nio-8093-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 1 ms
2022-01-20 01:07:13.418 INFO 3692 --- [nio-8093-exec-1] com.alibaba.druid.pool.DruidDataSource : {dataSource-1} inited
2022-01-20 01:07:13.422 DEBUG 3692 --- [nio-8093-exec-1] com.demo.mapper.DemoMapper.queryMap : ==> Preparing: select name as keys , age as val from tbl_user
2022-01-20 01:07:13.465 DEBUG 3692 --- [nio-8093-exec-1] com.demo.mapper.DemoMapper.queryMap : ==> Parameters:
2022-01-20 01:07:13.490 DEBUG 3692 --- [nio-8093-exec-1] com.demo.mapper.DemoMapper.queryMap : <== Total: 2
2022-01-20 01:07:13.492 INFO 3692 --- [nio-8093-exec-1] com.demo.controller.DemoController : 姓名:袁天罡 年龄:98
2022-01-20 01:07:13.492 INFO 3692 --- [nio-8093-exec-1] com.demo.controller.DemoController : 姓名:李淳风 年龄:58