diff --git a/boot-service/src/main/java/com/xwbing/datasource/JpaDataSourceConfig.java b/boot-service/src/main/java/com/xwbing/datasource/JpaDataSourceConfig.java index 5e7bdc8..4c8826a 100644 --- a/boot-service/src/main/java/com/xwbing/datasource/JpaDataSourceConfig.java +++ b/boot-service/src/main/java/com/xwbing/datasource/JpaDataSourceConfig.java @@ -1,27 +1,73 @@ package com.xwbing.datasource; + import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder; +import org.springframework.boot.autoconfigure.orm.jpa.JpaProperties; import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder; 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.data.jpa.repository.config.EnableJpaRepositories; +import org.springframework.orm.jpa.JpaTransactionManager; +import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; +import org.springframework.transaction.PlatformTransactionManager; +import javax.annotation.Resource; +import javax.persistence.EntityManager; import javax.sql.DataSource; +import java.util.Map; /** * 项目名称: boot-module-demo * 创建时间: 2018/5/31 21:38 * 作者: xiangwb - * 说明: + * 说明: JpaDataSourceConfig */ @Configuration @PropertySource("classpath:druid.properties") +@EnableJpaRepositories( + entityManagerFactoryRef = "jpaEntityManagerFactory", + transactionManagerRef = "jpaTransactionManager", + basePackages = {"com.xwbing.domain.repository"}) public class JpaDataSourceConfig { - @Bean(name="") - @Primary - @ConfigurationProperties("db1") - public DataSource primaryDataSource() { + @Resource + private JpaProperties jpaProperties; + + @Bean(name = "jpaDataSource") + @ConfigurationProperties("db2") + public DataSource dataSource() { return DruidDataSourceBuilder.create().build(); } + + @Bean(name = "jpaEntityManagerFactory") + public LocalContainerEntityManagerFactoryBean entityManagerFactory(EntityManagerFactoryBuilder builder) { + return builder + .dataSource(dataSource()) + .properties(getProperties(dataSource())) + .packages("com.xwbing.domain.entity") + .persistenceUnit("jpaPersistenceUnit") + .build(); + } + + @Bean(name = "japEntityManager") + public EntityManager entityManager(EntityManagerFactoryBuilder builder) { + return entityManagerFactory(builder).getObject().createEntityManager(); + } + + @Bean(name = "jpaTransactionManager") + public PlatformTransactionManager dataSourceTransactionManager(EntityManagerFactoryBuilder builder) { + return new JpaTransactionManager(entityManagerFactory(builder).getObject()); + } + + /** + * 获取jpa配置信息 + * + * @param dataSource + * @return + */ + private Map getProperties(DataSource dataSource) { + return jpaProperties.getHibernateProperties(dataSource); + } } diff --git a/boot-service/src/main/java/com/xwbing/datasource/MybatisDataSourceConfig.java b/boot-service/src/main/java/com/xwbing/datasource/MybatisDataSourceConfig.java index 1d35566..f7f4c58 100644 --- a/boot-service/src/main/java/com/xwbing/datasource/MybatisDataSourceConfig.java +++ b/boot-service/src/main/java/com/xwbing/datasource/MybatisDataSourceConfig.java @@ -4,31 +4,30 @@ import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder; import org.apache.ibatis.session.SqlSessionFactory; import org.mybatis.spring.SqlSessionFactoryBean; import org.mybatis.spring.annotation.MapperScan; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; 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.PropertySource; import org.springframework.core.io.support.PathMatchingResourcePatternResolver; import org.springframework.jdbc.datasource.DataSourceTransactionManager; +import org.springframework.transaction.PlatformTransactionManager; import javax.sql.DataSource; /** - * 说明: 德鲁伊数据源配置。监控地址:datasource/index.html + * 说明: MybatisDataSourceConfig * 项目名称: boot-module-demo * 创建时间: 2017/12/10 16:36 * 作者: xiangwb */ @Configuration -@MapperScan(basePackages = "", sqlSessionFactoryRef = "mybatisSqlSessionFactory") +@MapperScan(basePackages = {"com.xwbing.domain.mapper"}, sqlSessionFactoryRef = "mybatisSqlSessionFactory") @PropertySource("classpath:druid.properties") public class MybatisDataSourceConfig { - private final Logger logger = LoggerFactory.getLogger(MybatisDataSourceConfig.class); - + @Primary @Bean(name = "mybatisDatasource") - @ConfigurationProperties("db2") + @ConfigurationProperties("db1") public DataSource dataSource() { return DruidDataSourceBuilder.create().build(); } @@ -37,12 +36,15 @@ public class MybatisDataSourceConfig { public SqlSessionFactory sqlSessionFactory() throws Exception { SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean(); sqlSessionFactoryBean.setDataSource(dataSource()); - sqlSessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/*.xml")); + sqlSessionFactoryBean.setTypeAliasesPackage("com.xwbing.domain.entity"); + PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver(); + sqlSessionFactoryBean.setMapperLocations(resolver.getResources("classpath:mapper/*.xml")); return sqlSessionFactoryBean.getObject(); } + @Primary @Bean(name = "mybatisTransactionManager") - public DataSourceTransactionManager dataSourceTransactionManager() { + public PlatformTransactionManager dataSourceTransactionManager() { return new DataSourceTransactionManager(dataSource()); } } diff --git a/boot-service/src/main/java/com/xwbing/domain/entity/sys/SysUser.java b/boot-service/src/main/java/com/xwbing/domain/entity/sys/SysUser.java index 85833c3..617a633 100644 --- a/boot-service/src/main/java/com/xwbing/domain/entity/sys/SysUser.java +++ b/boot-service/src/main/java/com/xwbing/domain/entity/sys/SysUser.java @@ -48,7 +48,8 @@ public class SysUser extends BaseEntity { @ApiModelProperty(value = "密码",hidden = true) private String password; @ApiModelProperty(value = "是否为管理员",hidden = true) - private String admin; + @Column(name = "is_admin") + private String isAdmin; //临时字段 @ApiModelProperty(hidden = true) private transient String create; diff --git a/boot-service/src/main/java/com/xwbing/domain/mapper/SysUserMapper.java b/boot-service/src/main/java/com/xwbing/domain/mapper/SysUserMapper.java new file mode 100644 index 0000000..18e08f1 --- /dev/null +++ b/boot-service/src/main/java/com/xwbing/domain/mapper/SysUserMapper.java @@ -0,0 +1,17 @@ +package com.xwbing.domain.mapper; + +import com.xwbing.domain.entity.sys.SysUser; + +import java.util.List; + +/** + * 项目名称: boot-module-demo + * 创建时间: 2018/6/1 21:50 + * 作者: xiangwb + * 说明: + */ +public interface SysUserMapper { +// @Select("select * from sys_user_info") + List findall(); + int save(SysUser sysUser); +} diff --git a/boot-service/src/main/java/com/xwbing/service/sys/SysUserService.java b/boot-service/src/main/java/com/xwbing/service/sys/SysUserService.java index e53814e..0e30239 100644 --- a/boot-service/src/main/java/com/xwbing/service/sys/SysUserService.java +++ b/boot-service/src/main/java/com/xwbing/service/sys/SysUserService.java @@ -67,7 +67,7 @@ public class SysUserService { sysUser.setSalt(res[1]); sysUser.setPassword(res[2]); // 设置为非管理员 - sysUser.setAdmin(CommonEnum.YesOrNoEnum.NO.getCode()); + sysUser.setIsAdmin(CommonEnum.YesOrNoEnum.NO.getCode()); SysUser one = sysUserRepository.save(sysUser); if (one == null) { throw new BusinessException("新增用户失败"); @@ -98,7 +98,7 @@ public class SysUserService { if (old.getUserName().equals(userName)) { throw new BusinessException("不能删除当前登录用户"); } - if (CommonEnum.YesOrNoEnum.YES.getCode().equals(old.getAdmin())) { + if (CommonEnum.YesOrNoEnum.YES.getCode().equals(old.getIsAdmin())) { throw new BusinessException("不能对管理员进行删除操作"); } //删除用户 @@ -131,7 +131,7 @@ public class SysUserService { if (old.getUserName().equals(userName)) { throw new BusinessException("不能修改当前登录用户"); } - if (CommonEnum.YesOrNoEnum.YES.getCode().equals(old.getAdmin())) { + if (CommonEnum.YesOrNoEnum.YES.getCode().equals(old.getIsAdmin())) { throw new BusinessException("不能对管理员进行修改操作"); } // 根据实际情况补充 @@ -209,7 +209,7 @@ public class SysUserService { if (old.getUserName().equals(userName)) { throw new BusinessException("不能重置当前登录用户"); } - if (CommonEnum.YesOrNoEnum.YES.getCode().equals(old.getAdmin())) { + if (CommonEnum.YesOrNoEnum.YES.getCode().equals(old.getIsAdmin())) { throw new BusinessException("管理员密码不能重置"); } //生成密码 @@ -411,7 +411,7 @@ public class SysUserService { UserDto temp; for (SysUser info : list) { temp = new UserDto(); - temp.setIsAdmin(CommonEnum.YesOrNoEnum.YES.getCode().equals(info.getAdmin()) ? "是" : "否"); + temp.setIsAdmin(CommonEnum.YesOrNoEnum.YES.getCode().equals(info.getIsAdmin()) ? "是" : "否"); temp.setMail(info.getMail()); temp.setName(info.getName()); temp.setSex(Integer.valueOf(info.getSex()) == 1 ? "男" : "女"); diff --git a/boot-service/src/main/resources/druid.properties b/boot-service/src/main/resources/druid.properties index 9fa6dee..5ed6bdb 100644 --- a/boot-service/src/main/resources/druid.properties +++ b/boot-service/src/main/resources/druid.properties @@ -27,7 +27,7 @@ db1.filters=stat,wall,slf4j # 通过connectProperties属性来打开mergeSql功能;慢SQL记录 db1.connect-properties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000 # 合并多个DruidDataSource的监控数据 -#datasource.useGlobalDataSourceStat=true +#db1.useGlobalDataSourceStat=true ##WebStatFilter配置################################### db1.web-stat-filter.enabled=false db1.web-stat-filter.url-pattern=/* @@ -51,33 +51,22 @@ db1.stat-view-servlet.allow= #IP黑名单(存在共同时,deny优先于allow) db1.stat-view-servlet.deny= ########################################################################################################### -##jdbc配置##################################### db2.driver-class-name=com.mysql.jdbc.Driver db2.url=jdbc:mysql://127.0.0.1:3306/xwbing?useUnicode=true&characterEncoding=utf8&useSSL=false db2.username=root db2.password=xwbing -##连接池配置############################### -# 初始化大小,最小,最大 db2.initial-size=1 db2.min-idle=3 db2.max-active=20 -# 获取连接最大等待时间 db2.max-wait=60000 -# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 db2.time-between-eviction-runs-millis=60000 -# 配置一个连接在池中最小生存的时间,单位是毫秒 db2.min-evictable-idle-time-millis=30000 -# 连接性能检测(用来检测连接是否有效的sql,为null,testOnBorrow、testOnReturn、testWhileIdle都不会起作用) db2.validation-query=SELECT 'x' db2.test-while-idle=true druid.db2.test-on-borrow=false db2.test-on-return=false -# 打开PSCache,并且指定每个连接上PSCache的大小 ,mysql5.5以下的版本中没有PSCache功能,建议关闭掉 db2.pool-prepared-statements=true db2.max-pool-prepared-statement-per-connection-size=20 -# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙,防止sql注入 db2.filters=stat,wall,slf4j -# 通过connectProperties属性来打开mergeSql功能;慢SQL记录 db2.connect-properties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000 -# 合并多个DruidDataSource的监控数据 -#datasource.useGlobalDataSourceStat=true \ No newline at end of file +#db2.useGlobalDataSourceStat=true \ No newline at end of file diff --git a/boot-service/src/main/resources/mapper/sysUser.xml b/boot-service/src/main/resources/mapper/sysUser.xml new file mode 100644 index 0000000..b98c278 --- /dev/null +++ b/boot-service/src/main/resources/mapper/sysUser.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + user_id, user_name, password, phone + + + + SELECT UUID() + + INSERT INTO sys_user_info(id,name,user_name,mail,is_admin,sex,create_time,modified_time) VALUES + (#{id},#{name},#{userName},#{mail},#{isAdmin},#{sex},now(),now()) + + + + \ No newline at end of file diff --git a/boot-web/src/main/java/com/xwbing/Application.java b/boot-web/src/main/java/com/xwbing/Application.java index 6605451..2d5526d 100644 --- a/boot-web/src/main/java/com/xwbing/Application.java +++ b/boot-web/src/main/java/com/xwbing/Application.java @@ -2,7 +2,6 @@ package com.xwbing; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.transaction.annotation.EnableTransactionManagement; /** * 项目名称: boot-module-demo @@ -10,9 +9,7 @@ import org.springframework.transaction.annotation.EnableTransactionManagement; * 作者: boot-module-demo * 说明: 启动类 */ -//@EnableRabbit @SpringBootApplication -@EnableTransactionManagement //@Configuration 定义为配置类,相当于xml文件中的 //@ComponentScan 组件扫描 //@EnableAutoConfiguration 借助@Import的帮助,将所有符合自动配置条件的bean定义加载到IoC容器 diff --git a/boot-web/src/main/java/com/xwbing/controller/rest/TestControl.java b/boot-web/src/main/java/com/xwbing/controller/rest/TestControl.java index 0a3a8c2..014e2c9 100644 --- a/boot-web/src/main/java/com/xwbing/controller/rest/TestControl.java +++ b/boot-web/src/main/java/com/xwbing/controller/rest/TestControl.java @@ -3,7 +3,10 @@ package com.xwbing.controller.rest; import com.alibaba.fastjson.JSONObject; import com.xwbing.annotation.LogInfo; import com.xwbing.domain.entity.ExpressInfo; +import com.xwbing.domain.entity.sys.SysUser; import com.xwbing.domain.entity.vo.ExpressInfoVo; +import com.xwbing.domain.mapper.SysUserMapper; +import com.xwbing.exception.BusinessException; import com.xwbing.rabbit.Sender; import com.xwbing.redis.RedisService; import com.xwbing.service.rest.CookieSessionService; @@ -16,6 +19,7 @@ import com.xwbing.util.RestMessage; import io.swagger.annotations.Api; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; +import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; @@ -46,7 +50,14 @@ public class TestControl { private CookieSessionService cookieSessionService; @Resource private Sender sender; - + @Resource + private SysUserMapper sysUserMapper; + @Transactional + @PostMapping("save") + public void save(@RequestBody SysUser sysUser) { + int save = sysUserMapper.save(sysUser); + System.out.println("shiwi"); + } @GetMapping("send") public void sendM(@RequestParam String[] msg) { sender.sendM(msg); diff --git a/boot-web/src/main/java/com/xwbing/controller/sys/SysUserControl.java b/boot-web/src/main/java/com/xwbing/controller/sys/SysUserControl.java index 7d34b5c..cd16308 100644 --- a/boot-web/src/main/java/com/xwbing/controller/sys/SysUserControl.java +++ b/boot-web/src/main/java/com/xwbing/controller/sys/SysUserControl.java @@ -162,7 +162,7 @@ public class SysUserControl { List button = new ArrayList<>(); List menu = new ArrayList<>(); List list; - if (CommonEnum.YesOrNoEnum.YES.getCode().equalsIgnoreCase(sysUser.getAdmin())) { + if (CommonEnum.YesOrNoEnum.YES.getCode().equalsIgnoreCase(sysUser.getIsAdmin())) { list = sysAuthorityService.listByEnable(CommonEnum.YesOrNoEnum.YES.getCode()); } else { list = sysUserService.listAuthorityByIdAndEnable(sysUser.getId(), CommonEnum.YesOrNoEnum.YES.getCode()); @@ -195,7 +195,7 @@ public class SysUserControl { if (old == null) { return JsonResult.toJSONObj("该用户不存在"); } - if (CommonEnum.YesOrNoEnum.YES.getCode().equalsIgnoreCase(old.getAdmin())) { + if (CommonEnum.YesOrNoEnum.YES.getCode().equalsIgnoreCase(old.getIsAdmin())) { return JsonResult.toJSONObj("不能对管理员进行操作"); } String[] ids = roleIds.split(","); diff --git a/boot-web/src/main/java/com/xwbing/handler/UrlPermissionsInterceptor.java b/boot-web/src/main/java/com/xwbing/handler/UrlPermissionsInterceptor.java index 0bb2511..9a8e1ff 100644 --- a/boot-web/src/main/java/com/xwbing/handler/UrlPermissionsInterceptor.java +++ b/boot-web/src/main/java/com/xwbing/handler/UrlPermissionsInterceptor.java @@ -83,7 +83,7 @@ public class UrlPermissionsInterceptor extends HandlerInterceptorAdapter { String userName = (String) CommonDataUtil.getData(token); SysUser user = sysUserService.getByUserName(userName); List sysAuthorities; - if (CommonConstant.IS_ENABLE.equalsIgnoreCase(user.getAdmin())) { + if (CommonConstant.IS_ENABLE.equalsIgnoreCase(user.getIsAdmin())) { sysAuthorities = sysAuthorityService.listByEnable(CommonEnum.YesOrNoEnum.YES.getCode()); } else { sysAuthorities = sysUserService.listAuthorityByIdAndEnable(user.getId(), "Y"); diff --git a/boot-web/src/main/resources/application.yml b/boot-web/src/main/resources/application.yml index c4ab006..e3aa73d 100644 --- a/boot-web/src/main/resources/application.yml +++ b/boot-web/src/main/resources/application.yml @@ -7,7 +7,6 @@ server: #spring spring: - #datasource # datasource: # driver-class-name: com.mysql.jdbc.Driver # url: jdbc:mysql://127.0.0.1:3306/springboot2?useUnicode=true&characterEncoding=utf8 @@ -61,8 +60,9 @@ spring: size: 1 #mybatis mybatis: - mapper-locations: - config-location: + mapper-locations: #classpath:mapper/*.xml + type-aliases-package: #com.xwbing.domain.entity + config-location: # classpath:mybatisConfig.xml #log logging: config: classpath:log4j2.xml