话不多说,直接上代码:
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.sofn</groupId> <artifactId>sofn-eletricity_business</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>Sofn-Eletricity_business</name> <description>Demo project for Spring Boot</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.3.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-cache</artifactId> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.3.0</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!--<dependency>--> <!--<groupId>org.springframework.boot</groupId>--> <!--<artifactId>spring-boot-devtools</artifactId>--> <!--<optional>true</optional>--> <!--</dependency>--> <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.30</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.5.0</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.5.0</version> </dependency> <dependency> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-core</artifactId> <version>1.3.2</version> </dependency> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>4.1.6</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <plugin> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-plugin</artifactId> <version>1.3.2</version> <executions> <execution> <id>generator</id> <goals> <goal>generate</goal> </goals> </execution> </executions> <configuration> <verbose>true</verbose> <overwrite>true</overwrite> <jdbcDriver>com.mysql.jdbc.Driver</jdbcDriver> <jdbcURL>jdbc:mysql://127.0.0.1/sofn_electricity_business</jdbcURL> <jdbcUserId>root</jdbcUserId> <jdbcPassword></jdbcPassword> </configuration> <dependencies> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <!-- 引用依赖库的版本 --> <version>5.1.30</version> </dependency> <dependency> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-core</artifactId> <version>1.3.2</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <!-- 引用依赖库的版本 --> <version>3.4.2</version> </dependency> </dependencies> </plugin> </plugins> </build> </project>
application.properties
#开发环境
spring.datasource.name = dbName
spring.datasource.url = jdbc:mysql://localhost:3306/dbName
spring.datasource.username = root
spring.datasource.password =
spring.datasource.type = com.alibaba.druid.pool.DruidDataSource
spring.datasource.driver-class-name = com.mysql.jdbc.Driver
spring.datasource.filters = stat
spring.datasource.maxActive = 20
spring.datasource.initialSize = 1
spring.datasource.maxWait = 60000
spring.datasource.minIdle = 1
spring.datasource.timeBetweenEvictionRunsMillis = 60000
spring.datasource.minEvictableIdleTimeMillis = 300000
spring.datasource.validationQuery = select 'x'
spring.datasource.testWhileIdle = true
spring.datasource.testOnBorrow = false
spring.datasource.testOnReturn = false
spring.datasource.poolPreparedStatements = true
spring.datasource.maxOpenPreparedStatements = 20
mybatis.mapperLocations = classpath:mappers/generator/*.xml
mybatis.typeAliasesPackage = com.sofn.model
UserMapper.xml
<?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.sofn.mapper.generator.UserMapper" >
<resultMap id="BaseResultMap" type="com.sofn.model.User" >
<id column="id" property="id" jdbcType="INTEGER" />
<result column="user_name" property="userName" jdbcType="VARCHAR" />
<result column="passowrd" property="passowrd" jdbcType="VARCHAR" />
<result column="sex" property="sex" jdbcType="VARCHAR" />
<result column="age" property="age" jdbcType="INTEGER" />
<result column="phone" property="phone" jdbcType="VARCHAR" />
<result column="address" property="address" jdbcType="VARCHAR" />
<result column="qq" property="qq" jdbcType="VARCHAR" />
<result column="email" property="email" jdbcType="VARCHAR" />
<result column="createBy" property="createby" jdbcType="VARCHAR" />
<result column="createTime" property="createtime" jdbcType="TIMESTAMP" />
<result column="updateBy" property="updateby" jdbcType="VARCHAR" />
<result column="updateTime" property="updatetime" jdbcType="TIMESTAMP" />
<result column="isDelete" property="isdelete" jdbcType="VARCHAR" />
</resultMap>
<delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" >
delete from user
where id = #{id,jdbcType=INTEGER}
</delete>
<insert id="insert" parameterType="com.sofn.model.User" >
insert into user (id, user_name, passowrd,
sex, age, phone, address,
qq, email, createBy,
createTime, updateBy, updateTime,
isDelete)
values (#{id,jdbcType=INTEGER}, #{userName,jdbcType=VARCHAR}, #{passowrd,jdbcType=VARCHAR},
#{sex,jdbcType=VARCHAR}, #{age,jdbcType=INTEGER}, #{phone,jdbcType=VARCHAR}, #{address,jdbcType=VARCHAR},
#{qq,jdbcType=VARCHAR}, #{email,jdbcType=VARCHAR}, #{createby,jdbcType=VARCHAR},
#{createtime,jdbcType=TIMESTAMP}, #{updateby,jdbcType=VARCHAR}, #{updatetime,jdbcType=TIMESTAMP},
#{isdelete,jdbcType=VARCHAR})
</insert>
<update id="updateByPrimaryKey" parameterType="com.sofn.model.User" >
update user
set user_name = #{userName,jdbcType=VARCHAR},
passowrd = #{passowrd,jdbcType=VARCHAR},
sex = #{sex,jdbcType=VARCHAR},
age = #{age,jdbcType=INTEGER},
phone = #{phone,jdbcType=VARCHAR},
address = #{address,jdbcType=VARCHAR},
qq = #{qq,jdbcType=VARCHAR},
email = #{email,jdbcType=VARCHAR},
createBy = #{createby,jdbcType=VARCHAR},
createTime = #{createtime,jdbcType=TIMESTAMP},
updateBy = #{updateby,jdbcType=VARCHAR},
updateTime = #{updatetime,jdbcType=TIMESTAMP},
isDelete = #{isdelete,jdbcType=VARCHAR}
where id = #{id,jdbcType=INTEGER}
</update>
<select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
select id, user_name, passowrd, sex, age, phone, address, qq, email, createBy, createTime,
updateBy, updateTime, isDelete
from user
where id = #{id,jdbcType=INTEGER}
</select>
<select id="selectAll" resultMap="BaseResultMap" >
select id, user_name, passowrd, sex, age, phone, address, qq, email, createBy, createTime,
updateBy, updateTime, isDelete
from user
</select>
<!-- 根据性别查询 -->
<select id="findBySex" resultMap="BaseResultMap" parameterType="java.lang.String">
select id, user_name, passowrd, sex, age, phone, address, qq, email, createBy, createTime, updateBy, updateTime, isDelete
from user where sex = #{sex,jdbcType=VARCHAR}
</select>
</mapper>
application.class
package com.sofn;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.web.servlet.ServletComponentScan;
import org.springframework.boot.web.support.SpringBootServletInitializer;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.ImportResource;
@SpringBootApplication
@MapperScan("com.sofn.mapper")
@ServletComponentScan("com.sofn.common")
public class SofnEletricityBusinessApplication extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(SofnEletricityBusinessApplication.class, args);
}
}
DruidDataSourceConfig
package com.sofn.common;
import com.alibaba.druid.support.http.StatViewServlet;
import com.alibaba.druid.support.http.WebStatFilter;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import com.alibaba.druid.pool.DruidDataSource;
import javax.sql.DataSource;
import java.sql.SQLException;
/** Druid的DataResource配置类
* Created by wuye on 2017/4/17.
*/
@Configuration
@EnableTransactionManagement
public class DruidDataSourceConfig{
@Configuration
public class DruidConfig {
@Value("${spring.datasource.url}")
private String dbUrl;
@Value("${spring.datasource.username}")
private String username;
@Value("${spring.datasource.password}")
private String password;
@Value("${spring.datasource.driver-class-name}")
private String driverClassName;
@Value("${spring.datasource.initialSize}")
private int initialSize;
@Value("${spring.datasource.minIdle}")
private int minIdle;
@Value("${spring.datasource.maxActive}")
private int maxActive;
@Value("${spring.datasource.maxWait}")
private int maxWait;
@Value("${spring.datasource.timeBetweenEvictionRunsMillis}")
private int timeBetweenEvictionRunsMillis;
@Value("${spring.datasource.minEvictableIdleTimeMillis}")
private int minEvictableIdleTimeMillis;
@Value("${spring.datasource.validationQuery}")
private String validationQuery;
@Value("${spring.datasource.testWhileIdle}")
private boolean testWhileIdle;
@Value("${spring.datasource.testOnBorrow}")
private boolean testOnBorrow;
@Value("${spring.datasource.testOnReturn}")
private boolean testOnReturn;
@Value("${spring.datasource.poolPreparedStatements}")
private boolean poolPreparedStatements;
@Value("${spring.datasource.filters}")
private String filters;
@Bean
public ServletRegistrationBean druidServlet() {
ServletRegistrationBean reg = new ServletRegistrationBean();
reg.setServlet(new StatViewServlet());
reg.addUrlMappings("/druid/*");
reg.addInitParameter("loginUsername", "root");
reg.addInitParameter("loginPassword", "123456");
return reg;
}
@Bean
public FilterRegistrationBean filterRegistrationBean() {
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
filterRegistrationBean.setFilter(new WebStatFilter());
filterRegistrationBean.addUrlPatterns("/*");
filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
filterRegistrationBean.addInitParameter("profileEnable", "true");
filterRegistrationBean.addInitParameter("principalCookieName", "USER_COOKIE");
filterRegistrationBean.addInitParameter("principalSessionName", "USER_SESSION");
return filterRegistrationBean;
}
@Bean
@Primary
public DataSource druidDataSource(){
DruidDataSource datasource = new DruidDataSource();
datasource.setUrl(this.dbUrl);
datasource.setUsername(username);
datasource.setPassword(password);
datasource.setDriverClassName(driverClassName);
datasource.setInitialSize(initialSize);
datasource.setMinIdle(minIdle);
datasource.setMaxActive(maxActive);
datasource.setMaxWait(maxWait);
datasource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis);
datasource.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis);
datasource.setValidationQuery(validationQuery);
datasource.setTestWhileIdle(testWhileIdle);
datasource.setTestOnBorrow(testOnBorrow);
datasource.setTestOnReturn(testOnReturn);
datasource.setPoolPreparedStatements(poolPreparedStatements);
try {
datasource.setFilters(filters);
} catch (SQLException e) {
//logger.error("druid configuration initialization filter", e);
}
return datasource;
}
}
}
SessionFactoryConfig
package com.sofn.common;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.ClassPathResource;
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.transaction.annotation.TransactionManagementConfigurer;
import javax.sql.DataSource;
/**
* Created by wuye on 2017/4/18.
*/
@Configuration
@EnableTransactionManagement
@MapperScan("com.sofn.mapper.generator")
public class SessionFactoryConfig implements TransactionManagementConfigurer {
private static String MYBATIS_CONFIG = "mybatis-config.xml";
@Autowired
private DataSource dataSource;
private String typeAliasPackage = "com.sofn.model";
/**
*创建sqlSessionFactoryBean 实例
* 并且设置configtion 如驼峰命名.等等
* 设置mapper 映射路径
* 设置datasource数据源
* @return
* @throws Exception
*/
@Bean(name = "sqlSessionFactory")
public SqlSessionFactoryBean createSqlSessionFactoryBean() throws Exception {
PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
/** 设置mybatis configuration 扫描路径 */
sqlSessionFactoryBean.setConfigLocation(new ClassPathResource(MYBATIS_CONFIG));
/** 设置datasource */
sqlSessionFactoryBean.setDataSource(dataSource);
/** 设置typeAlias 包扫描路径 */
sqlSessionFactoryBean.setTypeAliasesPackage(typeAliasPackage);
/** 设置扫描路径 */
sqlSessionFactoryBean.setMapperLocations(resolver.getResources("classpath:/mappers/generator/*.xml"));
return sqlSessionFactoryBean;
}
@Bean
public SqlSessionTemplate sqlSessionTemplate(SqlSessionFactory sqlSessionFactory) {
return new SqlSessionTemplate(sqlSessionFactory);
}
@Bean
@Override
public PlatformTransactionManager annotationDrivenTransactionManager() {
return new DataSourceTransactionManager(dataSource);
}
}
UserController
package com.sofn.controller;
import com.sofn.model.User;
import com.sofn.service.UserService;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* Created by wuye on 2017/4/17.
*/
@RestController
@RequestMapping(value = "/user")
public class UserController {
@Autowired
private UserService userService ;
/**
* 添加一个用户
* @param user
* @return
*/
@ApiOperation(value = "添加一个用户",notes = "添加用户",httpMethod="POST")
@ApiImplicitParam(name = "user", value = "用户详细实体user", required = true, dataType = "User")
@RequestMapping(value = "/add",method = RequestMethod.POST)
public String addUser(@RequestBody User user){
return "hello "+userService.add(user);
}
/**
* 添加一个用户
* @return
*/
@ApiOperation(value = "添加一个用户",notes = "添加用户",httpMethod="POST")
@ApiImplicitParams({
@ApiImplicitParam(name="userName",paramType="query",dataType="string"),
@ApiImplicitParam(name="password",paramType="query",dataType="string")
})
@RequestMapping(value = "/add2",method = RequestMethod.POST)
public String addUser2(String userName,String password){
User user = new User();
user.setUserName(userName);
user.setPassowrd(password);
return "hello "+userService.add(user);
}
/**
* 查询所有用户
* @return
*/
@ApiOperation(value = "查询所有用户",notes = "查询所有用户",httpMethod = "POST")
@RequestMapping(value = "/all",method = RequestMethod.POST)
public List<User> findAll(){
return userService.selectAll();
}
/**
* 根据ID查询
* @param userId
* @return
*/
@ApiOperation(value = "根据ID查询",notes = "根据ID查询",httpMethod = "POST")
@ApiImplicitParam(name="userId",paramType = "query",dataType = "string")
@RequestMapping(value = "/findById",method = RequestMethod.POST)
public User findById(String userId){
return userService.findUserById(Integer.valueOf(userId));
}
/**
* 根据ID删除
* @param userId
* @return
*/
@ApiOperation(value = "根据ID删除",notes = "根据ID删除",httpMethod = "POST")
@ApiImplicitParam(name="userId",paramType = "query",dataType = "string")
@RequestMapping(value = "/delete",method = RequestMethod.POST)
public void deleteById(String userId){
userService.deletByUserId(Integer.valueOf(userId));
}
/**
* 根据ID修改用户
* @param userId
* @param sex
* @param age
* @param address
* @return
*/
@ApiOperation(value = "根据ID修改",notes = "根据ID修改",httpMethod = "POST")
@ApiImplicitParams({
@ApiImplicitParam(name = "userId",paramType = "query",dataType = "string"),
@ApiImplicitParam(name = "sex",paramType = "query",dataType = "string"),
@ApiImplicitParam(name = "age",paramType = "query",dataType = "string"),
@ApiImplicitParam(name = "address",paramType = "query",dataType = "string")
})
@RequestMapping(value = "/update",method = RequestMethod.POST)
public int updateUser(String userId,String sex,String age,String address){
User user = userService.findUserById(Integer.valueOf(userId));
user.setSex(sex);
user.setAge(Integer.valueOf(age));
user.setAddress(address);
return userService.updateByUserId(user);
}
@ApiOperation(value = "根据性别查询",notes = "根据性别查询",httpMethod = "POST")
@ApiImplicitParam(name = "sex",paramType = "query",dataType = "string")
@RequestMapping(value = "/findBySex",method = RequestMethod.POST)
public List<User> findBySex(String sex){
return userService.findBySex(sex);
}
// @ApiOperation(value = "获取用户信息列表",notes = "获取用户信息列表",httpMethod = "POST")
// @RequestMapping("getPageInfo",method = RequestMethod.POST)
// public List<User> getPageInfo(@ApiParam(required = true,value = "页数") @RequestParam(value = "draw" ,required = false) long drwa,
// @ApiParam(required = true,value = "开始数") @RequestParam(value = "start" ,required = false) long start,
// @ApiParam(required = true,value = "数量") @RequestParam(value = "length" ,required = false)long length){
// long recordsTotal =
// Page pager = new Page();
// pager.setRecordsTotal();
// }
}
UserMapper
package com.sofn.mapper.generator;
import com.sofn.model.User;
import com.sofn.util.generator.base.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Component;
import java.util.List;
@Mapper
@Component
public interface UserMapper extends BaseMapper {
int deleteByPrimaryKey(Integer id);
int insert(User record);
User selectByPrimaryKey(Integer id);
List<User> selectAll();
int updateByPrimaryKey(User record);
/**
* 根据性别查询
* @param sex
* @return
*/
List<User> findBySex(String sex);
}
UserServiceImpl
package com.sofn.service.impl;
import com.sofn.mapper.generator.UserMapper;
import com.sofn.mapper.sofn.UserExpandMapper;
import com.sofn.model.User;
import com.sofn.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Map;
/**
* Created by wuye on 2017/4/17.
*/
@Service
@Transactional
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Autowired
private UserExpandMapper userExpandMapper;
@Override
public int deletByUserId(Integer id) {
return userMapper.deleteByPrimaryKey(id);
}
@Override
public int add(User record) {
return userMapper.insert(record);
}
@Override
public User findUserById(Integer id) {
return userMapper.selectByPrimaryKey(id);
}
@Override
public List<User> selectAll() {
return userMapper.selectAll();
}
@Override
public int updateByUserId(User record) {
userMapper.updateByPrimaryKey(record);
return 0;
}
@Override
public List<User> getPageInfo(Map<String, Object> map) {
return userExpandMapper.getPageInfo(map);
}
@Override
public long getCount(Map<String, Object> map) {
return userExpandMapper.getCount(map);
}
@Override
public List<User> findBySex(String sex) {
return userExpandMapper.findBySex(sex);
}
}