1 所需依赖
<!--spring-core
spring-beans 管理bean
spring-context 管理bean
spring-webmvc springmvc
spring-web springmvc
spring-tx 事物
spring-jdbc 管理datasource
spring-test 测试
spring-aop 切面
spring-aspects 等依赖-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>5.0.7.RELEASE</version>
</dependency>
<!-- jstl -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<!-- servlet -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</dependency>
<! -- 连接mysql驱动 -- >
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.0.8</version>
</dependency>
<!-- mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
<!-- mybatis 插件-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus</artifactId>
<version>3.0.1</version>
</dependency>
<!-- 整合swagger2 自动生成接口文档 -->
<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>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.51</version>
</dependency>
2 Config
2.1 全局配置ApplicationConfig
@ComponentScan(basePackages= "com.cc.ssmDemo")
@MapperScan(basePackages = "cm.cc.ssmDemo.mapper")
@EnableTransactionManagement
@Configuration
@Import({DBConnectConfig.class,MvcConfig.class})
public class ApplicationConfig extends WebMvcConfigurationSupport{
@Autowired
private ConfigurableConversionService conversionService;
@Autowired
private DateConvert dateConvert;
public ApplicationConfig() {
System.out.println("应用启动……");
}
//日期转化器
@PostConstruct
public void initEditableAvlidation(){
if (conversionService!=null){
conversionService.addConverter(dateConvert);
}
}
// jsp视图解析器
@Bean
public InternalResourceViewResolver resourceViewResolver(){
InternalResourceViewResolver ir = new InternalResourceViewResolver();
ir.setPrefix("/WEB-INF/jsp/");
ir.setSuffix(".jsp");
return ir;
}
/* // 配置 multipart类型解析器
@Bean
public MultipartResolver multipartResolver(){
CommonsMultipartResolver resolver = new CommonsMultipartResolver();
resolver.setDefaultEncoding("utf-8");
resolver.setMaxUploadSize(50*1024*1024);
resolver.setMaxInMemorySize(40*1024*1024);
return resolver;
}*/
}
2.2 mvc配置
不拦截静态资源,配置过滤器,json数据转换器,跨域等
@Configuration
@EnableWebMvc
public class MvcConfig implements WebMvcConfigurer {
/*@Autowired
private MyHandlerIntercepter intercepter1;
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(intercepter1);
}
*/
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer conf) {
conf.enable();
}
/* public void configureViewResolvers(ViewResolverRegistry registry) {
registry.jsp("/WEB-INF/jsp/", ".jsp");
registry.enableContentNegotiation(new MappingJackson2JsonView());
}*/
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/js/**").addResourceLocations("/js/");
}
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
// 1、需要先定义一个·convert转换消息的对象;
FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();
// 2、添加fastjson的配置信息,比如 是否要格式化返回json数据
FastJsonConfig fastJsonConfig = new FastJsonConfig();
fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat);
// 3、在convert中添加配置信息.
fastConverter.setFastJsonConfig(fastJsonConfig);
// 4、将convert添加到converters当中.
converters.add(fastConverter);
}
@Override
public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
configurer.favorPathExtension(true)
.ignoreAcceptHeader(true)
.parameterName("mediaType")
.defaultContentType(MediaType.TEXT_HTML)
.mediaType("html", MediaType.TEXT_HTML)
.mediaType("json", MediaType.APPLICATION_JSON);
}
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**").allowedOrigins("*")
.allowedMethods("*").allowedHeaders("*")
.allowCredentials(true);
}
}
2.3 配置数据源
@Configuration
@EnableTransactionManagement
@PropertySource("classpath:db.properties")
public class DBConnectConfig {
@Value("${db.driver}")
private String DRIVER;
@Value("${db.url}")
private String URL;
@Value("${db.username}")
private String USERNAME;
@Value("${db.password}")
private String PASSWORD;
@Bean
public DataSourceTransactionManager dataSourceTransactionManager(DataSource dataSource){
DataSourceTransactionManager dm = new DataSourceTransactionManager();
dm.setDataSource(dataSource);
return dm;
}
@Bean
public SqlSessionFactoryBean sqlSessionFactoryBean(DataSource dataSource){
SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
factoryBean.setDataSource(dataSource);
return factoryBean;
}
/*@Bean
public PlatformTransactionManager transactionManager(DataSource dataSource) {
DataSourceTransactionManager dataSourceTransactionManager = new DataSourceTransactionManager(dataSource);
return dataSourceTransactionManager;
}*/
@Bean
public DataSource dataSource(){
PooledDataSource dataSource = new PooledDataSource();
dataSource.setDriver(DRIVER);
dataSource.setUrl(URL);
dataSource.setUsername(USERNAME);
dataSource.setPassword(PASSWORD);
return dataSource;
}
}
2.4 web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<context-param>
<param-name>contextClass</param-name>
<param-value>
org.springframework.web.context.support.AnnotationConfigWebApplicationContext
</param-value>
</context-param>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>com.cc.ssmDemo.config.ApplicationConfig</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<!-- 配置前端控制器 -->
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextClass</param-name>
<param-value>org.springframework.web.context.support.AnnotationConfigWebApplicationContext
</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>/WEB-INF/jsp/index.jsp</welcome-file>
</welcome-file-list>
</web-app>
3 代码生成器
public class CodeGenerator {
public static void main(String[] args) {
// 代码生成器
AutoGenerator mpg = new AutoGenerator();
// 全局配置
GlobalConfig gc = new GlobalConfig();
gc.setFileOverride(true);
gc.setActiveRecord(true);// 开启 activeRecord 模式
gc.setEnableCache(false);// XML 二级缓存
gc.setBaseResultMap(true);// XML ResultMap
gc.setBaseColumnList(false);// XML columList
String projectPath = System.getProperty("user.dir");
gc.setOutputDir(projectPath + "/src/main/java");
gc.setAuthor("cc");
gc.setOpen(false);
// 自定义文件命名,注意 %s 会自动填充表实体属性!
gc.setMapperName("%sMapper");
gc.setXmlName("%sMapper");
gc.setServiceName("%sService");
gc.setServiceImplName("%sServiceImpl");
mpg.setGlobalConfig(gc);
// 数据源配置
DataSourceConfig dsc = new DataSourceConfig();
// 数据源配置
dsc.setDbType(DbType.MYSQL);
dsc.setDriverName("com.mysql.jdbc.Driver");
dsc.setUsername("root");
dsc.setPassword("root");
dsc.setUrl("jdbc:mysql://127.0.0.1:3306/ssm?characterEncoding=utf8");
mpg.setDataSource(dsc);
// 策略配置
StrategyConfig strategy = new StrategyConfig();
strategy.setTablePrefix(new String[]{"t_"});// 此处可以修改为您的表前缀
// strategy.setInclude(new String[]{"user"}); // 需要生成的表
// strategy.setNaming(NamingStrategy.underline_to_camel);// 表名生成策略
// strategy.setInclude(new String[] { rb.getString("tableName")}); // 需要生成的表
strategy.setFieldPrefix("c_"); // 去掉字段的前缀
strategy.setEntityBooleanColumnRemoveIsPrefix(true);
// strategy.setExclude(new String[]{"t_rong_bid"}); // 排除生成的表
// 字段名生成策略
strategy.setNaming(NamingStrategy.underline_to_camel);
// 自定义实体父类
// strategy.setSuperEntityClass("hello.entity.BaseEntity");
// 自定义实体,公共字段
strategy.setSuperEntityColumns(new String[]{"c_id"});
// 自定义 mapper 父类
// strategy.setSuperMapperClass(null);
// 自定义 service 父类
// strategy.setSuperServiceClass(null);
// 自定义 service 实现类父类
// strategy.setSuperServiceImplClass("com.fcs.demo.TestServiceImpl");
// 自定义 controller 父类
// strategy.setSuperControllerClass("com.risk.controller.BaseController");
mpg.setStrategy(strategy);
// 包配置
PackageConfig pc = new PackageConfig();
// 包配置
pc.setParent("com.cc");
pc.setModuleName("ssmDemo");
pc.setController("controller");
pc.setEntity("pojo");
pc.setMapper("mapper");
mpg.setPackageInfo(pc);
// 执行生成
mpg.execute();
}
}
生成的代码
会自动进行pojo和表的字段映射