springboot+MybatisPlus配置多資料來源+aop切面
阿新 • • 發佈:2018-12-12
DataSource.java
package com.ocean.dataSourceConfig; import java.lang.annotation.*; /** * Created with IDEA * author:QinWei * Date:2018/12/11 * Time:11:17 */ @Target({ElementType.METHOD,ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface DataSource { DataSourceEnum value() default DataSourceEnum.DB1; }
DataSourceAspect.java
package com.ocean.dataSourceConfig; import lombok.extern.slf4j.Slf4j; import org.aspectj.lang.annotation.After; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; import org.aspectj.lang.annotation.Pointcut; import org.springframework.core.annotation.Order; import org.springframework.stereotype.Component; /** * Created with IDEA * author:QinWei * Date:2018/12/11 * Time:11:18 */ @Component @Slf4j @Aspect @Order(-1) public class DataSourceAspect { @Pointcut("@within(com.ocean.dataSourceConfig.DataSource) || @annotation(com.ocean.dataSourceConfig.DataSource)") public void pointCut(){ } @Before("pointCut() && @annotation(dataSource)") public void doBefore(DataSource dataSource){ log.info("選擇資料來源---"+dataSource.value().getValue()); DataSourceContextHolder.setDataSource(dataSource.value().getValue()); } @After("pointCut()") public void doAfter(){ DataSourceContextHolder.clear(); } }
DataSourceContextHolder.java
package com.ocean.dataSourceConfig; /** * Created with IDEA * author:QinWei * Date:2018/12/11 * Time:11:16 */ public class DataSourceContextHolder { private static final ThreadLocal<String> contextHolder = new InheritableThreadLocal<>(); /** * 設定資料來源 * @param db */ public static void setDataSource(String db){ contextHolder.set(db); } /** * 取得當前資料來源 * @return */ public static String getDataSource(){ return contextHolder.get(); } /** * 清除上下文資料 */ public static void clear(){ contextHolder.remove(); } }
DataSourceEnum.java
package com.ocean.dataSourceConfig;
/**
* Created with IDEA
* author:QinWei
* Date:2018/12/11
* Time:11:17
*/
public enum DataSourceEnum {
DB1("db1"),DB2("db2");
private String value;
DataSourceEnum(String value){this.value=value;}
public String getValue() {
return value;
}
}
MultipleDataSource.java
package com.ocean.dataSourceConfig;
import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;
/**
* Created with IDEA
* author:QinWei
* Date:2018/12/11
* Time:11:16
*/
public class MultipleDataSource extends AbstractRoutingDataSource{
@Override
protected Object determineCurrentLookupKey() {
return DataSourceContextHolder.getDataSource();
}
}
DruidConfiguration.java,
MyBatiesPlusConfiguration.java
SwaggerConfiguration.java
package com.ocean.dataSourceConfig.Configuration;
/**
* Created with IDEA
* author:QinWei
* Date:2018/12/11
* Time:11:20
*/
import com.alibaba.druid.support.http.StatViewServlet;
import com.alibaba.druid.support.http.WebStatFilter;
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;
@Configuration
public class DruidConfiguration {
@Bean
public ServletRegistrationBean startViewServlet(){
ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(),"/druid/*");
// IP白名單
servletRegistrationBean.addInitParameter("allow","127.0.0.1");
// IP黑名單(共同存在時,deny優先於allow)
servletRegistrationBean.addInitParameter("deny","127.0.0.1");
//控制檯管理使用者
servletRegistrationBean.addInitParameter("loginUsername","admin");
servletRegistrationBean.addInitParameter("loginPassword","123456");
//是否能夠重置資料
servletRegistrationBean.addInitParameter("resetEnable","false");
return servletRegistrationBean;
}
@Bean
public FilterRegistrationBean statFilter(){
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter());
//新增過濾規則
filterRegistrationBean.addUrlPatterns("/*");
//忽略過濾的格式
filterRegistrationBean.addInitParameter("exclusions","*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
return filterRegistrationBean;
}
}
package com.ocean.dataSourceConfig.Configuration;
/**
* Created with IDEA
* author:QinWei
* Date:2018/12/11
* Time:11:21
*/
import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder;
import com.baomidou.mybatisplus.core.MybatisConfiguration;
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import com.baomidou.mybatisplus.extension.plugins.PerformanceInterceptor;
import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
import com.ocean.dataSourceConfig.DataSourceEnum;
import com.ocean.dataSourceConfig.MultipleDataSource;
import org.apache.ibatis.plugin.Interceptor;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.type.JdbcType;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.context.annotation.Profile;
import javax.sql.DataSource;
import java.util.HashMap;
import java.util.Map;
@Configuration
@MapperScan("com.ocean.mapper.*")
public class MyBatiesPlusConfiguration {
/*
* 分頁外掛,自動識別資料庫型別
* 多租戶,請參考官網【外掛擴充套件】
*/
@Bean
public PaginationInterceptor paginationInterceptor() {
PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
// 開啟 PageHelper 的支援
// paginationInterceptor.setL(true);
return paginationInterceptor;
}
/**
* SQL執行效率外掛
*/
@Bean
@Profile({"dev","qa"})// 設定 dev test 環境開啟
public PerformanceInterceptor performanceInterceptor() {
PerformanceInterceptor performanceInterceptor = new PerformanceInterceptor();
performanceInterceptor.setMaxTime(1000);
performanceInterceptor.setFormat(true);
return performanceInterceptor;
}
@Bean(name = "db1")
@ConfigurationProperties(prefix = "spring.datasource.druid.db1" )
public DataSource db1() {
return DruidDataSourceBuilder.create().build();
}
@Bean(name = "db2")
@ConfigurationProperties(prefix = "spring.datasource.druid.db2" )
public DataSource db2() {
return DruidDataSourceBuilder.create().build();
}
/**
* 動態資料來源配置
* @return
*/
@Bean
@Primary
public DataSource multipleDataSource(@Qualifier("db1") DataSource db1, @Qualifier("db2") DataSource db2) {
MultipleDataSource multipleDataSource = new MultipleDataSource();
Map< Object, Object > targetDataSources = new HashMap<>();
targetDataSources.put(DataSourceEnum.DB1.getValue(), db1);
targetDataSources.put(DataSourceEnum.DB2.getValue(), db2);
//新增資料來源
multipleDataSource.setTargetDataSources(targetDataSources);
//設定預設資料來源
multipleDataSource.setDefaultTargetDataSource(db1);
return multipleDataSource;
}
@Bean("sqlSessionFactory")
public SqlSessionFactory sqlSessionFactory() throws Exception {
MybatisSqlSessionFactoryBean sqlSessionFactory = new MybatisSqlSessionFactoryBean();
sqlSessionFactory.setDataSource(multipleDataSource(db1(),db2()));
//sqlSessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:/mapper/*/*Mapper.xml"));
MybatisConfiguration configuration = new MybatisConfiguration();
//configuration.setDefaultScriptingLanguage(MybatisXMLLanguageDriver.class);
configuration.setJdbcTypeForNull(JdbcType.NULL);
configuration.setMapUnderscoreToCamelCase(true);
configuration.setCacheEnabled(false);
sqlSessionFactory.setConfiguration(configuration);
sqlSessionFactory.setPlugins(new Interceptor[]{ //PerformanceInterceptor(),OptimisticLockerInterceptor()
paginationInterceptor() //新增分頁功能
});
//sqlSessionFactory.setGlobalConfig(globalConfiguration());
return sqlSessionFactory.getObject();
}
/*@Bean
public GlobalConfiguration globalConfiguration() {
GlobalConfiguration conf = new GlobalConfiguration(new LogicSqlInjector());
conf.setLogicDeleteValue("-1");
conf.setLogicNotDeleteValue("1");
conf.setIdType(0);
//conf.setMetaObjectHandler(new MyMetaObjectHandler());
conf.setDbColumnUnderline(true);
conf.setRefresh(true);
return conf;
}*/
}
package com.ocean.dataSourceConfig.Configuration;
/**
* Created with IDEA
* author:QinWei
* Date:2018/12/11
* Time:11:23
*/
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@Configuration
@EnableSwagger2
public class SwaggerConfiguration {
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.basePackage("com.ocean.controller"))
.paths(PathSelectors.any())
.build()
.apiInfo(apiInfo());
}
private ApiInfo apiInfo(){
return new ApiInfoBuilder()
.title("多資料來源 SSM 測試服務")
.description("多資料來源 SSM 測試文件")
.termsOfServiceUrl("http://www.seawaterbt.com")
//.contact(new Contact("海水不甜","http://www.seawaterbt.com","[email protected]"))
.version("1.0")
.build();
}
}
application.yml配置
server:
port: 8585
#spring
spring:
thymeleaf:
prefix: classpath:/templates/pages/
suffix: .html
mode: HTML5
encoding: UTF-8
cache: false
resources:
chain:
strategy:
content:
paths: /**
datasource:
druid:
db1:
username: root
password: root
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/shiro?useUnicode=true&characterEncoding=utf8&useSSL=false
initialSize: 5
minIdle: 5
maxActive: 20
db2:
username: root
password: root
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/shiro1?useUnicode=true&characterEncoding=utf8&useSSL=false
initialSize: 5
minIdle: 5
maxActive: 20
#僅支援mybatisplus3.0版本以上
redis:
database: 1 #索引(預設為0)
host: localhost #地址
port: 6379 #埠號
#password: #連線密碼(預設空)
pool:
max-idle: 8 #連線池中的最大空閒連線
min-idle: 0 #連線池中的最小空閒連線
max-active: 8 #連線池最大連線數(使用負值表示沒有限制)
max-wait: -1 #連線池最大阻塞等待時間(使用負值表示沒有限制)
#sentinel:
#master: mymaster # 哨兵監聽的Redis server的名稱
#nodes:
#127.0.0.1:26379,127.0.0.1:26479,127.0.0.1:26579 #哨兵的配置列表
timeout: 0 #連線超時時間(毫秒)
mybatis-plus:
mapper-locations: classpath:/mapping/*Mapper.xml
#實體掃描,多個package用逗號或者分號分隔
typeAliasesPackage: com.ocean.pojo
global-config:
#重新整理mapper 除錯神器
db-config:
#主鍵型別 0:"資料庫ID自增", 1:"使用者輸入ID",2:"全域性唯一ID (數字型別唯一ID)", 3:"全域性唯一ID UUID";
id-type: auto
#欄位策略 0:"忽略判斷",1:"非 NULL 判斷"),2:"非空判斷"
field-strategy: IGNORED
#駝峰下劃線轉換
column-underline: true
#資料庫大寫下劃線轉換
#capital-mode: true
#邏輯刪除配置
logic-delete-value: 1
logic-not-delete-value: 0
sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjector
db-type: mysql
refresh: true
#自定義填充策略介面實現
#meta-object-handler: com.baomidou.springboot.xxx
#自定義SQL注入器
#sql-injector: com.baomidou.springboot.xxx
configuration:
map-underscore-to-camel-case: true
cache-enabled: false
# 列印sql
logging:
level:
com.ocean.mapper : debug
pom.xml
<?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>
<groupId>com.ocean</groupId>
<artifactId>springboot-mybatis-demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>springboot-mybatis-demo</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.5.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- spring mvc支援 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 阿里巴巴druid資料庫連線池 -->
<!-- druid -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.9</version>
</dependency>
<!-- mysql驅動 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!--對Jsp支援 -->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>
<!-- 支援jstl -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<!--啟動時啟動內建tomcat -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.3.2</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus</artifactId>
<version>3.0.3</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.0-RC3</version>
</dependency>
<!-- spring boot devtools 依賴包. -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
<scope>true</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.9.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.20</version>
</dependency>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.6</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-collections4</artifactId>
<version>4.0</version>
</dependency>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>7.0</version>
</dependency>
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-all</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.1.23</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.jolbox</groupId>
<artifactId>bonecp-spring</artifactId>
<version>0.7.1.RELEASE</version>
</dependency>
<dependency>
<groupId>com.jolbox</groupId>
<artifactId>bonecp-spring</artifactId>
<version>0.7.1.RELEASE</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.7.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.7.0</version>
</dependency>
<!-- pagehelper -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>4.1.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration> <!--設定程式執行的主類-->
<mainClass>com.ocean.SpringbootMybatisDemoApplication</mainClass>
</configuration>
</plugin>
</plugins>
</build>
</project>
啟動類
package com.ocean;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
//@EnableScheduling
//@PropertySource(value = { "classpath:mysql.properties" })
@SpringBootApplication(exclude = {
DataSourceAutoConfiguration.class
})
@MapperScan(basePackages = {"com.ocean.mapper"})//掃描資料訪問介面
public class SpringbootMybatisDemoApplication extends SpringBootServletInitializer {
private static Log logger = LogFactory.getLog(SpringbootMybatisDemoApplication.class);
//為了打包springboot專案
@Override
protected SpringApplicationBuilder configure(
SpringApplicationBuilder builder) {
return builder.sources(this.getClass());
}
public static void main(String[] args) {
logger.debug("=================開始成功=================");
SpringApplication.run(SpringbootMybatisDemoApplication.class, args);
logger.debug("=================啟動成功=================");
}
}
mapper層
package com.ocean.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ocean.pojo.UserInfo;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Repository;
import java.util.List;
@Mapper
public interface UserInfoMapper extends BaseMapper<UserInfo> {
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table userinfo
*
* @mbggenerated
*/
@Override
int insert(UserInfo record) ;
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table userInfo
*
* @mbggenerated
*/
int insertSelective(UserInfo record);
//這個方式我自己單獨加的方法
@Select("select * from user_info")
List<UserInfo> findAllUser(Page<UserInfo> page) ;
Integer selectUserName(@Param("name") String name);
UserInfo login(UserInfo user);
@Insert("insert into user_info (user_name,password,create_time) values (#{userName},md5(#{password}),#{createTime})")
void insertUser(UserInfo user);
}
service層和實現類
package com.ocean.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ocean.pojo.UserInfo;
import java.util.List;
public interface UserInfoService extends IService<UserInfo> {
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table userinfo
*
* @mbggenerated
*/
int insert(UserInfo record);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table userInfo
*
* @mbggenerated
*/
int insertSelective(UserInfo record) throws Exception;
//這個方式我自己單獨加的方法
List<UserInfo> findAllUser(Page<UserInfo> page) ;
Integer selectUserName(String name);
UserInfo login(UserInfo user);
void inserts(UserInfo user);
}
package com.ocean.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ocean.dataSourceConfig.DataSource;
import com.ocean.dataSourceConfig.DataSourceEnum;
import com.ocean.mapper.UserInfoMapper;
import com.ocean.pojo.UserInfo;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
@Service
public class UserInfoServiceImpl extends ServiceImpl<UserInfoMapper,UserInfo> implements UserInfoService {
@Resource
private UserInfoMapper userfodao;
@Override
public int insert(UserInfo record) {
return userfodao.insert(record);
}
@Override
public int insertSelective(UserInfo record) {
return 0;
}
@Override
@DataSource(DataSourceEnum.DB1)
public List<UserInfo> findAllUser(Page<UserInfo> page) {
return userfodao.findAllUser(page);
}
@Override
public Integer selectUserName(String name) {
return userfodao.selectUserName(name) ;
}
@Override
public UserInfo login(UserInfo user) {
return userfodao.login( user);
}
@Override
@DataSource(DataSourceEnum.DB2) //選擇DB
public void inserts(UserInfo user) {
userfodao.insertUser(user);
}
}
controller層
package com.ocean.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ocean.SpringbootMybatisDemoApplication;
import com.ocean.common.Md5;
import com.ocean.common.Message;
import com.ocean.pojo.UserInfo;
import com.ocean.service.UserInfoService;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.sql.Timestamp;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Controller
public class UserController {
private static Log logger = LogFactory.getLog(UserController.class);
@Autowired
private UserInfoService userService;
@RequestMapping("/register")
public String hello(UserInfo users) throws Exception{
//try {
//判斷使用者名稱是否重複
Integer userId = userService.selectUserName(users.getUserName());
if(userId==null) {
UserInfo user = new UserInfo();
user.setUserName(users.getUserName());
user.setPassword(users.getPassword());
user.setCreateTime(new Timestamp(System.currentTimeMillis()));
userService.insert(user);
return "index";
}
//}catch (Exception e){
//logger.debug("新增失敗",e);
// }
return "index";
}
@RequestMapping("/logins")
public String login(String userName, String password, HttpSession session){
Object obj = session.getAttribute("userId");
if(obj==null||obj==""){
return "index";
}
UserInfo user = new UserInfo();
user.setPassword(password);
user.setUserName(userName);
UserInfo userf = userService.login(user);
if(userf!=null){
session.setAttribute("userId",userf.getId());
return "isLogin";
}
return "index";
}
@RequestMapping("/select")
@ResponseBody
public Object select(Message message){
Page<UserInfo> page = new Page<UserInfo>(1,10);
List<UserInfo> list = userService.findAllUser(page);
message.setData(list);
message.setMsg("success");
return message;
}
@RequestMapping("/index")
public String index(){
System.out.println("lll");
return "WebSocket";
}
@RequestMapping("db1")
@ResponseBody
public Object db1(){
Page<UserInfo> page = new Page<UserInfo>(1,10);
List<UserInfo> list = userService.findAllUser(page);
return list;
}
@RequestMapping("db2")
@ResponseBody
public Object db2(Message message,UserInfo users){
UserInfo user = new UserInfo();
user.setUserName(users.getUserName());
user.setPassword(users.getPassword());
user.setCreateTime(new Timestamp(System.currentTimeMillis()));
userService.inserts(user);
message.setMsg("success");
return message;
}
}
如果需要原始碼請移步下載:https://download.csdn.net/download/qq_37996327/10844595
歡迎大家訪問我的碼雲:https://gitee.com/qwerdfs