网站制作钱,朝阳区建设工作办公室网站,没网站可以做seo吗,搜索引擎推广方式有哪些本文主要讲解mall整合SpringBootMyBatis搭建基本骨架#xff0c;以商品品牌为例实现基本的CRUD操作及通过PageHelper实现分页查询。 mysql数据库环境搭建 下载并安装mysql5.7版本#xff0c;下载地址#xff1a;dev.mysql.com/downloads/i…设置数据库帐号密码#xff1a;r…本文主要讲解mall整合SpringBootMyBatis搭建基本骨架以商品品牌为例实现基本的CRUD操作及通过PageHelper实现分页查询。 mysql数据库环境搭建 下载并安装mysql5.7版本下载地址dev.mysql.com/downloads/i…设置数据库帐号密码root root下载并安装客户端连接工具Navicat,下载地址www.formysql.com/xiazai.html创建数据库mall导入mall的数据库脚本脚本地址github.com/macrozheng/…项目使用框架介绍 SpringBoot SpringBoot可以让你快速构建基于Spring的Web应用程序内置多种Web容器(如Tomcat)通过启动入口程序的main函数即可运行。 PagerHelper MyBatis分页插件简单的几行代码就能实现分页在与SpringBoot整合时只要整合了PagerHelper就自动整合了MyBatis。 PageHelper.startPage(pageNum, pageSize);
//之后进行查询操作将自动进行分页
ListPmsBrand brandList brandMapper.selectByExample(new PmsBrandExample());
//通过构造PageInfo对象获取分页信息如当前页码总页数总条数
PageInfoPmsBrand pageInfo new PageInfoPmsBrand(list);
复制代码Druid alibaba开源的数据库连接池号称Java语言中最好的数据库连接池。 Mybatis generator MyBatis的代码生成器可以根据数据库生成model、mapper.xml、mapper接口和Example通常情况下的单表查询不用再手写mapper。 项目搭建 使用IDEA初始化一个SpringBoot项目 添加项目依赖 在pom.xml中添加相关依赖。 parentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion2.1.3.RELEASE/versionrelativePath/ !-- lookup parent from repository --/parentdependencies!--SpringBoot通用依赖模块--dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-actuator/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-aop/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependency!--MyBatis分页插件--dependencygroupIdcom.github.pagehelper/groupIdartifactIdpagehelper-spring-boot-starter/artifactIdversion1.2.10/version/dependency!--集成druid连接池--dependencygroupIdcom.alibaba/groupIdartifactIddruid-spring-boot-starter/artifactIdversion1.1.10/version/dependency!-- MyBatis 生成器 --dependencygroupIdorg.mybatis.generator/groupIdartifactIdmybatis-generator-core/artifactIdversion1.3.3/version/dependency!--Mysql数据库驱动--dependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion8.0.15/version/dependency/dependencies
复制代码修改SpringBoot配置文件 在application.yml中添加数据源配置和MyBatis的mapper.xml的路径配置。 server:port: 8080spring:datasource:url: jdbc:mysql://localhost:3306/mall?useUnicodetruecharacterEncodingutf-8serverTimezoneAsia/Shanghaiusername: rootpassword: rootmybatis:mapper-locations:- classpath:mapper/*.xml- classpath*:com/**/mapper/*.xml
复制代码项目结构说明 Mybatis generator 配置文件 配置数据库连接Mybatis generator生成model、mapper接口及mapper.xml的路径。 ?xml version1.0 encodingUTF-8?
!DOCTYPE generatorConfigurationPUBLIC -//mybatis.org//DTD MyBatis Generator Configuration 1.0//ENhttp://mybatis.org/dtd/mybatis-generator-config_1_0.dtdgeneratorConfigurationproperties resourcegenerator.properties/context idMySqlContext targetRuntimeMyBatis3 defaultModelTypeflatproperty namebeginningDelimiter value/property nameendingDelimiter value/property namejavaFileEncoding valueUTF-8/!-- 为模型生成序列化方法--plugin typeorg.mybatis.generator.plugins.SerializablePlugin/!-- 为生成的Java模型创建一个toString方法 --plugin typeorg.mybatis.generator.plugins.ToStringPlugin/!--可以自定义生成model的代码注释--commentGenerator typecom.macro.mall.tiny.mbg.CommentGenerator!-- 是否去除自动生成的注释 true是 false:否 --property namesuppressAllComments valuetrue/property namesuppressDate valuetrue/property nameaddRemarkComments valuetrue//commentGenerator!--配置数据库连接--jdbcConnection driverClass${jdbc.driverClass}connectionURL${jdbc.connectionURL}userId${jdbc.userId}password${jdbc.password}!--解决mysql驱动升级到8.0后不生成指定数据库代码的问题--property namenullCatalogMeansCurrent valuetrue //jdbcConnection!--指定生成model的路径--javaModelGenerator targetPackagecom.macro.mall.tiny.mbg.model targetProjectmall-tiny-01\src\main\java/!--指定生成mapper.xml的路径--sqlMapGenerator targetPackagecom.macro.mall.tiny.mbg.mapper targetProjectmall-tiny-01\src\main\resources/!--指定生成mapper接口的的路径--javaClientGenerator typeXMLMAPPER targetPackagecom.macro.mall.tiny.mbg.mappertargetProjectmall-tiny-01\src\main\java/!--生成全部表tableName设为%--table tableNamepms_brandgeneratedKey columnid sqlStatementMySql identitytrue//table/context
/generatorConfiguration
复制代码运行Generator的main函数生成代码 package com.macro.mall.tiny.mbg;import org.mybatis.generator.api.MyBatisGenerator;
import org.mybatis.generator.config.Configuration;
import org.mybatis.generator.config.xml.ConfigurationParser;
import org.mybatis.generator.internal.DefaultShellCallback;import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;/*** 用于生产MBG的代码* Created by macro on 2018/4/26.*/
public class Generator {public static void main(String[] args) throws Exception {//MBG 执行过程中的警告信息ListString warnings new ArrayListString();//当生成的代码重复时覆盖原代码boolean overwrite true;//读取我们的 MBG 配置文件InputStream is Generator.class.getResourceAsStream(/generatorConfig.xml);ConfigurationParser cp new ConfigurationParser(warnings);Configuration config cp.parseConfiguration(is);is.close();DefaultShellCallback callback new DefaultShellCallback(overwrite);//创建 MBGMyBatisGenerator myBatisGenerator new MyBatisGenerator(config, callback, warnings);//执行生成代码myBatisGenerator.generate(null);//输出警告信息for (String warning : warnings) {System.out.println(warning);}}
}
复制代码添加MyBatis的Java配置 用于配置需要动态生成的mapper接口的路径 package com.macro.mall.tiny.config;import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Configuration;/*** MyBatis配置类* Created by macro on 2019/4/8.*/
Configuration
MapperScan(com.macro.mall.tiny.mbg.mapper)
public class MyBatisConfig {
}复制代码实现Controller中的接口 实现PmsBrand表中的添加、修改、删除及分页查询接口。 package com.macro.mall.tiny.controller;import com.macro.mall.tiny.common.api.CommonPage;
import com.macro.mall.tiny.common.api.CommonResult;
import com.macro.mall.tiny.mbg.model.PmsBrand;
import com.macro.mall.tiny.service.PmsBrandService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.*;import java.util.List;/*** 品牌管理Controller* Created by macro on 2019/4/19.*/
Controller
RequestMapping(/brand)
public class PmsBrandController {Autowiredprivate PmsBrandService demoService;private static final Logger LOGGER LoggerFactory.getLogger(PmsBrandController.class);RequestMapping(value listAll, method RequestMethod.GET)ResponseBodypublic CommonResultListPmsBrand getBrandList() {return CommonResult.success(demoService.listAllBrand());}RequestMapping(value /create, method RequestMethod.POST)ResponseBodypublic CommonResult createBrand(RequestBody PmsBrand pmsBrand) {CommonResult commonResult;int count demoService.createBrand(pmsBrand);if (count 1) {commonResult CommonResult.success(pmsBrand);LOGGER.debug(createBrand success:{}, pmsBrand);} else {commonResult CommonResult.failed(操作失败);LOGGER.debug(createBrand failed:{}, pmsBrand);}return commonResult;}RequestMapping(value /update/{id}, method RequestMethod.POST)ResponseBodypublic CommonResult updateBrand(PathVariable(id) Long id, RequestBody PmsBrand pmsBrandDto, BindingResult result) {CommonResult commonResult;int count demoService.updateBrand(id, pmsBrandDto);if (count 1) {commonResult CommonResult.success(pmsBrandDto);LOGGER.debug(updateBrand success:{}, pmsBrandDto);} else {commonResult CommonResult.failed(操作失败);LOGGER.debug(updateBrand failed:{}, pmsBrandDto);}return commonResult;}RequestMapping(value /delete/{id}, method RequestMethod.GET)ResponseBodypublic CommonResult deleteBrand(PathVariable(id) Long id) {int count demoService.deleteBrand(id);if (count 1) {LOGGER.debug(deleteBrand success :id{}, id);return CommonResult.success(null);} else {LOGGER.debug(deleteBrand failed :id{}, id);return CommonResult.failed(操作失败);}}RequestMapping(value /list, method RequestMethod.GET)ResponseBodypublic CommonResultCommonPagePmsBrand listBrand(RequestParam(value pageNum, defaultValue 1) Integer pageNum,RequestParam(value pageSize, defaultValue 3) Integer pageSize) {ListPmsBrand brandList demoService.listBrand(pageNum, pageSize);return CommonResult.success(CommonPage.restPage(brandList));}RequestMapping(value /{id}, method RequestMethod.GET)ResponseBodypublic CommonResultPmsBrand brand(PathVariable(id) Long id) {return CommonResult.success(demoService.getBrand(id));}
}复制代码添加Service接口 package com.macro.mall.tiny.service;import com.macro.mall.tiny.mbg.model.PmsBrand;import java.util.List;/*** PmsBrandService* Created by macro on 2019/4/19.*/
public interface PmsBrandService {ListPmsBrand listAllBrand();int createBrand(PmsBrand brand);int updateBrand(Long id, PmsBrand brand);int deleteBrand(Long id);ListPmsBrand listBrand(int pageNum, int pageSize);PmsBrand getBrand(Long id);
}复制代码实现Service接口 package com.macro.mall.tiny.service.impl;import com.github.pagehelper.PageHelper;
import com.macro.mall.tiny.mbg.mapper.PmsBrandMapper;
import com.macro.mall.tiny.mbg.model.PmsBrand;
import com.macro.mall.tiny.mbg.model.PmsBrandExample;
import com.macro.mall.tiny.service.PmsBrandService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import java.util.List;/*** PmsBrandService实现类* Created by macro on 2019/4/19.*/
Service
public class PmsBrandServiceImpl implements PmsBrandService {Autowiredprivate PmsBrandMapper brandMapper;Overridepublic ListPmsBrand listAllBrand() {return brandMapper.selectByExample(new PmsBrandExample());}Overridepublic int createBrand(PmsBrand brand) {return brandMapper.insertSelective(brand);}Overridepublic int updateBrand(Long id, PmsBrand brand) {brand.setId(id);return brandMapper.updateByPrimaryKeySelective(brand);}Overridepublic int deleteBrand(Long id) {return brandMapper.deleteByPrimaryKey(id);}Overridepublic ListPmsBrand listBrand(int pageNum, int pageSize) {PageHelper.startPage(pageNum, pageSize);brandMapper.selectByExample(new PmsBrandExample());return brandMapper.selectByExample(new PmsBrandExample());}Overridepublic PmsBrand getBrand(Long id) {return brandMapper.selectByPrimaryKey(id);}
}复制代码项目源码地址 github.com/macrozheng/… 公众号 mall项目全套学习教程连载中关注公众号第一时间获取。 转载于:https://juejin.im/post/5cf7c4a7e51d4577790c1c50