• ssm和springboot整合


    目录

    1.整合Mybatis

     1.1.确保项目启动成功  

    1.2.代码生成 

    1.3.测试

    2.Mybatis-plus简介

    3.整合Mybatis-plus 

    4.Mybatisplus中使用Mybatis实现多表联查功能 


    1.整合Mybatis

    新建一个springboot项目,注意:要勾选择相关的数据库

     1.1.确保项目启动成功  

     解决上述的方案:就是降低版本 

    导入pom依赖:

     
                mysql
                mysql-connector-java
                5.1.44
           

     

     

    application.yml:

    1. mybatis:
    2. mapper-locations: classpath:mappers/*xml
    3. type-aliases-package: com.xbb.springboot02mybatis.mybatis.entity
    4. server:
    5. port: 8080
    6. spring:
    7. application:
    8. name: springboot02mybatis
    9. datasource:
    10. driver-class-name: com.mysql.jdbc.Driver
    11. name: defaultDataSource
    12. password: 123456
    13. url: jdbc:mysql://localhost:3306/mybatis_ssm?useUnicode=true&characterEncoding=UTF-8
    14. username: root

    1.2.代码生成 

     jdbc.properties:

    1. jdbc.driver=com.mysql.jdbc.Driver
    2. jdbc.url=jdbc:mysql://localhost:3306/mybatis_ssm?useUnicode=true&characterEncoding=UTF-8
    3. jdbc.username=root
    4. jdbc.password=123456

    generatorConfig.xml    改三个地方,类名要跟创建的类名保持一致,还有上面那个yml里面的mappers后加上/**,还要改对生成的位置在我创建的resource里面的mappers生成在这里面才可以

     


           "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd" >





       
       
           
           
       

       
                            connectionURL="${jdbc.url}" userId="${jdbc.username}" password="${jdbc.password}"/>

       
       
           
           
       

       
       
       
                                targetProject="src/main/java">
           
           
           
           
           
           
           
           
       

       
                             targetProject="src/main/resources/mappers">
           
           
       

       
       
       
       
                                 targetProject="src/main/java" type="XMLMAPPER">
           
           
       

       
       
       
       
       
       
       
       
       
       
       
       
       

       

    "t_mvc_book" domainObjectName="Book"
               enableCountByExample="false" enableDeleteByExample="false"
               enableSelectByExample="false" enableUpdateByExample="false">
       



     

    pom.xml:

    复制代码生成的插件

     
                    org.mybatis.generator
                    mybatis-generator-maven-plugin
                    1.3.2
                   
                       
                       
                            mysql
                            mysql-connector-java
                            5.1.44
                       

                   

                   
                        true
                   

               

     

    1.3.测试

    利用Eolink进行测试,这里我就创建一个类来测试 BookController.java

    1. @RestController
    2. @RequestMapping("/mybatis")
    3. public class BookController {
    4. @Autowired
    5. private BookMapper bookMapper;
    6. // 查询
    7. @GetMapping("/get")
    8. public Book get(Integer bid){
    9. return bookMapper.selectByPrimaryKey(bid);
    10. }
    11. // 删除
    12. @DeleteMapping("/delete")
    13. public int delete(Integer bid){
    14. return bookMapper.deleteByPrimaryKey(bid);
    15. }
    16. // 新增
    17. @PutMapping("/add")
    18. public int add(Book book){
    19. return bookMapper.insertSelective(book);
    20. }
    21. }

    放到测试软件上进行测试即可:

     

    2.Mybatis-plus简介

    学习网址:

    https://baomidou.com/icon-default.png?t=M85Bhttps://baomidou.com/有兴趣的可以进去了解

    3.整合Mybatis-plus 

    新建一个springboot项目:

     在pom依赖中添加相关配置:

       
                com.baomidou
                mybatis-plus-boot-starter
                3.4.2
           

           
                com.baomidou
                mybatis-plus-generator
                3.4.1
           

           
                org.freemarker
                freemarker
                2.3.31
           

     

    把application.properties转换成yml文件方便查看

    进入网址查找代码

    代码生成Mybatis-plus:

    1. package com.xbb.springbootmp.mp;
    2. import com.baomidou.mybatisplus.annotation.DbType;
    3. import com.baomidou.mybatisplus.annotation.IdType;
    4. import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
    5. import com.baomidou.mybatisplus.core.toolkit.StringPool;
    6. import com.baomidou.mybatisplus.core.toolkit.StringUtils;
    7. import com.baomidou.mybatisplus.generator.AutoGenerator;
    8. import com.baomidou.mybatisplus.generator.InjectionConfig;
    9. import com.baomidou.mybatisplus.generator.config.*;
    10. import com.baomidou.mybatisplus.generator.config.po.TableInfo;
    11. import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
    12. import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
    13. import java.util.ArrayList;
    14. import java.util.List;
    15. import java.util.Scanner;
    16. /**
    17. * mybatis-plus代码生成
    18. */
    19. public class MPGenerator {
    20. /**
    21. *

    22. * 读取控制台内容
    23. *

    24. */
    25. public static String scanner(String tip) {
    26. Scanner scanner = new Scanner(System.in);
    27. StringBuilder help = new StringBuilder();
    28. help.append("请输入" + tip);
    29. System.out.println(help.toString());
    30. if (scanner.hasNext()) {
    31. String ipt = scanner.next();
    32. if (StringUtils.isNotBlank(ipt)) {
    33. if ("quit".equals(ipt)) return "";
    34. return ipt;
    35. }
    36. }
    37. throw new MybatisPlusException("请输入正确的" + tip + "!");
    38. }
    39. public static void main(String[] args) {
    40. // 代码生成器
    41. AutoGenerator mpg = new AutoGenerator();
    42. // 1.全局配置
    43. GlobalConfig gc = new GlobalConfig();
    44. String projectPath = System.getProperty("user.dir") + "/testspboot03";
    45. System.out.println(projectPath);
    46. gc.setOutputDir(projectPath + "/src/main/java");
    47. gc.setOpen(false);
    48. gc.setBaseResultMap(true);//生成BaseResultMap
    49. gc.setActiveRecord(false);// 不需要ActiveRecord特性的请改为false
    50. gc.setEnableCache(false);// XML 二级缓存
    51. gc.setBaseResultMap(true);// XML ResultMap
    52. gc.setBaseColumnList(true);// XML columList
    53. //gc.setSwagger2(true); //实体属性 Swagger2 注解
    54. gc.setAuthor("lky");
    55. // 自定义文件命名,注意 %s 会自动填充表实体属性!
    56. gc.setMapperName("%sMapper");
    57. gc.setXmlName("%sMapper");
    58. gc.setServiceName("%sService");
    59. gc.setServiceImplName("%sServiceImpl");
    60. gc.setControllerName("%sController");
    61. gc.setIdType(IdType.AUTO);
    62. mpg.setGlobalConfig(gc);
    63. // 2.数据源配置
    64. DataSourceConfig dsc = new DataSourceConfig();
    65. dsc.setDbType(DbType.MYSQL);
    66. dsc.setUrl("jdbc:mysql://localhost:3306/mybatis_ssm?useUnicode=true&characterEncoding=UTF-8");
    67. dsc.setDriverName("com.mysql.jdbc.Driver");
    68. dsc.setUsername("root");
    69. dsc.setPassword("123456");
    70. mpg.setDataSource(dsc);
    71. // 3.包配置
    72. PackageConfig pc = new PackageConfig();
    73. String moduleName = scanner("模块名(quit退出,表示没有模块名)");
    74. if (StringUtils.isNotBlank(moduleName)) {
    75. pc.setModuleName(moduleName);
    76. }
    77. pc.setParent("com.zking.demo")
    78. .setMapper("mapper")
    79. .setService("service")
    80. .setController("controller")
    81. .setEntity("model");
    82. mpg.setPackageInfo(pc);
    83. // 4.自定义配置
    84. InjectionConfig cfg = new InjectionConfig() {
    85. @Override
    86. public void initMap() {
    87. // to do nothing
    88. }
    89. };
    90. // 如果模板引擎是 freemarker
    91. String templatePath = "/templates/mapper.xml.ftl";
    92. // 自定义输出配置
    93. List focList = new ArrayList<>();
    94. // 自定义配置会被优先输出
    95. focList.add(new FileOutConfig(templatePath) {
    96. @Override
    97. public String outputFile(TableInfo tableInfo) {
    98. // 自定义输出文件名 , 如果你 Entity 设置了前后缀、此处注意 xml 的名称会跟着发生变化!!
    99. if (StringUtils.isNotBlank(pc.getModuleName())) {
    100. return projectPath + "/src/main/resources/mappers/" + pc.getModuleName() + "/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML;
    101. } else {
    102. return projectPath + "/src/main/resources/mappers/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML;
    103. }
    104. }
    105. });
    106. cfg.setFileOutConfigList(focList);
    107. mpg.setCfg(cfg);
    108. // 配置模板
    109. TemplateConfig templateConfig = new TemplateConfig();
    110. templateConfig.setXml(null);
    111. mpg.setTemplate(templateConfig);
    112. // 5.策略配置
    113. StrategyConfig strategy = new StrategyConfig();
    114. // 表名生成策略(下划线转驼峰命名)
    115. strategy.setNaming(NamingStrategy.underline_to_camel);
    116. // 列名生成策略(下划线转驼峰命名)
    117. strategy.setColumnNaming(NamingStrategy.underline_to_camel);
    118. // 是否启动Lombok配置
    119. strategy.setEntityLombokModel(true);
    120. // 是否启动REST风格配置
    121. strategy.setRestControllerStyle(true);
    122. // 自定义实体父类strategy.setSuperEntityClass("com.baomidou.mybatisplus.extension.activerecord.Model");
    123. // 自定义service父接口strategy.setSuperServiceClass("com.baomidou.mybatisplus.extension.service.IService");
    124. // 自定义service实现类strategy.setSuperServiceImplClass("com.baomidou.mybatisplus.extension.service.impl.ServiceImpl");
    125. // 自定义mapper接口strategy.setSuperMapperClass("com.baomidou.mybatisplus.core.mapper.BaseMapper");
    126. strategy.setSuperEntityColumns("id");
    127. // 写于父类中的公共字段plus
    128. strategy.setSuperEntityColumns("id");
    129. strategy.setInclude(scanner("表名,多个英文逗号分割").split(","));
    130. strategy.setControllerMappingHyphenStyle(true);
    131. //表名前缀(可变参数):“t_”或”“t_模块名”,例如:t_user或t_sys_user
    132. strategy.setTablePrefix("t_", "t_sys_");
    133. //strategy.setTablePrefix(scanner("请输入表前缀"));
    134. mpg.setStrategy(strategy);
    135. mpg.setTemplateEngine(new FreemarkerTemplateEngine());
    136. // 执行
    137. mpg.execute();
    138. }
    139. }

    MPGenerator.java :

    1. package com.xbb.springbootmp.mp;
    2. import com.baomidou.mybatisplus.annotation.DbType;
    3. import com.baomidou.mybatisplus.annotation.IdType;
    4. import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
    5. import com.baomidou.mybatisplus.core.toolkit.StringPool;
    6. import com.baomidou.mybatisplus.core.toolkit.StringUtils;
    7. import com.baomidou.mybatisplus.generator.AutoGenerator;
    8. import com.baomidou.mybatisplus.generator.InjectionConfig;
    9. import com.baomidou.mybatisplus.generator.config.*;
    10. import com.baomidou.mybatisplus.generator.config.po.TableInfo;
    11. import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
    12. import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
    13. import java.util.ArrayList;
    14. import java.util.List;
    15. import java.util.Scanner;
    16. /**
    17. * mybatis-plus代码生成
    18. */
    19. public class MPGenerator {
    20. /**
    21. *

    22. * 读取控制台内容
    23. *

    24. */
    25. public static String scanner(String tip) {
    26. Scanner scanner = new Scanner(System.in);
    27. StringBuilder help = new StringBuilder();
    28. help.append("请输入" + tip);
    29. System.out.println(help.toString());
    30. if (scanner.hasNext()) {
    31. String ipt = scanner.next();
    32. if (StringUtils.isNotBlank(ipt)) {
    33. if ("quit".equals(ipt)) return "";
    34. return ipt;
    35. }
    36. }
    37. throw new MybatisPlusException("请输入正确的" + tip + "!");
    38. }
    39. public static void main(String[] args) {
    40. // 代码生成器
    41. AutoGenerator mpg = new AutoGenerator();
    42. // 1.全局配置
    43. GlobalConfig gc = new GlobalConfig();
    44. // System.getProperty("user.dir") 指的是工作区间,就是它test02
    45. String projectPath = System.getProperty("user.dir") + "/springbootmp";
    46. System.out.println(projectPath);
    47. gc.setOutputDir(projectPath + "/src/main/java");
    48. gc.setOpen(false);
    49. gc.setBaseResultMap(true);//生成BaseResultMap
    50. gc.setActiveRecord(false);// 不需要ActiveRecord特性的请改为false
    51. gc.setEnableCache(false);// XML 二级缓存
    52. gc.setBaseResultMap(true);// XML ResultMap
    53. gc.setBaseColumnList(true);// XML columList
    54. //gc.setSwagger2(true); //实体属性 Swagger2 注解
    55. gc.setAuthor("jwj");
    56. // 自定义文件命名,注意 %s 会自动填充表实体属性!
    57. gc.setMapperName("%sMapper");
    58. gc.setXmlName("%sMapper");
    59. gc.setServiceName("%sService");
    60. gc.setServiceImplName("%sServiceImpl");
    61. gc.setControllerName("%sController");
    62. gc.setIdType(IdType.AUTO);
    63. mpg.setGlobalConfig(gc);
    64. // 2.数据源配置
    65. DataSourceConfig dsc = new DataSourceConfig();
    66. dsc.setDbType(DbType.MYSQL);
    67. dsc.setUrl("jdbc:mysql://localhost:3306/mybatis_ssm?useUnicode=true&characterEncoding=UTF-8");
    68. dsc.setDriverName("com.mysql.jdbc.Driver");
    69. dsc.setUsername("root");
    70. dsc.setPassword("123456");
    71. mpg.setDataSource(dsc);
    72. // 3.包配置
    73. PackageConfig pc = new PackageConfig();
    74. String moduleName = scanner("模块名(quit退出,表示没有模块名)");
    75. if (StringUtils.isNotBlank(moduleName)) {
    76. pc.setModuleName(moduleName);
    77. }
    78. // 设置父包
    79. pc.setParent("com.zking.springbootmp")
    80. .setMapper("mapper")
    81. .setService("service")
    82. .setController("controller")
    83. .setEntity("model");
    84. mpg.setPackageInfo(pc);
    85. // 4.自定义配置
    86. InjectionConfig cfg = new InjectionConfig() {
    87. @Override
    88. public void initMap() {
    89. // to do nothing
    90. }
    91. };
    92. // 如果模板引擎是 freemarker
    93. String templatePath = "/templates/mapper.xml.ftl";
    94. // 自定义输出配置
    95. List focList = new ArrayList<>();
    96. // 自定义配置会被优先输出
    97. focList.add(new FileOutConfig(templatePath) {
    98. @Override
    99. public String outputFile(TableInfo tableInfo) {
    100. // 自定义输出文件名 , 如果你 Entity 设置了前后缀、此处注意 xml 的名称会跟着发生变化!!
    101. if (StringUtils.isNotBlank(pc.getModuleName())) {
    102. return projectPath + "/src/main/resources/mappers/" + pc.getModuleName() + "/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML;
    103. } else {
    104. return projectPath + "/src/main/resources/mappers/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML;
    105. }
    106. }
    107. });
    108. cfg.setFileOutConfigList(focList);
    109. mpg.setCfg(cfg);
    110. // 配置模板
    111. TemplateConfig templateConfig = new TemplateConfig();
    112. templateConfig.setXml(null);
    113. mpg.setTemplate(templateConfig);
    114. // 5.策略配置
    115. StrategyConfig strategy = new StrategyConfig();
    116. // 表名生成策略(下划线转驼峰命名)
    117. strategy.setNaming(NamingStrategy.underline_to_camel);
    118. // 列名生成策略(下划线转驼峰命名)
    119. strategy.setColumnNaming(NamingStrategy.underline_to_camel);
    120. // 是否启动Lombok配置
    121. strategy.setEntityLombokModel(true);
    122. // 是否启动REST风格配置
    123. strategy.setRestControllerStyle(true);
    124. // 自定义实体父类strategy.setSuperEntityClass("com.baomidou.mybatisplus.extension.activerecord.Model");
    125. // 自定义service父接口strategy.setSuperServiceClass("com.baomidou.mybatisplus.extension.service.IService");
    126. // 自定义service实现类strategy.setSuperServiceImplClass("com.baomidou.mybatisplus.extension.service.impl.ServiceImpl");
    127. // 自定义mapper接口strategy.setSuperMapperClass("com.baomidou.mybatisplus.core.mapper.BaseMapper");
    128. strategy.setSuperEntityColumns("id");
    129. // 写于父类中的公共字段plus
    130. strategy.setSuperEntityColumns("id");
    131. strategy.setInclude(scanner("表名,多个英文逗号分割").split(","));
    132. strategy.setControllerMappingHyphenStyle(true);
    133. //表名前缀(可变参数):“t_”或”“t_模块名”,例如:t_user或t_sys_user
    134. strategy.setTablePrefix("t_", "t_sys_");
    135. //strategy.setTablePrefix(scanner("请输入表前缀"));
    136. mpg.setStrategy(strategy);
    137. mpg.setTemplateEngine(new FreemarkerTemplateEngine());
    138. // 执行
    139. mpg.execute();
    140. }
    141. }

    代码生成完成我们要相关以下四个点:

    1.目前我们的项目是springbootmp  这是代码生成的根路径,这就是配置地址
    2.作者
    3.数据库的地址、密码和用户名换成自己的
    4.指的是我目前项目的启动类所在的位置,就是SpringbootmpApplication它的上一方目录

    生成全部代码展示:

    MvcBookMapper.xml:

    1. "1.0" encoding="UTF-8"?>
    2. "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    3. "com.zking.springbootmp.book.mapper.MvcBookMapper">
    4. "BaseResultMap" type="com.zking.springbootmp.book.model.MvcBook">
    5. "bid" property="bid" />
    6. "bname" property="bname" />
    7. "price" property="price" />
    8. "Base_Column_List">
    9. bid, bname, price

    MvcBookMapper.java:

    1. package com.zking.springbootmp.book.mapper;
    2. import com.zking.springbootmp.book.model.MvcBook;
    3. import com.baomidou.mybatisplus.core.mapper.BaseMapper;
    4. import org.springframework.stereotype.Repository;
    5. /**
    6. * @author冰冰
    7. * @create  2022-11-05 10:31
    8. */
    9. @Repository
    10. public interface MvcBookMapper extends BaseMapper {
    11. }

     MvcBookServiceImpl.java:

    1. package com.zking.springbootmp.book.service.impl;
    2. import com.zking.springbootmp.book.model.MvcBook;
    3. import com.zking.springbootmp.book.mapper.MvcBookMapper;
    4. import com.zking.springbootmp.book.service.MvcBookService;
    5. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
    6. import org.springframework.stereotype.Service;
    7. @Service
    8. public class MvcBookServiceImpl extends ServiceImpl implements MvcBookService {
    9. }

    SpringbootmpApplication.java:
     

    1. package com.xbb.springbootmp;
    2. import org.mybatis.spring.annotation.MapperScan;
    3. import org.springframework.boot.SpringApplication;
    4. import org.springframework.boot.autoconfigure.SpringBootApplication;
    5. import org.springframework.transaction.annotation.EnableTransactionManagement;
    6. @MapperScan("com.zking.springbootmp.book.mapper")
    7. @EnableTransactionManagement
    8. @SpringBootApplication
    9. public class SpringbootmpApplication {
    10. public static void main(String[] args) {
    11. SpringApplication.run(SpringbootmpApplication.class, args);
    12. }
    13. }

    4.Mybatisplus中使用Mybatis实现多表联查功能 

    在MvcBookMapper.xml中写入代码如下:

       
     

    在MvcBookService.java:

    List querUserRole(Map map);

    在MvcBookServiceImpl.java:

    @Autowired
    private MvcBookMapper bookMapper;
    
    @Override
    public List querUserRole(Map map) {
        return bookMapper.querUserRole(map);
    }

    在MvcBookController.java中加入代码如下:

    //    多表联查,用户账户对应角色的功能,论证mybatisplus是一样可以使用mybatis功能
        @GetMapping("/querUserRole")
        public List querUserRole(String uname) {
    //        前端传递了zs
            Map map = new HashMap();
            map.put("username",uname);
            return bookService.querUserRole(map);
        }
     

    最后在测试软件里面进行测试即可!!!

  • 相关阅读:
    学习路之PHP--lumen安装配置
    python-arima模型statsmodels库实现-有数据集(续)-statsmodels-0.9.0版本
    LeetCode75——Day11
    k8s的入门和项目部署
    Fast DDS之Subscriber
    VScode中使用m5stack--屏幕的使用1
    修改Qt源码支持DPI粒度到QWidget
    数据转换成json格式
    基于C++的人脸过渡项目
    C#选择排序(Selection Sort)算法
  • 原文地址:https://blog.csdn.net/m0_68211831/article/details/127736539