datasource
packagecom.grass.config;

importcom.alibaba.druid.pool.DruidDataSource;
importcom.github.pagehelper.PageHelper;
importcom.grass.common.interceptor.PerformanceInterceptor;
importorg.apache.ibatis.plugin.Interceptor;
importorg.apache.ibatis.session.SqlSessionFactory;
importorg.mybatis.spring.SqlSessionFactoryBean;
importorg.mybatis.spring.SqlSessionTemplate;
importorg.mybatis.spring.annotation.MapperScan;
importorg.slf4j.Logger;
importorg.slf4j.LoggerFactory;
importorg.springframework.beans.factory.annotation.Value;
importorg.springframework.context.EnvironmentAware;
importorg.springframework.context.annotation.Bean;
importorg.springframework.context.annotation.Configuration;
importorg.springframework.core.annotation.Order;
importorg.springframework.core.env.Environment;
importorg.springframework.core.io.support.PathMatchingResourcePatternResolver;
importorg.springframework.jdbc.datasource.DataSourceTransactionManager;
importorg.springframework.transaction.PlatformTransactionManager;
importorg.springframework.transaction.annotation.EnableTransactionManagement;

importjavax.sql.DataSource;
importjava.util.Properties;

/**
*Createdbyon2016/4/18.
*/
@Configuration
@EnableTransactionManagement
//@MapperScan("com.grass.module.**.mapper")
@Order(2)
publicclassDataSourceConfigimplementsEnvironmentAware{

@Value("${spring.datasource.driver-class-name}")
privateStringdriverClassName;
@Value("${spring.datasource.url}")
privateStringurl;
@Value("${spring.datasource.username}")
privateStringusername;
@Value("${spring.datasource.password}")
privateStringpassword;
@Value("${spring.datasource.max-active}")
privateintmaxActive;
@Value("${spring.datasource.initial-size}")
privateintinitialSize;
@Value("${spring.datasource.max-wait}")
privateintmaxWait;
@Value("${spring.datasource.min-idle}")
privateintminIdle;
@Value("${spring.datasource.time-between-eviction-runs-millis}")
privateinttimeBetweenEvictionRunsMillis;
@Value("${spring.datasource.min-evictable-idle-time-millis}")
privatelongminEvictableIdleTimeMillis;
@Value("${spring.datasource.validation-query}")
privateStringvalidationQuery;
@Value("${spring.datasource.test-while-idle}")
privatebooleantestWhileIdle;
@Value("${spring.datasource.test-on-borrow}")
privatebooleantestOnBorrow;
@Value("${spring.datasource.test-on-return}")
privatebooleantestOnReturn;
@Value("${spring.datasource.pool-prepared-statements}")
privatebooleanpoolPreparedStatements;
@Value("${spring.datasource.max-open-prepared-statements}")
privateintmaxOpenPreparedStatements;
@Value("${mybatis.typeAliasesPackage}")
privateStringtypeAliasesPackage;
@Value("${mybatis.mapperLocations}")
privateStringmapperLocations;
@Value("${spring.datasource.filters}")
privateStringfilters;

privatestaticLoggerlogger=LoggerFactory.getLogger(DataSourceConfig.class);

@Bean
publicDataSourcedataSource(){
logger.info("grass-----DataSourceConfig-----dataSource-------------init");
logger.info("grass-----DataSourceConfig-----dataSource-------------driverClassName:"+this.driverClassName);
logger.info("grass-----DataSourceConfig-----dataSource-------------url:"+this.url);
logger.info("grass-----DataSourceConfig-----dataSource-------------username:"+this.username);
logger.info("grass-----DataSourceConfig-----dataSource-------------password:"+this.password);
DruidDataSourcedataSource=newDruidDataSource();
dataSource.setUrl(this.url);
dataSource.setDriverClassName(this.driverClassName);
dataSource.setUsername(this.username);
dataSource.setPassword(this.password);
dataSource.setMaxActive(this.maxActive);
dataSource.setMinIdle(this.minIdle);
dataSource.setTimeBetweenEvictionRunsMillis(this.timeBetweenEvictionRunsMillis);
dataSource.setMinEvictableIdleTimeMillis(this.minEvictableIdleTimeMillis);
dataSource.setValidationQuery(this.validationQuery);
dataSource.setTestWhileIdle(this.testWhileIdle);
dataSource.setTestOnBorrow(this.testOnBorrow);
dataSource.setTestOnReturn(this.testOnReturn);
dataSource.setPoolPreparedStatements(this.poolPreparedStatements);
dataSource.setMaxOpenPreparedStatements(this.maxOpenPreparedStatements);
try{
dataSource.setFilters(this.filters);
}catch(Exceptione){
e.printStackTrace();
returndataSource;
}
returndataSource;
}

@Bean(name="transactionManager")
publicDataSourceTransactionManagertransactionManager(DataSourcedataSource){
logger.info("grass-----DataSourceConfig-----transactionManager-------------init");
DataSourceTransactionManagerdataSourceTransactionManager=newDataSourceTransactionManager(dataSource);
returndataSourceTransactionManager;

}

@Bean
publicSqlSessionTemplatesqlSessionTemplate(SqlSessionFactorysqlSessionFactory){
returnnewSqlSessionTemplate(sqlSessionFactory);
}

@Bean(name="sqlSessionFactory")
publicSqlSessionFactorysqlSessionFactory(DataSourcedataSource)throwsException{
logger.info("grass-----DataSourceConfig-----sqlSessionFactory-------------init");
SqlSessionFactoryBeansessionFactory=newSqlSessionFactoryBean();
sessionFactory.setDataSource(dataSource);
Interceptor[]interceptors=newInterceptor[2];
PageHelperpageHelper=newPageHelper();
Propertiesproperties=newProperties();
//<!--4.0.0以后版本可以不设置该参数-->
//<propertyname="dialect"value="mysql"/>
//<!--该参数默认为false-->
//<!--设置为true时,会将RowBounds第一个参数offset当成pageNum页码使用-->
//<!--和startPage中的pageNum效果一样-->
//<propertyname="offsetAsPageNum"value="true"/>
//<!--该参数默认为false-->
//<!--设置为true时,使用RowBounds分页会进行count查询-->
//<propertyname="rowBoundsWithCount"value="true"/>
//<!--设置为true时,如果pageSize=0或者RowBounds.limit=0就会查询出全部的结果-->
//<!--(相当于没有执行分页查询,但是返回结果仍然是Page类型)-->
//<propertyname="pageSizeZero"value="true"/>
//<!--3.3.0版本可用-分页参数合理化,默认false禁用-->
//<!--启用合理化时,如果pageNum<1会查询第一页,如果pageNum>pages会查询最后一页-->
//<!--禁用合理化时,如果pageNum<1或pageNum>pages会返回空数据-->
//<propertyname="reasonable"value="false"/>
//<!--3.5.0版本可用-为了支持startPage(Objectparams)方法-->
//<!--增加了一个`params`参数来配置参数映射,用于从Map或ServletRequest中取值-->
//<!--可以配置pageNum,pageSize,count,pageSizeZero,reasonable,orderBy,不配置映射的用默认值-->
//<!--不理解该含义的前提下,不要随便复制该配置-->
//<propertyname="params"value="pageNum=start;pageSize=limit;"/>
//<!--支持通过Mapper接口参数来传递分页参数-->
//<propertyname="supportMethodsArguments"value="true"/>
//<!--always总是返回PageInfo类型,check检查返回类型是否为PageInfo,none返回Page-->
//<propertyname="returnPageInfo"value="check"/>
properties.put("dialect","mysql");
properties.put("rowBoundsWithCount",true);
properties.put("pageSizeZero",false);
properties.put("reasonable",true);
properties.put("supportMethodsArguments",true);
properties.put("returnPageInfo","check");
properties.put("mapUnderscoreToCamelCase",true);
properties.put("cacheEnabled",true);
properties.put("mappers","tk.mybatis.mapper.common.Mapper");
PerformanceInterceptorperformanceInterceptor=newPerformanceInterceptor();
interceptors[0]=performanceInterceptor;
interceptors[1]=pageHelper;
sessionFactory.setPlugins(interceptors);
sessionFactory.setConfigurationProperties(properties);
sessionFactory.setTypeAliasesPackage(this.typeAliasesPackage);
sessionFactory.setMapperLocations(newPathMatchingResourcePatternResolver().getResources(this.mapperLocations));
returnsessionFactory.getObject();
}

@Override
publicvoidsetEnvironment(Environmentenvironment){
}
}

MyBatisMapperScannerConfig
packagecom.grass.config;

importcom.grass.common.persistence.BaseMapper;
importorg.springframework.boot.autoconfigure.AutoConfigureAfter;
importorg.springframework.context.annotation.Bean;
importorg.springframework.context.annotation.Configuration;
importtk.mybatis.mapper.common.Mapper;
importtk.mybatis.spring.mapper.MapperScannerConfigurer;

importjava.util.Properties;

/**
*〈一句话功能简述〉
*〈功能详细描述〉
*
*@author
*@version[v1.0,2016/6/30]
*@since[v1.0]
*/
@Configuration
//注意,由于MapperScannerConfigurer执行的比较早,所以必须有下面的注解
@AutoConfigureAfter(DataSourceConfig.class)
publicclassMyBatisMapperScannerConfig{
@Bean
publicMapperScannerConfigurermapperScannerConfigurer(){
MapperScannerConfigurermapperScannerConfigurer=newMapperScannerConfigurer();
mapperScannerConfigurer.setSqlSessionFactoryBeanName("sqlSessionFactory");
mapperScannerConfigurer.setBasePackage("com.grass.module.**.mapper");
Propertiesproperties=newProperties();
properties.setProperty("mappers",BaseMapper.class.getName());
properties.setProperty("notEmpty","false");
properties.setProperty("IDENTITY","MYSQL");
mapperScannerConfigurer.setProperties(properties);
returnmapperScannerConfigurer;
}
}


使用公共的selectByPrimaryKey方法,生成的sql是SELECTID,NAME,AGEFROMTESTWHEREID=1ANDNAME=1ANDAGE=1,应该是SELECTID,NAME,AGEFROMTESTWHEREID=1

使用selectByExample方法
报错
Thereisnogetterforpropertynamed'distinct'in'classcom.grass.module.test.entity.TestEntity'

但是我没有没有这个属性,这应该是还是生成sql的错

5 个解决方案

#1


没有人用过吗

更多相关文章

  1. SQL 函数如何设置参数默认值
  2. Mysql 修改字段类型
  3. Ms sql 2005 中的bit 数据类型
  4. SQLServer---查询过程中的数据类型转化
  5. sql语句,order by后加参数问题
  6. PostgreSQL: array 数组类型添加元素 数组的使用
  7. 原因及解决:java.sql.SQLException: 无效的列类型: 1111
  8. 检索SQL语句的输出参数
  9. Oracle 00932. 00000 - “不一致的数据类型:预期%s获得%s”

随机推荐

  1. 解决Android 状态栏重叠
  2. android api 完整翻译之Application Fund
  3. Android EditText 学习笔记
  4. Android市场将持续爆发
  5. Android 手势识别判断,GestureDetector封
  6. Android - 约束布局实现一个简单的登陆界
  7. 我对学习delphiTeacher的《delphi调用及
  8. Android注解:自定义注解之源码注解
  9. android 通过占位符来动态获得字符串资源
  10. Android——多线程