springboot 使用mybites作为持久层编写webservice问题?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springboot 使用mybites作为持久层编写webservice问题?相关的知识,希望对你有一定的参考价值。

没有连接数据库是webservice接口访问正常,连接数据库之后项目启动成功但是访问webservice页面返回No services have been found.

应该是加了Mybatis扫描dao,service,controller配置有问题,信息有限,智能给你提供个参考 参考技术A 一看就是service类没有写 @Service 注解 参考技术B springboot 参考技术C 用hospitals

Spring Boot系列Spring Boot整合持久层

四、Spring Boot整合持久层

4.1 Spring Boot项目工程搭建

1、新建SpringBoot项目

2、然后下一步

3、下一步(选择项目依赖)

4、完成构建

4.2 MyBatis逆向工程生成pojo和mapper文件

1 先建立包和文件夹,用于存储配置文件和逆向生成pojo和mapper文件

2 先引入pom依赖文件

  • pom.xml(y引入mybatis启动器)
    <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>
    
            <!--支持Thymeleaf-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-thymeleaf</artifactId>
            </dependency>
    
            <!--为了使thymeleaf对html5非严格检查,LEGACYHTML5起作用-->
            <dependency>
                <groupId>net.sourceforge.nekohtml</groupId>
                <artifactId>nekohtml</artifactId>
                <version>1.9.22</version>
            </dependency>
    
            <!--热部署()-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-devtools</artifactId>
            </dependency>
    
            <!--SpringBoot 整合mybatis 启动器-->
            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>2.1.2</version>
            </dependency>
            <!--Oracle驱动类-->
            <dependency>
                <groupId>com.oracle</groupId>
                <artifactId>ojdbc6</artifactId>
                <version>11.2.0.2.0</version>
            </dependency>
    
            <!--为了使thymeleaf对html5非严格检查,LEGACYHTML5起作用-->
            <dependency>
                <groupId>net.sourceforge.nekohtml</groupId>
                <artifactId>nekohtml</artifactId>
                <version>1.9.22</version>
            </dependency>
    
            <!--热部署()-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-devtools</artifactId>
            </dependency>
    

  • pom.xml(引入mybatis-generator插件)

    <!--Mybatis自动生成映射文件、实体类、Mapper接口 插件-->
                <plugin>
                    <groupId>org.mybatis.generator</groupId>
                    <artifactId>mybatis-generator-maven-plugin</artifactId>
                    <version>1.3.2</version>
                    <executions>
                        <execution>
                            <id>Generate MyBatis Artifacts</id>
                            <phase>deploy</phase>
                            <goals>
                                <goal>generate</goal>
                            </goals>
                        </execution>
                    </executions>
                    <configuration>
                        <!-- generator 工具配置文件的位置 -->
                        <configurationFile>src/main/resources/mybatis-generator/generatorConfig.xml</configurationFile>
                        <verbose>true</verbose>
                        <overwrite>true</overwrite>
                    </configuration>
                    <dependencies>
                        <dependency>
                            <groupId>com.oracle</groupId>
                            <artifactId>ojdbc6</artifactId>
                            <version>11.2.0.2.0</version>
                        </dependency>
                        <dependency>
                            <groupId>org.mybatis.generator</groupId>
                            <artifactId>mybatis-generator-core</artifactId>
                            <version>1.3.2</version>
                        </dependency>
                    </dependencies>
                </plugin>
    
  • 数据库连接参数mybatisGeneratorinit.properties配置文件

    project=src/main/java
    resources=src/main/resources
    jdbc_driver =oracle.jdbc.OracleDriver
    jdbc_url=jdbc:oracle:thin:localhost:1521:orcl
    jdbc_user=ebuy
    jdbc_password=123456
    
  • generatorConfig.xml(生产者配置,拷贝generator.xml文件到resource目录,设置数据库、文件包路径、表名和实体名对应关系等信息)

    <?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>
    	<!--执行generator插件生成文件的命令: call mvn mybatis-generator:generate -e -->
    	<!-- 引入配置文件 -->
    	<properties resource="mybatis-generator/mybatisGeneratorinit.properties" />
    	<!--classPathEntry:数据库的JDBC驱动,换成你自己的驱动位置 可选 -->
    	<!--<classPathEntry location="D:\\generator_mybatis\\mysql-connector-java-5.1.24-bin.jar" 
    		/> -->
    
    	<!-- 一个数据库一个context -->
    	<!--defaultModelType="flat" 大数据字段,不分表 -->
    	<context id="MysqlTables" targetRuntime="MyBatis3Simple"
    		defaultModelType="flat">
    		<!-- 自动识别数据库关键字,默认false,如果设置为true,根据SqlReservedWords中定义的关键字列表; 一般保留默认值,遇到数据库关键字(Java关键字),使用columnOverride覆盖 -->
    		<property name="autoDelimitKeywords" value="true" />
    		<!-- 生成的Java文件的编码 -->
    		<property name="javaFileEncoding" value="utf-8" />
    		<!-- beginningDelimiter和endingDelimiter:指明数据库的用于标记数据库对象名的符号,比如ORACLE就是双引号,MYSQL默认是`反引号; -->
    		<property name="beginningDelimiter" value="`" />
    		<property name="endingDelimiter" value="`" />
    
    		<!-- 格式化java代码 -->
    		<property name="javaFormatter"
    			value="org.mybatis.generator.api.dom.DefaultJavaFormatter" />
    		<!-- 格式化XML代码 -->
    		<property name="xmlFormatter"
    			value="org.mybatis.generator.api.dom.DefaultXmlFormatter" />
    		<plugin type="org.mybatis.generator.plugins.SerializablePlugin" />
    		<!--字符串插件-->
    		<plugin type="org.mybatis.generator.plugins.ToStringPlugin" />
    
    		<!-- 注释 -->
    		<commentGenerator>
    			<property name="suppressAllComments" value="false" /><!-- 是否取消注释 -->
    			<property name="suppressDate" value="true" /> <!-- 是否生成注释代时间戳 -->
    		</commentGenerator>
    
    		<!-- jdbc连接 -->
    		<jdbcConnection driverClass="${jdbc_driver}"
    			connectionURL="${jdbc_url}" userId="${jdbc_user}"
    			password="${jdbc_password}" />
    		<!-- 类型转换 -->
    		<javaTypeResolver>
    			<!-- 是否使用bigDecimal, false可自动转化以下类型(Long, Integer, Short, etc.) -->
    			<property name="forceBigDecimals" value="false" />
    		</javaTypeResolver>
    
    		<!-- 生成实体类地址 -->
    		<javaModelGenerator
    			targetPackage="com.kdcrm.pojo"
    			targetProject="${project}">
    			<property name="enableSubPackages" value="false" />
    			<property name="trimStrings" value="true" />
    		</javaModelGenerator>
    		
    		<!-- 生成mapxml对应client,也就是接口dao -->
    		<javaClientGenerator
    			targetPackage="com.kdcrm.mapper"
    			targetProject="${project}" type="XMLMAPPER">
    			<property name="enableSubPackages" value="false" />
    		</javaClientGenerator>
    		<!-- 生成mapxml文件 -->
    			<sqlMapGenerator targetPackage="com.kdcrm.mapper"
    				targetProject="${resources}">
    				<property name="enableSubPackages" value="false" />
    			</sqlMapGenerator>
    		<!-- table可以有多个,每个数据库中的表都可以写一个table,tableName表示要匹配的数据库表,也可以在tableName属性中通过使用%通配符来匹配所有数据库表,只有匹配的表才会自动生成文件 -->
    		<table tableName="system_userinfo" enableCountByExample="true"
    			enableUpdateByExample="true" enableDeleteByExample="true"
    			enableSelectByExample="true" selectByExampleQueryId="true">
    			<property name="useActualColumnNames" value="false" />
    			<!-- 数据库表主键 -->
    			<generatedKey column="id" sqlStatement="Oracle"
    				identity="true" />
    		</table>
    	</context>
    </generatorConfiguration> 
    




  • 最后通过maven命令:mybatis-generator:generate生成代码,在idea中使用了maven,我们可以不用使用命令,直接双击插件即可帮我们完成逆向工程的创建:

4.3 应用实现增删改查

  • 通过mvc分层实现用户信息的在web页面的增删改查操作
  • 新增service业务层实现业务逻辑。
  • 新增controller控制层实现请求转发和页面渲染
    @Controller
    public class SystemUserInfoController {
    
        @Autowired
        SystemUserinfoService systemUserinfoService;
    
    
        @GetMapping("/selectAll")
        public String selectAll(HttpServletRequest request)
        {
            List<SystemUserinfo> list=systemUserinfoService.selectAll();
            request.setAttribute("list",list);
            for(SystemUserinfo systemUserinfo:list)
            {
                System.out.println(systemUserinfo);
            }
            return "list";
        }
    
    }
    
  • 新增view视图层展现数据,使用thymeleaf标签。
    thymeleaf的依赖在上述pom.xml文件中已经引入,只需在yml文件找那个配置相关参数
  • application.yml
    server:
      port: 8090
    
    #配置Thymeleaf视图配置
    spring:
      thymeleaf:
        prefix: classpath:/templates/  #默认视图模板路径
        suffix: .html  #默认解析视图后缀
        mode: LEGACYHTML5 #使用非严格 HTML
        encoding: UTF-8 #编码格式
        cache: false #是否开启缓存
        check-template-location: true
      datasource:
        url: jdbc:oracle:thin:localhost:1521:orcl
        driver-class-name: oracle.jdbc.OracleDriver
        username: ebuy
        password: 123456
        tomcat:
          max-active: 20
          max-wait: 60000
          min-idle: 2
          initial-size: 1
    
    mybatis:
      type-aliases-package: com.kdcrm.pojo
      mapper-locations: com/kdcrm/mapper/*.xml
    
    
    #配置日志级别为debug
    logging:
      level:
        com.kdcrm: debug
    
  • 在templates目录下新建一个list.html页面
    <!DOCTYPE html>
    <html xmlns:th="http://www.thymeleaf.org" lang="en" >
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <table border="1">
         <tr>
             <td>编号</td>
             <td>登录名</td>
             <td>姓名</td>
             <td>性别</td>
             <td>邮箱</td>
             <td>电话</td>
         </tr>
        <!--/*@thymesVar id="list" type=""*/-->
        <tr th:each="user:${list}">
            <td th:text="${user.userinfoUid}"></td>
            <td th:text="${user.userinfoLoginid}"></td>
            <td th:text="${user.userinfoName}"></td>
            <td th:text="${user.userinfoSex}"></td>
            <td th:text="${user.userinfoEmail}"></td>
            <td th:text="${user.userinfoMobile}"></td>
        </tr>
    
    
    </table>
    
    </body>
    </html>
    
  • 启动项目,访问地址http://localhost:8090/selectAll

    以上是关于springboot 使用mybites作为持久层编写webservice问题?的主要内容,如果未能解决你的问题,请参考以下文章

    JSP+Servlet+Mybits小例子

    Mybatis的应用2 使用mybits+SpringBoot完成第一个查询的demo(随后加增加,更新,删除)

    小白的进阶之路6

    SpringBoot2.0 基础案例(09):集成JPA持久层框架,简化数据库操作

    SpringBoot整合持久层技术--Spring Data JPA

    整合持久层框架springDatajpa+访问数据库