使用maven+springboot+springmvc+mybaits-spring+mybatis-generator开发
2018-02-22 15:24
519 查看
使用springboot+springmvc+mybatis-generator开发web程序,也算是自己参考网上的知识自己写出来的吧,里面还很多东西值得深究学习
使用IDEA和MAVEN新建springboot项目:具体怎么新建网上很多
使用maven就看一下pom.xml文件
默认会读取resource目录下的application.properties,内容如下
以application-dev.properties(开发环境)为例,配置如下:
3,使用mybatis-generator自动生成代码,在pom文件中添加了MG的插件所以这里配置一下MG的配置文件就可以,放在resource目录下:generatorConfig.properties,generatorConfig.xml。
先新建user表:
配置好之后双击,就会在指定目录生成代码了。
然后就是编写controller和service了:
IUserService.java:
package com.practice;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
使用IDEA和MAVEN新建springboot项目:具体怎么新建网上很多
使用maven就看一下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.practice</groupId> <artifactId>SSM</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.3.6.RELEASE</version> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <start-class>com.practice.App</start-class> <java.version>1.7</java.version> <lombok.version>1.14.8</lombok.version> <log4jdbc.log4j2.version>1.16</log4jdbc.log4j2.version> <rest.assured.version>2.3.3</rest.assured.version> </properties> <dependencies> <!--MG依赖--> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.2.8</version> </dependency> <dependency> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-core</artifactId> <version>1.3.3</version> <scope>test</scope> </dependency> <dependency> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-plugin</artifactId> <version>1.3.3</version> <scope>test</scope> </dependency> <!--druid数据库连接池--> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.0.26</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.38</version> </dependency> <!--springboot依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>${lombok.version}</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.bgee.log4jdbc-log4j2</groupId> <artifactId>log4jdbc-log4j2-jdbc4.1</artifactId> <version>${log4jdbc.log4j2.version}</version> </dependency> <!--springboottest依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!-- Springboot 热部署 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <version>1.3.6.RELEASE</version> <optional>true</optional> </dependency> <dependency> <groupId>com.jayway.restassured</groupId> <artifactId>rest-assured</artifactId> <version>${rest.assured.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>4.2.7.RELEASE</version> <scope>test</scope> </dependency> <!-- https://mvnrepository.com/artifact/com.alibaba/fastjson --> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.21</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-autoconfigure</artifactId> <version>1.3.6.RELEASE</version> </dependency> <!-- https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.1.1</version> </dependency> <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.1</version> </dependency> <!-- mybatis 分页插件 --> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>4.1.6</version> </dependency> </dependencies> <build> <plugins> <!--MG的插件--> <plugin> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-plugin</artifactId> <version>1.3.3</version> <configuration> <verbose>true</verbose> <overwrite>true</overwrite> </configuration> <dependencies> <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java 配置这个依赖主要是为了等下在配置MG的时候可以不用配置classPathEntry这样的一个属性,避免 代码的耦合度太高 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.38</version> </dependency> </dependencies> </plugin> <!--springboot的插件--> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>springloaded</artifactId> <version>${spring-loaded.version}</version> </dependency> </dependencies> </plugin> </plugins> </build> </project>修改springboot的配置文件,这里一共有四个配置文件:application.properties(默认读取)、application-dev.properties(开发环境)、application-prod.properties(生成环境)、application-test.properties(测试环境)
默认会读取resource目录下的application.properties,内容如下
spring.thymeleaf.cache=false logging.level.jdbc=OFF logging.level.jdbc.sqltiming=error logging.level.jdbc.resultsettable=error #申明使用哪个配置文件 spring.profiles.active=dev通过spring.profiles.active=dev这个属性来控制具体使用哪个配置(dev,prod,test).
以application-dev.properties(开发环境)为例,配置如下:
#数据库配置 spring.datasource.type=com.alibaba.druid.pool.DruidDataSource spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.datasource.url=jdbc:mysql://127.0.0.1:3306/ssm spring.datasource.username=root spring.datasource.password=root # 下面为连接池的补充设置,应用到上面所有数据源中# 初始化大小,最小,最大 spring.datasource.initialSize=5 spring.datasource.minIdle=5 spring.datasource.maxActive=20 # 配置获取连接等待超时的时间 spring.datasource.maxWait=60000 # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 spring.datasource.timeBetweenEvictionRunsMillis=60000 # 配置一个连接在池中最小生存的时间,单位是毫秒 spring.datasource.minEvictableIdleTimeMillis=300000 spring.datasource.validationQuery=SELECT 1 FROM DUAL spring.datasource.testWhileIdle=true spring.datasource.testOnBorrow=false spring.datasource.testOnReturn=false # 打开PSCache,并且指定每个连接上PSCache的大小 spring.datasource.poolPreparedStatements=true spring.datasource.maxPoolPreparedStatementPerConnectionSize=20 # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙 spring.datasource.filters=stat,wall,log4j # 通过connectProperties属性来打开mergeSql功能;慢SQL记录 spring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000 # 合并多个DruidDataSource的监控数据 #spring.datasource.useGlobalDataSourceStat=true #视图模型 spring.thymeleaf.prefix=classpath:/templates/ spring.thymeleaf.suffix=.html spring.thymeleaf.cache=false spring.thymeleaf.mode=HTML5 spring.thymeleaf.encoding=UTF-8 spring.thymeleaf.content-type=text/html spring.thymeleaf.check-template-location=true主要是数据源的配置,这里使用druid数据源,然后通过DruidDataSourceConfig.java读取数据源的配置:
/* * Copyright (c) 2016 www.bsfit.com.cn All Rights Reserved. */ package com.practice.cfg; import com.alibaba.druid.pool.DruidDataSource; import com.github.pagehelper.PageHelper; import org.apache.ibatis.plugin.Interceptor; import org.apache.ibatis.session.SqlSessionFactory; import org.mybatis.spring.SqlSessionFactoryBean; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.bind.RelaxedPropertyResolver; import org.springframework.context.ApplicationContextException; import org.springframework.context.EnvironmentAware; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.env.Environment; import org.springframework.core.io.support.PathMatchingResourcePatternResolver; import org.springframework.jdbc.datasource.DataSourceTransactionManager; import org.springframework.transaction.PlatformTransactionManager; import org.springframework.transaction.annotation.EnableTransactionManagement; import org.springframework.util.StringUtils; import java.sql.SQLException; import java.util.Arrays; import java.util.Properties; /** * @author: YeJunwei Date: 2016/12/2 Time: 15:07 */ @Configuration @EnableTransactionManagement @MapperScan(value = "com.practice.mapper") public class DruidDataSourceConfig implements EnvironmentAware { private Environment environment; private RelaxedPropertyResolver propertyResolver; @Override public void setEnvironment(Environment environment) { this.environment = environment; this.propertyResolver = new RelaxedPropertyResolver(environment, "spring.datasource."); } //注册dataSource @Bean(initMethod = "init", destroyMethod = "close") public DruidDataSource dataSource() throws SQLException { if (StringUtils.isEmpty(propertyResolver.getProperty("url"))) { System.out.println("Your database connection pool configuration is incorrect!" + " Please check your Spring profile, current profiles are:" + Arrays.toString(environment.getActiveProfiles())); throw new ApplicationContextException( "Database connection pool is not configured correctly"); } DruidDataSource druidDataSource = new DruidDataSource(); druidDataSource.setDriverClassName(propertyResolver.getProperty("driver-class-name")); druidDataSource.setUrl(propertyResolver.getProperty("url")); druidDataSource.setUsername(propertyResolver.getProperty("username")); druidDataSource.setPassword(propertyResolver.getProperty("password")); druidDataSource.setInitialSize(Integer.parseInt(propertyResolver.getProperty("initialSize"))); druidDataSource.setMinIdle(Integer.parseInt(propertyResolver.getProperty("minIdle"))); druidDataSource.setMaxActive(Integer.parseInt(propertyResolver.getProperty("maxActive"))); druidDataSource.setMaxWait(Integer.parseInt(propertyResolver.getProperty("maxWait"))); druidDataSource.setTimeBetweenEvictionRunsMillis(Long.parseLong(propertyResolver.getProperty("timeBetweenEvictionRunsMillis"))); druidDataSource.setMinEvictableIdleTimeMillis(Long.parseLong(propertyResolver.getProperty("minEvictableIdleTimeMillis"))); druidDataSource.setValidationQuery(propertyResolver.getProperty("validationQuery")); druidDataSource.setTestWhileIdle(Boolean.parseBoolean(propertyResolver.getProperty("testWhileIdle"))); druidDataSource.setTestOnBorrow(Boolean.parseBoolean(propertyResolver.getProperty("testOnBorrow"))); druidDataSource.setTestOnReturn(Boolean.parseBoolean(propertyResolver.getProperty("testOnReturn"))); druidDataSource.setPoolPreparedStatements(Boolean.parseBoolean(propertyResolver.getProperty("poolPreparedStatements"))); druidDataSource.setMaxPoolPreparedStatementPerConnectionSize(Integer.parseInt(propertyResolver.getProperty("maxPoolPreparedStatementPerConnectionSize"))); druidDataSource.setFilters(propertyResolver.getProperty("filters")); return druidDataSource; } @Bean public SqlSessionFactory sqlSessionFactory() throws Exception { SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean(); sqlSessionFactoryBean.setDataSource(dataSource()); //mybatis分页 PageHelper pageHelper = new PageHelper(); Properties props = new Properties(); props.setProperty("dialect", "mysql"); props.setProperty("reasonable", "true"); props.setProperty("supportMethodsArguments", "true"); props.setProperty("returnPageInfo", "check"); props.setProperty("params", "count=countSql"); pageHelper.setProperties(props); //添加插件 sqlSessionFactoryBean.setPlugins(new Interceptor[]{pageHelper}); PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver(); sqlSessionFactoryBean.setMapperLocations(resolver.getResources("classpath:com/practice/sqlmap/*.xml")); return sqlSessionFactoryBean.getObject(); } @Bean public PlatformTransactionManager transactionManager() throws SQLException { return new DataSourceTransactionManager(dataSource()); } }这里因为后面要用到mybatis-generator和mybatise-spring集成所以需要sqlSession,这里比较重要的就是这里要指定使用的xml的位置和使用@MapperScan(value = “com.practice.mapper”)注解来扫描与xml相对应的mapper接口:
sqlSessionFactoryBean.setMapperLocations(resolver.getResources("classpath:com/practice/sqlmap/*.xml"));1
3,使用mybatis-generator自动生成代码,在pom文件中添加了MG的插件所以这里配置一下MG的配置文件就可以,放在resource目录下:generatorConfig.properties,generatorConfig.xml。
先新建user表:
DROP TABLE IF EXISTS `user`; CREATE TABLE `user` ( `id` varchar(50) NOT NULL, `name` varchar(255) DEFAULT NULL, `age` int(50) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;generatorConfig.xml:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"> <generatorConfiguration> <properties resource="generatorConfig.properties"/> <context id="ssm" targetRuntime="MyBatis3"> <plugin type="org.mybatis.generator.plugins.EqualsHashCodePlugin" /> <plugin type="org.mybatis.generator.plugins.SerializablePlugin" /> <plugin type="org.mybatis.generator.plugins.CaseInsensitiveLikePlugin" /> <!-- <plugin type="org.mybatis.generator.plugins.ToStringPlugin"></plugin> --> <commentGenerator> <property name="suppressDate" value="true" /> <property name="suppressAllComments" value="true" /> </commentGenerator> <!-- <jdbcConnection driverClass="oracle.jdbc.driver.OracleDriver" connectionURL="jdbc:oracle:thin:@10.100.1.20:1521:db1" userId="rams_test" password="bangsun"> </jdbcConnection> --> <jdbcConnection driverClass="${driver}" connectionURL="${url}" userId="${username}" password="${password}"> </jdbcConnection> <javaTypeResolver> <property name="forceBigDecimals" value="false" /> </javaTypeResolver> <javaModelGenerator targetPackage="com.practice.pojo" targetProject="src/main/java"> <property name="constructorBased" value="true" /> <property name="enableSubPackages" value="true" /> <property name="trimStrings" value="true" /> </javaModelGenerator> <sqlMapGenerator targetPackage="com.practice.sqlmap" targetProject="src/main/resources"> <property name="enableSubPackages" value="true" /> </sqlMapGenerator> <javaClientGenerator type="XMLMAPPER" targetPackage="com.practice.mapper" targetProject="src/main/java"> <property name="enableSubPackages" value="true" /> </javaClientGenerator> <table schema="mybatis" tableName="user" domainObjectName="User"> <property name="constructorBased" value="true" /> <property name="useActualColumnNames" value="false" /> <property name="ignoreQualifiersAtRuntime" value="true" /> </table> </context> </generatorConfiguration>generatorConfig.properties:
driver=com.mysql.jdbc.Driver url=jdbc:mysql://127.0.0.1:3306/ssm username=root password=root
配置好之后双击,就会在指定目录生成代码了。
然后就是编写controller和service了:
IUserService.java:
package com.practice.service; import com.practice.pojo.User; import org.springframework.stereotype.Component; import org.springframework.stereotype.Service; /** * @author: YeJunwei Date: 2016/12/5 Time: 10:54 */ public interface IUserService { User getUserById(String id); }UserServiceImpl.java:
/* * Copyright (c) 2016 www.bsfit.com.cn All Rights Reserved. */ package com.practice.service.impl; import com.practice.mapper.UserMapper; import com.practice.pojo.User; import com.practice.service.IUserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.stereotype.Service; /** * @author: YeJunwei Date: 2016/12/5 Time: 10:54 */ @Component public class UserServiceImpl implements IUserService { @Autowired private UserMapper userMapper; @Override public User getUserById(String id) { // UserExample example=new UserExample(); // example.createCriteria().andIdEqualTo(id); User user=userMapper.selectByPrimaryKey(id); return user; } }UserController.java
/* * Copyright (c) 2016 www.bsfit.com.cn All Rights Reserved. */ package com.practice.controller; import com.alibaba.fastjson.JSON; import com.practice.pojo.User; import com.practice.service.IUserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.context.annotation.ComponentScan; import org.springframework.stereotype.Component; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; /** * @author: YeJunwei Date: 2016/12/5 Time: 10:31 */ @RestController public class UserController { @Autowired private IUserService userService; @RequestMapping(value = "/user",method = RequestMethod.GET) public String getUserById(String id){ User user=userService.getUserById(id); String userStr= JSON.toJSONString(user); return userStr; } }最后启动App.java
package com.practice;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
相关文章推荐
- 使用springboot+springmvc+mybaits-spring+mybatis-generator开发
- SpringBoot学习-如何使用mybatis-generator-maven-plugin自动生成代码
- maven+Spring+SpringMVC+mybatis+mybatis-generator 搭建SSM开发环境
- Spring MVC+Maven+Freemarker+Mybatis开发环境搭建
- Maven搭建SSM(SpringMVC + Spring + Mybaits)开发环境 (下)
- 第一章 企业项目开发--maven+springmvc+spring+mybatis+velocity整合
- Spring MVC+Maven+Freemarker+Mybatis开发环境搭建
- 使用intellij idea搭建MAVEN+SSM(Spring+SpringMVC+MyBatis)框架
- SpringMVC学习笔记(二)使用IntelliJ IDEA开发Spring MVC HelloWorld(基于Maven)
- Java后台开发<二>:Spirng+SpringMVC+Maven+Mybatis+MySQL项目搭建
- SpringMVC+Spring+Mybatis+Maven整合-使用的工具
- SpringMVC+Spring+Mybatis整合,使用druid连接池,声明式事务,maven配置
- 使用Maven搭建Spring+SpringMVC+Mybatis+ehcache项目
- 使用Idea创建ssm项目,SpringMVC+Spring+MyBatis+Maven整合
- 使用Maven+Hibernate+Spring+Spring MVC开发新闻发布系统
- 使用maven创建java web项目+SpringMVC+Mybatis
- maven框架开发springmvc+spring+mybatis
- spring-boot+mybatis开发实战:如何在spring-boot中使用myabtis持久层框架
- (菜鸟来动手)SpringMVC+Spring+Mybatis整合(第二天) 使用maven来构建项目
- Maven+SpringMVC+MyBatis+Shiro整合开发