マイクロサービスアーキテクチャの実戦編(三):Spring book t 2.0+Mybatis+PageHelperは添削とページ別検索機能を実現します.
26667 ワード
概要
このプロジェクトは主にSpring book t 2.0+Mybatis+PageHelperを利用して、添削とページ別の検索機能を実現して、快速にセットとデータベースのインタラクティブなプロジェクトを構築します.ソースの住所 GitHub:https://github.com/yundianzixun/Spring-boot2.0-Mybatis-PageHelper 連盟公衆番号:IT実戦連盟 私達のコミュニティ:https://100boot.cn 使用中に問題があったら、Issueを提出してもいいです.私は全力を尽くしてこのスターを改善します.
バージョンベース Spring Boot:2.04 Mybatis:3.4.5 Druid:1.1.10 PageHelper:4.1.6 操作手順
第一歩:SpringBoot 2.0+Swagger 2プロジェクトをダウンロードします. GitHubアドレス:https://github.com/yundianzixun/spring-boot-starter-swagger2 参照文書:https://www.jianshu.com/p/61db1a6ca425 備考:マイクロサービスアーキテクチャの実戦シリーズは、中間部品を統合するごとにGitHubに配置され、教程に従ってマイクロサービスアーキテクチャを一歩ずつ学ぶことができます. ステップ2:maven依存追加(完全依存) PageHelperは、改ページプラグイン である. UserInfoMapper.xmlは、本記事ではユーザーの添削を実現するためのマッピングファイル です.
第五ステップ:データベース接続池の作成Datasource(DatasourceConfig.java)は、ユーザーテーブルの添削とバッチクエリのsql文 を実現した.
第七ステップ:UserInfoエンティティクラスを作成する
UserInfoService.java
マイクロサービスアーキテクチャの実戦編(三):Spring book t 2.0+Mybatisは添削と検索機能を実現します.jpgポート番号は自分で準 に設定しました.
貢献者 IT実戦連盟-Line IT実戦連盟-コーヒー もっと素晴らしい内容は「IT実戦連盟」公団番号に注目できます.
このプロジェクトは主にSpring book t 2.0+Mybatis+PageHelperを利用して、添削とページ別の検索機能を実現して、快速にセットとデータベースのインタラクティブなプロジェクトを構築します.
バージョンベース
第一歩:SpringBoot 2.0+Swagger 2プロジェクトをダウンロードします.
4.0.0
com.itunion
spring-boot-starter-mybatis
0.0.1-SNAPSHOT
jar
spring-boot-starter-mybatis
Demo project for Spring Boot
org.springframework.boot
spring-boot-starter-parent
2.0.4.RELEASE
UTF-8
UTF-8
1.8
org.mybatis.spring.boot
mybatis-spring-boot-starter
1.3.2
mysql
mysql-connector-java
runtime
org.mybatis
mybatis
3.4.5
org.mybatis
mybatis-spring
1.3.1
com.github.pagehelper
pagehelper
4.1.6
com.alibaba
druid
1.1.10
org.springframework.boot
spring-boot-starter-test
test
io.springfox
springfox-swagger2
2.7.0
io.springfox
springfox-swagger-ui
2.7.0
org.apache.tomcat.embed
tomcat-embed-jasper
org.springframework.boot
spring-boot-starter-tomcat
org.springframework.boot
spring-boot-starter-web
demo
org.springframework.boot
spring-boot-maven-plugin
org.apache.maven.plugins
maven-war-plugin
2.1.1
false
ステップ3:appication.properties設定(完全構成)server.port=8081
server.servlet.context-path=/Demo
server.tomcat.accesslog.enabled=true
druid.driver=com.mysql.jdbc.Driver
druid.url=jdbc:mysql://127.0.0.1:3306/ ?serverTimezone=Asia/Shanghai&allowMultiQueries=true
druid.username=
druid.password=
druid.init-size=1
druid.min-idel=1
druid.max-active=5
druid.login.timeout.seconds=30
druid.query.timeout.seconds=30
swagger.enable=true
ステップ4:mybatis-config.xmlファイルを追加します.
コメント第五ステップ:データベース接続池の作成Datasource(DatasourceConfig.java)
package com.itunion.springbootstartermybatis.config;
import com.alibaba.druid.pool.DruidDataSource;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.ClassPathResource;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import javax.annotation.PostConstruct;
import javax.sql.DataSource;
@Configuration
@MapperScan(basePackages = "com.itunion.springbootstartermybatis.mapper")
public class DatasourceConfig {
private static Logger log = LoggerFactory.getLogger(DatasourceConfig.class);
@Value("${druid.driver}")
private String driverClassName;
@Value("${druid.url}")
private String url;
@Value("${druid.username}")
private String username;
@Value("${druid.password}")
private String password;
@Value("${druid.init-size}")
private int initSize;
@Value("${druid.min-idel}")
private int minIdel;
@Value("${druid.max-active}")
private int maxActive;
@Value("${druid.login.timeout.seconds}")
private int loginTimeoutSeconds;
@Value("${druid.query.timeout.seconds}")
private int queryTimeoutSeconds;
@Bean
public DataSource dataSource() {
DruidDataSource ds = new DruidDataSource();
ds.setDriverClassName(driverClassName);
ds.setUrl(url);
ds.setUsername(username);
ds.setPassword(password);
ds.setInitialSize(initSize);
ds.setMinIdle(minIdel);
ds.setMaxActive(maxActive);
ds.setLoginTimeout(loginTimeoutSeconds);
ds.setQueryTimeout(queryTimeoutSeconds);
return ds;
}
@Bean
public SqlSessionFactory sqlSessionFactory() throws Exception {
final SqlSessionFactoryBean sqlSessionFactory = new SqlSessionFactoryBean();
sqlSessionFactory.setDataSource(dataSource());
sqlSessionFactory.setConfigLocation(new ClassPathResource("mybatis-config.xml"));
sqlSessionFactory.setFailFast(true);
return sqlSessionFactory.getObject();
}
public DataSourceTransactionManager dataSourceTransactionManager() {
log.debug("> transactionManager");
return new DataSourceTransactionManager(dataSource());
}
@PostConstruct
public void postConstruct() {
log.info("jdbc settings={}", this);
}
}
ステップ6:UserInfoMapper.xmlの作成
id, user_name, password, sex, content, create_date, update_date
delete from user_info
where id = #{id,jdbcType=INTEGER}
insert into user_info (id, user_name, password,
sex, content, create_date,
update_date)
values (#{id,jdbcType=INTEGER}, #{userName,jdbcType=VARCHAR}, #{password,jdbcType=VARCHAR},
#{sex,jdbcType=VARCHAR}, #{content,jdbcType=VARCHAR}, #{createDate,jdbcType=TIMESTAMP},
#{updateDate,jdbcType=TIMESTAMP})
insert into user_info
id,
user_name,
password,
sex,
content,
create_date,
update_date,
#{id,jdbcType=INTEGER},
#{userName,jdbcType=VARCHAR},
#{password,jdbcType=VARCHAR},
#{sex,jdbcType=VARCHAR},
#{content,jdbcType=VARCHAR},
#{createDate,jdbcType=TIMESTAMP},
#{updateDate,jdbcType=TIMESTAMP},
update user_info
user_name = #{userName,jdbcType=VARCHAR},
password = #{password,jdbcType=VARCHAR},
sex = #{sex,jdbcType=VARCHAR},
content = #{content,jdbcType=VARCHAR},
create_date = #{createDate,jdbcType=TIMESTAMP},
update_date = #{updateDate,jdbcType=TIMESTAMP},
where id = #{id,jdbcType=INTEGER}
update user_info
set user_name = #{userName,jdbcType=VARCHAR},
password = #{password,jdbcType=VARCHAR},
sex = #{sex,jdbcType=VARCHAR},
content = #{content,jdbcType=VARCHAR},
create_date = #{createDate,jdbcType=TIMESTAMP},
update_date = #{updateDate,jdbcType=TIMESTAMP}
where id = #{id,jdbcType=INTEGER}
第七ステップ:UserInfoエンティティクラスを作成する
package com.itunion.springbootstartermybatis.model;
import java.util.Date;
public class UserInfo {
private Integer id;
private String userName;
private String password;
private String sex;
private String content;
private Date createDate;
private Date updateDate;
get/set
}
ステップ8:UserInfoMapperの作成package com.itunion.springbootstartermybatis.mapper;
import com.itunion.springbootstartermybatis.model.UserInfo;
import com.itunion.springbootstartermybatis.web.dto.UserInfoReqListDto;
import com.itunion.springbootstartermybatis.web.dto.UserInfoDto;
import java.util.List;
public interface UserInfoMapper {
int deleteByPrimaryKey(Integer id);
int insert(UserInfo record);
int insertSelective(UserInfo record);
UserInfo selectByPrimaryKey(Integer id);
int updateByPrimaryKeySelective(UserInfo record);
int updateByPrimaryKey(UserInfo record);
/**
*
* @return
*/
List getUserInfoList(UserInfoReqListDto userInfoReqListDto);
}
第九ステップ:UserInfoServiceインターフェースとインターフェースを作成して実現する.UserInfoService.java
package com.itunion.springbootstartermybatis.service;
import com.github.pagehelper.PageInfo;
import com.itunion.springbootstartermybatis.web.dto.UserInfoDto;
import com.itunion.springbootstartermybatis.web.dto.UserInfoReqListDto;
import java.util.List;
/**
*
* Created by lin on 2018 06 07 21:12:04
*/
public interface UserInfoService {
/**
*
*/
int addUserInfo(UserInfoDto record);
/**
*
*/
List getUserInfoList();
/**
* ID
*/
int delUserInfoById(Integer id);
/**
* ID
*/
int modifyUserInfoById(UserInfoDto record);
/**
*
*/
PageInfo getUserInfoListPage(UserInfoReqListDto userInfoReqListDto);
}
UserInfoServiceImpl.javapackage com.itunion.springbootstartermybatis.service.impl;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.itunion.springbootstartermybatis.mapper.UserInfoMapper;
import com.itunion.springbootstartermybatis.model.UserInfo;
import com.itunion.springbootstartermybatis.service.UserInfoService;
import com.itunion.springbootstartermybatis.web.dto.UserInfoDto;
import com.itunion.springbootstartermybatis.web.dto.UserInfoReqListDto;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
/**
* -
* Created by lin on 2018 06 07 21:48:13
*/
@Service
public class UserInfoServiceImpl implements UserInfoService {
private final static Logger LOGGER = LoggerFactory.getLogger(UserInfoServiceImpl.class);
@Autowired
private UserInfoMapper userInfoMapper;
@Override
public int addUserInfo(UserInfoDto record) {
LOGGER.info(" - -UserInfoServiceImpl.addUserInfo[" + new SimpleDateFormat("HH:mm:ss").format(new Date()) + "]");
UserInfo userInfo = new UserInfo();
BeanUtils.copyProperties(record, userInfo);
userInfo.setUpdateDate(new Date());
return userInfoMapper.insertSelective(userInfo);
}
@Override
public List getUserInfoList() {
LOGGER.info(" - -UserInfoServiceImpl.getUserInfoList[" + new SimpleDateFormat("HH:mm:ss").format(new Date()) + "]");
return userInfoMapper.getUserInfoList(null);
}
@Override
public int delUserInfoById(Integer id) {
LOGGER.info(" - -UserInfoServiceImpl.delUserInfoById[" + new SimpleDateFormat("HH:mm:ss").format(new Date()) + "]");
return userInfoMapper.deleteByPrimaryKey(id);
}
@Override
public int modifyUserInfoById(UserInfoDto record) {
LOGGER.info(" - -UserInfoServiceImpl.modifyUserInfoById[" + new SimpleDateFormat("HH:mm:ss").format(new Date()) + "]");
UserInfo userInfo = new UserInfo();
BeanUtils.copyProperties(record, userInfo);
userInfo.setUpdateDate(new Date());
return userInfoMapper.updateByPrimaryKeySelective(userInfo);
}
@Override
public PageInfo getUserInfoListPage(UserInfoReqListDto userInfoReqListDto) {
LOGGER.info(" - -UserInfoServiceImpl.getUserInfoListPage[" + new SimpleDateFormat("HH:mm:ss").format(new Date()) + "]");
PageHelper.startPage(userInfoReqListDto.getPage(), userInfoReqListDto.getSize());
List userInfoDtos = userInfoMapper.getUserInfoList(userInfoReqListDto);
PageInfo userInfoDtoPageInfo = new PageInfo<>(userInfoDtos);
return userInfoDtoPageInfo;
}
}
第十歩:UserInfoControllerを作成するpackage com.itunion.springbootstartermybatis.web.controller;
import com.github.pagehelper.PageInfo;
import com.itunion.springbootstartermybatis.common.UniformResultTemplate;
import com.itunion.springbootstartermybatis.service.UserInfoService;
import com.itunion.springbootstartermybatis.web.dto.UserInfoDto;
import com.itunion.springbootstartermybatis.web.dto.UserInfoReqListDto;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
/**
* -
* Created by lin on 2018 06 07 22:02:07
*/
@Controller
@RequestMapping("userInfo")
@Api(description = " ")
public class UserInfoController {
private Logger LOGGER = LoggerFactory.getLogger(UserInfoController.class);
@Autowired
UserInfoService userInfoService;
@ApiOperation(value = "getUserInfoList", notes = " ")
@RequestMapping(value = "getUserInfoList", method = RequestMethod.GET)
@ResponseBody
public UniformResultTemplate> getUserInfoList() {
LOGGER.info(" - -UserInfoController.getUserInfoList[" + new SimpleDateFormat("HH:mm:ss").format(new Date()) + "]");
UniformResultTemplate> uniformResultTemplate = new UniformResultTemplate<>();
uniformResultTemplate.setCode(100);
uniformResultTemplate.setMessage(" !");
uniformResultTemplate.setResult(userInfoService.getUserInfoList());
return uniformResultTemplate;
}
@ApiOperation(value = "getUserInfoListPage", notes = " - ")
@ApiImplicitParam(name = "userInfoReqListDto", value = "{\"page\":\"1\",\"size\":\"2\"}")
@RequestMapping(value = "getUserInfoListPage", method = RequestMethod.POST)
@ResponseBody
public UniformResultTemplate getUserInfoList(@RequestBody UserInfoReqListDto userInfoReqListDto) {
LOGGER.info(" - -UserInfoController.getUserInfoListPage[" + new SimpleDateFormat("HH:mm:ss").format(new Date()) + "]");
UniformResultTemplate uniformResultTemplate = new UniformResultTemplate<>();
uniformResultTemplate.setCode(100);
uniformResultTemplate.setMessage(" !");
uniformResultTemplate.setResult(userInfoService.getUserInfoListPage(userInfoReqListDto));
return uniformResultTemplate;
}
@ApiOperation(value = "addUserInfo", notes = " ")
@ApiImplicitParam(name = "userInfoDto", value = "{\"userName\":\" \",\"password\":\"000000\",\"sex\":1,\"content\":\" IT ~~~\"}")
@RequestMapping(value="addUserInfo", method = RequestMethod.POST)
@ResponseBody
public UniformResultTemplate addUserInfo(@RequestBody UserInfoDto userInfoDto) {
LOGGER.info(" - -UserInfoController.addUserInfo[" + new SimpleDateFormat("HH:mm:ss").format(new Date()) + "]");
UniformResultTemplate uniformResultTemplate = new UniformResultTemplate<>();
Integer num = userInfoService.addUserInfo(userInfoDto);
if(num > 0){
uniformResultTemplate.setCode(100);
uniformResultTemplate.setMessage(" !");
uniformResultTemplate.setResult(num+"");
}else{
uniformResultTemplate.setCode(400);
uniformResultTemplate.setMessage(" !");
uniformResultTemplate.setResult(num+"");
}
return uniformResultTemplate;
}
@ApiOperation(value="delUserInfoById", notes=" ID ")
@ApiImplicitParam(name = "id", value = "4" , paramType="path" , dataType="Integer")
@RequestMapping(value="delUserInfoById/{id}", method = RequestMethod.POST)
@ResponseBody
public UniformResultTemplate deleteKdgVipItem(@PathVariable Integer id) {
LOGGER.info(" - -UserInfoController.delUserInfoById[" + new SimpleDateFormat("HH:mm:ss").format(new Date()) + "]");
UniformResultTemplate uniformResultTemplate = new UniformResultTemplate<>();
Integer num = userInfoService.delUserInfoById(id);
if(num > 0){
uniformResultTemplate.setCode(100);
uniformResultTemplate.setMessage(" ID !");
uniformResultTemplate.setResult(num+"");
}else{
uniformResultTemplate.setCode(400);
uniformResultTemplate.setMessage(" ID !");
uniformResultTemplate.setResult(num+"");
}
return uniformResultTemplate;
}
@ApiOperation(value = "modifyUserInfo", notes = " ")
@ApiImplicitParam(name = "userInfoDto", value = "{\"id\":10,\"userName\":\" \",\"password\":55555,\"sex\":1,\"content\":\" IT ~~~\"}")
@RequestMapping(value="modifyUserInfo", method = RequestMethod.POST, produces= MediaType.APPLICATION_JSON_UTF8_VALUE)
@ResponseBody
public UniformResultTemplate modifyUserInfo(@RequestBody UserInfoDto userInfoDto) {
LOGGER.info(" - -UserInfoController.modifyUserInfo[" + new SimpleDateFormat("HH:mm:ss").format(new Date()) + "]");
UniformResultTemplate uniformResultTemplate = new UniformResultTemplate<>();
Integer num = userInfoService.modifyUserInfoById(userInfoDto);
if(num > 0){
uniformResultTemplate.setCode(100);
uniformResultTemplate.setMessage(" !");
uniformResultTemplate.setResult(num+"");
}else{
uniformResultTemplate.setCode(400);
uniformResultTemplate.setMessage(" !");
uniformResultTemplate.setResult(num+"");
}
return uniformResultTemplate;
}
}
ステップ11:Spring Bootation起動package com.itunion.springbootstartermybatis;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.web.bind.annotation.RestController;
@SpringBootApplication
public class SpringBootStarterMybatisApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBootStarterMybatisApplication.class, args);
}
}
第12歩:Swaggarインターフェースのアドレスにアクセスするhttp://127.0.0.1:8080/Demo/api
下図のように:マイクロサービスアーキテクチャの実戦編(三):Spring book t 2.0+Mybatisは添削と検索機能を実現します.jpg
貢献者