提交 aaeeb66b 编写于 作者: N Nicky 提交者: u014427391

重整项目结构

上级 19578745
......@@ -130,19 +130,6 @@
<version>${druid.version}</version>
</dependency>
<!-- mybatis
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>${mybatis.version}</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>${mybatis.spring.version}</version>
</dependency>
-->
<!-- pagehelper -->
<dependency>
<groupId>com.github.pagehelper</groupId>
......@@ -156,6 +143,7 @@
<artifactId>mysql-connector-java</artifactId>
<version>${mysql-connector.version}</version>
</dependency>
<!-- fastjson -->
<dependency>
<groupId>com.alibaba</groupId>
......@@ -163,6 +151,34 @@
<version>1.2.35</version>
</dependency>
<!-- log4j-->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>${log4j.version}</version>
</dependency>
<!-- 其他工具包-->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.2.2</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.9</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.5</version>
</dependency>
</dependencies>
<!-- 设定Maven主仓库为阿里私服 -->
<repositories>
......
......@@ -37,7 +37,7 @@ public class BaseConfig {
/**
* 实体类 所在包
*/
public static final String ENTITY_PACKAGES = "com.muses.taoshop.**.dto";
public static final String ENTITY_PACKAGES = "com.muses.taoshop.*.entity";
/**
* Mybatis session 工厂
......
package com.muses.taoshop.common.core.database.config;
import com.muses.taoshop.common.core.database.annotation.MybatisRepository;
import org.apache.ibatis.io.DefaultVFS;
import org.apache.ibatis.io.ResolverUtil;
import org.apache.ibatis.io.VFS;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan;
import org.mybatis.spring.boot.autoconfigure.MybatisProperties;
import org.mybatis.spring.boot.autoconfigure.SpringBootVFS;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.core.io.support.ResourcePatternResolver;
import org.springframework.core.type.classreading.CachingMetadataReaderFactory;
import org.springframework.core.type.classreading.MetadataReader;
import org.springframework.core.type.classreading.MetadataReaderFactory;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import org.springframework.util.ClassUtils;
import javax.sql.DataSource;
import java.io.IOException;
import java.util.*;
import static com.muses.taoshop.common.core.database.config.BaseConfig.*;
......@@ -33,13 +50,18 @@ import static com.muses.taoshop.common.core.database.config.BaseConfig.*;
* 修改后版本: 修改人: 修改日期: 修改内容:
* </pre>
*/
@Configuration
@MapperScan(
basePackages = MAPPER_PACKAGES,
annotationClass = MybatisRepository.class,
sqlSessionFactoryRef = SQL_SESSION_FACTORY
)
@EnableTransactionManagement
@Configuration
@ConditionalOnClass({ SqlSessionFactory.class, SqlSessionFactoryBean.class })
@ConditionalOnBean(DataSource.class)
@EnableConfigurationProperties(MybatisProperties.class)
@AutoConfigureAfter(DataSourceAutoConfiguration.class)
public class MybatisConfig {
@Bean(name = DATA_SOURCE_NAME)
......@@ -52,15 +74,20 @@ public class MybatisConfig {
@Primary
@Bean(name = SQL_SESSION_FACTORY)
public SqlSessionFactory sqlSessionFactory(@Qualifier(DATA_SOURCE_NAME)DataSource dataSource)throws Exception{
//SpringBoot默认使用DefaultVFS进行扫描,但是没有扫描到jar里的实体类
//VFS.addImplClass(SpringBootVFS.class);
SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
factoryBean.setDataSource(dataSource);
//factoryBean.setConfigLocation(new ClassPathResource("mybatis-config.xml"));
ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
try{
factoryBean.setTypeAliasesPackage(ENTITY_PACKAGES);
factoryBean.setVfs(SpringBootVFS.class);
//factoryBean.setVfs(SpringBootVFS.class);
factoryBean.setMapperLocations(resolver.getResources("classpath*:/mybatis/*Mapper.xml"));
return factoryBean.getObject();
//factoryBean.setVfs(SpringBootVFS.class);
String typeAliasesPackage=setTypeAliasesPackage(ENTITY_PACKAGES);
factoryBean.setTypeAliasesPackage(typeAliasesPackage);
SqlSessionFactory sqlSessionFactory = factoryBean.getObject();
return sqlSessionFactory;
}catch (Exception e){
e.printStackTrace();
throw new RuntimeException();
......@@ -72,4 +99,52 @@ public class MybatisConfig {
return new DataSourceTransactionManager(dataSource);
}
static final String DEFAULT_RESOURCE_PATTERN = "**/*.class";
public static String setTypeAliasesPackage(String typeAliasesPackage) {
ResourcePatternResolver resolver = (ResourcePatternResolver) new PathMatchingResourcePatternResolver();
MetadataReaderFactory metadataReaderFactory = new CachingMetadataReaderFactory(
resolver);
typeAliasesPackage = ResourcePatternResolver.CLASSPATH_ALL_URL_PREFIX
+ ClassUtils.convertClassNameToResourcePath(typeAliasesPackage)
+ "/" + DEFAULT_RESOURCE_PATTERN;
try {
List<String> result = new ArrayList<String>();
Resource[] resources = resolver.getResources(typeAliasesPackage);
if (resources != null && resources.length > 0) {
MetadataReader metadataReader = null;
for (Resource resource : resources) {
if (resource.isReadable()) {
metadataReader = metadataReaderFactory
.getMetadataReader(resource);
try {
// System.out.println(Class.forName(metadataReader.getClassMetadata().getClassName()).getPackage().getName());
result.add(Class
.forName(
metadataReader.getClassMetadata()
.getClassName())
.getPackage().getName());
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
}
if (result.size() > 0) {
HashSet<String> h = new HashSet<String>(result);
result.clear();
result.addAll(h);
typeAliasesPackage=String.join(",",(String[]) result.toArray(new String[0]));
System.out.println(typeAliasesPackage);
} else {
throw new RuntimeException(
"mybatis typeAliasesPackage 路径扫描错误,参数typeAliasesPackage:"
+ typeAliasesPackage + "未找到任何包");
}
} catch (IOException e) {
e.printStackTrace();
}
return typeAliasesPackage;
}
}
\ No newline at end of file
package com.muses.taoshop.web.controller.cart;
import org.springframework.stereotype.Controller;
/**
* <pre>
* 购物车控制类
* </pre>
*
* @author nicky
* @version 1.00.00
* <pre>
* 修改记录
* 修改后版本: 修改人: 修改日期: 2018.06.17 00:46 修改内容:
* </pre>
*/
@Controller
public class ShopCartController {
}
package com.muses.taoshop.web.controller.portal;
import com.alibaba.fastjson.JSON;
import com.muses.taoshop.item.dto.ItemBrand;
import com.muses.taoshop.item.entity.ItemBrand;
import com.muses.taoshop.item.entity.ItemCategory;
import com.muses.taoshop.item.service.IItemBrankService;
import com.muses.taoshop.item.service.IItemCategoryService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
......@@ -28,24 +33,39 @@ public class IndexController {
@Autowired
IItemBrankService iItemBrankService;
@Autowired
IItemCategoryService iItemCategoryService;
//@RequestMapping(value = "/toIndex" ,method = RequestMethod.GET)
/**
* 跳转到门户网站
* @return
*/
@GetMapping(value = "/toIndex.do")
public String toIndex(){
return "/index";
}
public String test(){
return "";
}
@GetMapping(value = "/doTest")
@ResponseBody
public String doTest(){
public String doTest(){
List<ItemBrand> itemBrands = iItemBrankService.listItemBrand();
String str = JSON.toJSON(itemBrands).toString();
return str;
}
@GetMapping(value = "/listRootCategory")
@ResponseBody
public String listRootCategory(){
List<ItemCategory> categories = new ArrayList<ItemCategory>();
categories = iItemCategoryService.listCategory();
String jsonString = "";
if(!CollectionUtils.isEmpty(categories)){
jsonString = JSON.toJSON(categories).toString();
return jsonString;
}
return jsonString;
}
}
......@@ -5,5 +5,5 @@
#spring.datasource.driver-class-name=com.mysql.jdbc.Driver
#spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
### Mybatis
#mybatis.typeAliasesPackage=cn.muses.taoshop.dto
#mybatis.typeAliasesPackage=cn.muses.taoshop.entity
#mybatis.mapperLocations=classpath:mapper/*.xml
\ No newline at end of file
......@@ -4,5 +4,5 @@
#spring.datasource.password=root
#spring.datasource.driver-class-name=com.mysql.jdbc.Driver
### Mybatis
#mybatis.typeAliasesPackage=cn.muses.taoshop.dto
#mybatis.typeAliasesPackage=cn.muses.taoshop.entity
#mybatis.mapperLocations=classpath:mapper/*.xml
\ No newline at end of file
......@@ -4,5 +4,5 @@
#spring.datasource.password=root
#spring.datasource.driver-class-name=com.mysql.jdbc.Driver
### Mybatis
#mybatis.typeAliasesPackage=cn.muses.taoshop.dto
#mybatis.typeAliasesPackage=cn.muses.taoshop.entity
#mybatis.mapperLocations=classpath:mapper/*.xml
\ No newline at end of file
server:
port: 8080
logging:
config: classpath:logback.xml
level:
com.muses.taoshop.item.mapper: debug
spring:
datasource:
......@@ -43,7 +50,7 @@ spring:
# format_sql: true
# ddl-auto: none
# naming:
# physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
# physical-strategy: org.hibernate.boot.entity.naming.PhysicalNamingStrategyStandardImpl
# mvc:
# view:
......
log4j.rootLogger=DEBUG,CONSOLE
###################
# Console Appender
###################
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Target=System.out
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=[%p] %d %c - %m%n
log4j.logger.jdbc.sqltiming=INFO
log4j.logger.jdbc.sqlonly=INFO
log4j.logger.com.ibatis=DEBUG
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=DEBUG
log4j.logger.com.ibatis.common.jdbc.ScriptRunner=DEBUG
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUG
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
log4j.logger.java.sql.ResultSet = DEBUG
log4j.appender.MongoDB=org.log4mongo.MongoDbAppender
log4j.appender.MongoDB.databaseName=conf
log4j.appender.MongoDB.collectionName=log
log4j.appender.MongoDB.hostname=127.0.0.1
log4j.appender.MongoDB.port=27017
<?xml version="1.0" encoding="UTF-8" ?>
<configuration debug="true">
<property name="LOG_PATTERN"
value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n" />
<property name="LOG_PATH" value="logs/portal.log" />
<property name="FILE_NAME_PATTERN" value="logs/portal.%d{yyyy-MM-dd}.%i.log" />
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${LOG_PATTERN}</pattern>
</encoder>
</appender>
<appender name="rollingFile"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_PATH}</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${FILE_NAME_PATTERN}</fileNamePattern>
<!-- keep 15 days' worth of history -->
<maxHistory>15</maxHistory>
<timeBasedFileNamingAndTriggeringPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<!-- 日志文件的最大大小 -->
<maxFileSize>10MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder>
<pattern>${LOG_PATTERN}</pattern>
</encoder>
</appender>
<!-- rest template logger-->
<logger name="org.springframework.web.client.RestTemplate" level="DEBUG" />
<logger name="org.springframework" level="DEBUG" />
<!-- log4j jdbc-->
<logger name="jdbc.sqltiming" level="DEBUG" />
<logger name="log4j.logger.java.sql" level="DEBUG" />
<logger name="org.mybatis" level="DEBUG" />
<!-- 日志输出级别 -->
<root leve="DEBUG">
<appender-ref ref="console" />
<appender-ref ref="rollingFile" />
</root>
</configuration>
\ No newline at end of file
......@@ -463,7 +463,7 @@ jQuery.extend({
// A fallback to window.onload, that will always work
window.addEventListener( "load", jQuery.ready, false );
// If IE event model is used
// If IE event entity is used
} else if ( document.attachEvent ) {
// ensure firing before onload,
// maybe late but safe also for iframes
......@@ -1559,7 +1559,7 @@ jQuery.support = (function() {
// (IE <= 8 fail this test)
support.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 );
// Figure out if the W3C box model works as expected
// Figure out if the W3C box entity works as expected
div.innerHTML = "";
div.style.width = div.style.paddingLeft = "1px";
jQuery.boxModel = support.boxModel = div.offsetWidth === 2;
......
package com.muses.taoshop.item.dto;
package com.muses.taoshop.item.entity;
import java.util.Date;
import java.util.List;
/**
* <pre>
......@@ -39,6 +40,11 @@ public class ItemCategory {
*/
private Date createTime;
/**
* 子菜单
*/
private List<ItemCategory> subCategorys;
public Long getId() {
return id;
}
......@@ -79,4 +85,12 @@ public class ItemCategory {
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public List<ItemCategory> getSubCategorys() {
return subCategorys;
}
public void setSubCategorys(List<ItemCategory> subCategorys) {
this.subCategorys = subCategorys;
}
}
\ No newline at end of file
package com.muses.taoshop.item.service;
import com.muses.taoshop.item.dto.ItemBrand;
import com.muses.taoshop.item.entity.ItemBrand;
import java.util.List;
......@@ -17,5 +17,9 @@ import java.util.List;
* </pre>
*/
public interface IItemBrankService {
/**
* 查询所有的商品品牌信息
* @return
*/
List<ItemBrand> listItemBrand();
}
package com.muses.taoshop.item.service;
import com.muses.taoshop.item.entity.ItemCategory;
import java.util.List;
/**
* <pre>
* 商品品类信息接口
* </pre>
*
* @author nicky
* @version 1.00.00
* <pre>
* 修改记录
* 修改后版本: 修改人: 修改日期: 2018.06.17 10:59 修改内容:
* </pre>
*/
public interface IItemCategoryService {
/**
* 查询根级商品品类信息
* @return
*/
List<ItemCategory> listCategory();
}
......@@ -2,7 +2,7 @@ package com.muses.taoshop.item.mapper;
import com.muses.taoshop.common.core.database.annotation.MybatisRepository;
import com.muses.taoshop.item.dto.ItemBrand;
import com.muses.taoshop.item.entity.ItemBrand;
import java.util.List;
......
package com.muses.taoshop.item.mapper;
import com.muses.taoshop.common.core.database.annotation.MybatisRepository;
import com.muses.taoshop.item.dto.ItemCategory;
import com.muses.taoshop.item.entity.ItemCategory;
import java.util.List;
@MybatisRepository
public interface ItemCategoryMapper {
int deleteByPrimaryKey(Long id);
int insert(ItemCategory record);
int insertSelective(ItemCategory record);
// List<ItemCategory> selectByExample(ItemCategoryExample example);
ItemCategory selectByPrimaryKey(Long id);
// int updateByExampleSelective(@Param("record") ItemCategory record, @Param("example") ItemCategoryExample example);
// int updateByExample(@Param("record") ItemCategory record, @Param("example") ItemCategoryExample example);
int updateByPrimaryKeySelective(ItemCategory record);
List<ItemCategory> listRootCategory();
int updateByPrimaryKey(ItemCategory record);
}
\ No newline at end of file
package com.muses.taoshop.item.mapper;
import com.muses.taoshop.common.core.database.annotation.MybatisRepository;
import com.muses.taoshop.item.dto.ItemSku;
import com.muses.taoshop.item.entity.ItemSku;
@MybatisRepository
public interface ItemSkuMapper {
......
......@@ -3,7 +3,7 @@ package com.muses.taoshop.item.mapper;
import com.muses.taoshop.common.core.database.annotation.MybatisRepository;
import java.util.List;
import com.muses.taoshop.item.dto.ItemSkuSpecValue;
import com.muses.taoshop.item.entity.ItemSkuSpecValue;
import org.apache.ibatis.annotations.Param;
@MybatisRepository
......
package com.muses.taoshop.item.mapper;
import com.muses.taoshop.common.core.database.annotation.MybatisRepository;
import com.muses.taoshop.item.dto.ItemSpec;
import com.muses.taoshop.item.entity.ItemSpec;
@MybatisRepository
public interface ItemSpecMapper {
......
package com.muses.taoshop.item.mapper;
import com.muses.taoshop.common.core.database.annotation.MybatisRepository;
import com.muses.taoshop.item.dto.ItemSpecValue;
import com.muses.taoshop.item.entity.ItemSpecValue;
@MybatisRepository
public interface ItemSpecValueMapper {
......
package com.muses.taoshop.item.mapper;
import com.muses.taoshop.common.core.database.annotation.MybatisRepository;
import com.muses.taoshop.item.dto.ItemSpu;
import com.muses.taoshop.item.entity.ItemSpu;
@MybatisRepository
public interface ItemSpuMapper {
......
......@@ -3,7 +3,7 @@ package com.muses.taoshop.item.mapper;
import com.muses.taoshop.common.core.database.annotation.MybatisRepository;
import java.util.List;
import com.muses.taoshop.item.dto.ItemSpuSpec;
import com.muses.taoshop.item.entity.ItemSpuSpec;
import org.apache.ibatis.annotations.Param;
@MybatisRepository
......
package com.muses.taoshop.item.service;
import com.muses.taoshop.item.dto.ItemBrand;
import com.muses.taoshop.item.entity.ItemBrand;
import com.muses.taoshop.item.mapper.ItemBrandMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
......@@ -9,7 +9,7 @@ import java.util.List;
/**
* <pre>
* TODO 类说明
* 商品品牌信息服务实现类
* </pre>
*
* @author nicky
......
package com.muses.taoshop.item.service;
import com.muses.taoshop.item.entity.ItemCategory;
import com.muses.taoshop.item.mapper.ItemCategoryMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* <pre>
* 商品品类信息服务实现类
* </pre>
*
* @author nicky
* @version 1.00.00
* <pre>
* 修改记录
* 修改后版本: 修改人: 修改日期: 2018.06.17 11:01 修改内容:
* </pre>
*/
@Service
public class ItemCategoryServiceImpl implements IItemCategoryService{
@Autowired
ItemCategoryMapper itemCategoryMapper;
/**
* 查询跟级商品品类信息
*
* @return
*/
@Override
public List<ItemCategory> listCategory() {
return null;
}
}
<?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" >
<mapper namespace="com.muses.taoshop.item.mapper.ItemBrandMapper" >
<resultMap id="ItemBrand" type="com.muses.taoshop.item.dto.ItemBrand" >
<resultMap id="baseResultMap" type="com.muses.taoshop.item.dto.ItemBrand" >
<id column="id" property="id" jdbcType="BIGINT" />
<result column="brand_name" property="brandName" jdbcType="VARCHAR" />
<result column="last_modify_time" property="lastModifyTime" jdbcType="TIMESTAMP" />
<result column="create_time" property="createTime" jdbcType="TIMESTAMP" />
</resultMap>
<select id="listItemBrand" resultMap="ItemBrand">
<select id="listItemBrand" resultMap="baseResultMap">
<![CDATA[
SELECT * from item_brand
]]>
......
<?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" >
<mapper namespace="com.muses.taoshop.mapper.ItemCategoryMapper" >
<resultMap id="BaseResultMap" type="com.muses.taoshop.item.entity.ItemCategory" >
<id column="id" property="id" jdbcType="BIGINT" />
<result column="category_name" property="categoryName" jdbcType="VARCHAR" />
<result column="sjid" property="sjid" jdbcType="BIGINT" />
<result column="last_modify_time" property="lastModifyTime" jdbcType="TIMESTAMP" />
<result column="create_time" property="createTime" jdbcType="TIMESTAMP" />
</resultMap>
<sql id="Base_Column_List" >
id, category_name, sjid, last_modify_time, create_time
</sql>
<!-- 获取所有的根据品类信息-->
<select id="listRootCategory" resultType="ItemCategory">
SELECT id , category_name
FROM item_category t
</select>
</mapper>
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册