整合maven+spring+springmvc+mybatis实现ssm通用增删查改基础开发框架

Spring+SpringMVC+mybatis+Jquery easyUI框架整合 1.1、Spring         Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBea 阅读详情

整合maven+spring+springmvc+mybatis实现ssm通用增删查改基础开发框架



整合maven+spring+springmvc+mybatis实现ssm基础开发框架,封装通用增删查改api,提高程序开发效率

myeclipse创建maven项目:


把maven项目转成maven web项目:项目右键Properties


把WebRoot里面的东西移到src/main/webapp下面


打开pom.xml,加入如下,否则报错


项目缺少web.xml文件,在src/main/webapp/WEB-INF下加入web.xml文件即可

pom.xml管理ssm相关jar包

[html] view plain copy
  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  2.     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">  
  3.     <modelVersion>4.0.0</modelVersion>  
  4.     <groupId>com.xe.demo</groupId>  
  5.     <artifactId>demo-ssm</artifactId>  
  6.     <version>0.0.1-SNAPSHOT</version>  
  7.     <packaging>war</packaging>  
  8.     <properties>  
  9.         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>  
  10.         <jdk.version>1.8</jdk.version>  
  11.         <spring.version>4.2.5.RELEASE</spring.version>  
  12.         <mybatis.version>3.3.1</mybatis.version>  
  13.         <mybatis.spring.version>1.2.4</mybatis.spring.version>  
  14.         <mysql.version>5.1.29</mysql.version>  
  15.         <fastjson.version>1.2.4</fastjson.version>  
  16.         <druid.version>1.0.13</druid.version>  
  17.     </properties>  
  18.     <dependencies>  
  19.         <!--web -->  
  20.         <dependency>  
  21.             <groupId>javax.servlet</groupId>  
  22.             <artifactId>javax.servlet-api</artifactId>  
  23.             <version>3.1.0</version>  
  24.         </dependency>  
  25.   
  26.         <!-- spring -->  
  27.         <dependency>  
  28.             <groupId>org.springframework</groupId>  
  29.             <artifactId>spring-context</artifactId>  
  30.         </dependency>  
  31.         <dependency>  
  32.             <groupId>org.springframework</groupId>  
  33.             <artifactId>spring-orm</artifactId>  
  34.         </dependency>  
  35.         <dependency>  
  36.             <groupId>org.springframework</groupId>  
  37.             <artifactId>spring-oxm</artifactId>  
  38.         </dependency>  
  39.         <dependency>  
  40.             <groupId>org.springframework</groupId>  
  41.             <artifactId>spring-jdbc</artifactId>  
  42.         </dependency>  
  43.         <dependency>  
  44.             <groupId>org.springframework</groupId>  
  45.             <artifactId>spring-tx</artifactId>  
  46.         </dependency>  
  47.         <dependency>  
  48.             <groupId>org.springframework</groupId>  
  49.             <artifactId>spring-web</artifactId>  
  50.         </dependency>  
  51.         <dependency>  
  52.             <groupId>org.springframework</groupId>  
  53.             <artifactId>spring-webmvc</artifactId>  
  54.         </dependency>  
  55.         <dependency>  
  56.             <groupId>org.springframework</groupId>  
  57.             <artifactId>spring-aop</artifactId>  
  58.         </dependency>  
  59.   
  60.         <!--spring-aop依赖 -->  
  61.         <dependency>  
  62.             <groupId>org.aspectj</groupId>  
  63.             <artifactId>aspectjweaver</artifactId>  
  64.             <version>1.8.2</version>  
  65.         </dependency>  
  66.         <!--spring-json依赖 -->  
  67.         <dependency>  
  68.             <groupId>com.fasterxml.jackson.core</groupId>  
  69.             <artifactId>jackson-databind</artifactId>  
  70.             <version>2.4.6</version>  
  71.         </dependency>  
  72.   
  73.         <!--Mybatis -->  
  74.         <dependency>  
  75.             <groupId>org.mybatis</groupId>  
  76.             <artifactId>mybatis</artifactId>  
  77.             <version>${mybatis.version}</version>  
  78.         </dependency>  
  79.         <dependency>  
  80.             <groupId>org.mybatis</groupId>  
  81.             <artifactId>mybatis-spring</artifactId>  
  82.             <version>${mybatis.spring.version}</version>  
  83.         </dependency>  
  84.         <!--分页插件 -->  
  85.         <dependency>  
  86.             <groupId>com.github.pagehelper</groupId>  
  87.             <artifactId>pagehelper</artifactId>  
  88.             <version>4.1.6</version>  
  89.         </dependency>  
  90.   
  91.         <!--mysql -->  
  92.         <dependency>  
  93.             <groupId>mysql</groupId>  
  94.             <artifactId>mysql-connector-java</artifactId>  
  95.             <version>${mysql.version}</version>  
  96.         </dependency>  
  97.   
  98.         <!--druid -->  
  99.         <dependency>  
  100.             <groupId>com.alibaba</groupId>  
  101.             <artifactId>fastjson</artifactId>  
  102.             <version>${fastjson.version}</version>  
  103.         </dependency>  
  104.         <dependency>  
  105.             <groupId>com.alibaba</groupId>  
  106.             <artifactId>druid</artifactId>  
  107.             <version>${druid.version}</version>  
  108.         </dependency>  
  109.   
  110.         <!-- commons -->  
  111.         <dependency>  
  112.             <groupId>commons-fileupload</groupId>  
  113.             <artifactId>commons-fileupload</artifactId>  
  114.             <version>1.3</version>  
  115.         </dependency>  
  116.         <dependency>  
  117.             <groupId>commons-collections</groupId>  
  118.             <artifactId>commons-collections</artifactId>  
  119.             <version>3.2.2</version>  
  120.         </dependency>  
  121.         <dependency>  
  122.             <groupId>org.apache.commons</groupId>  
  123.             <artifactId>commons-lang3</artifactId>  
  124.             <version>3.1</version>  
  125.         </dependency>  
  126.   
  127.         <dependency>  
  128.             <groupId>log4j</groupId>  
  129.             <artifactId>log4j</artifactId>  
  130.             <version>1.2.17</version>  
  131.         </dependency>  
  132.     </dependencies>  
  133.     <dependencyManagement>  
  134.         <dependencies>  
  135.             <dependency>  
  136.                 <groupId>org.springframework</groupId>  
  137.                 <artifactId>spring-framework-bom</artifactId>  
  138.                 <version>${spring.version}</version>  
  139.                 <type>pom</type>  
  140.                 <scope>import</scope>  
  141.             </dependency>  
  142.         </dependencies>  
  143.     </dependencyManagement>  
  144.     <build>  
  145.         <plugins>  
  146.             <plugin>  
  147.                 <artifactId>maven-compiler-plugin</artifactId>  
  148.                 <configuration>  
  149.                     <source>1.8</source>  
  150.                     <target>1.8</target>  
  151.                 </configuration>  
  152.             </plugin>  
  153.             <!-- 打成war包 -->  
  154.             <plugin>  
  155.                 <groupId>org.apache.maven.plugins</groupId>  
  156.                 <artifactId>maven-war-plugin</artifactId>  
  157.                 <configuration>  
  158.                     <warName>ssm</warName>  
  159.                 </configuration>  
  160.             </plugin>  
  161.         </plugins>  
  162.     </build>  
  163. </project>  

删除WebRoot目录,右键更新项目


创建项目包结构



到此项目基础结构创建完成


==================================================整合ssm==================================================

配置mybatis-config.xml:

[html] view plain copy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD SQL Map Config 3.0//EN"  
  3.         "http://mybatis.org/dtd/mybatis-3-config.dtd">  
  4. <configuration>  
  5.     <settings>  
  6.         <!-- mybatis支持log4j日志 -->  
  7.         <setting name="logImpl" value="LOG4J"/>  
  8.         <!-- 开启缓存 -->  
  9.         <setting name="cacheEnabled" value="true" />  
  10.         <!-- 开启全局懒加载 -->  
  11.         <setting name="lazyLoadingEnabled" value="true" />  
  12.         <!-- 当设置为‘true’的时候,懒加载的对象可能被任何懒属性全部加载。否则,每个属性都按需加载 -->  
  13.         <setting name="aggressiveLazyLoading" value="false" />  
  14.         <!-- 允许单一语句返回多结果集 -->  
  15.         <setting name="multipleResultSetsEnabled" value="true" />  
  16.         <!-- 使用列标签代替列名 -->  
  17.         <setting name="useColumnLabel" value="true" />  
  18.         <!-- 允许 JDBC 支持生成的键 -->  
  19.         <setting name="useGeneratedKeys" value="true" />  
  20.         <!-- 指定 MyBatis 如何自动映射列到字段/ 属性 -->  
  21.         <setting name="autoMappingBehavior" value="FULL" />  
  22.         <!-- 配置默认的执行器 -->  
  23.         <setting name="defaultExecutorType" value="REUSE" />  
  24.         <!-- 设置超时时间 -->  
  25.         <setting name="defaultStatementTimeout" value="25000" />  
  26.     </settings>  
  27.   
  28.     <plugins>  
  29.         <!-- 分页插件 -->  
  30.         <plugin interceptor="com.github.pagehelper.PageHelper"/>  
  31.     </plugins>  
  32. </configuration>  

配置spring-mybatis.xml:

[html] view plain copy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx"  
  4.     xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context"  
  5.     xmlns:aop="http://www.springframework.org/schema/aop" xmlns:mvc="http://www.springframework.org/schema/mvc"  
  6.     xmlns:task="http://www.springframework.org/schema/task"  
  7.     xsi:schemaLocation="http://www.springframework.org/schema/beans  
  8.     http://www.springframework.org/schema/beans/spring-beans-4.2.xsd  
  9.     http://www.springframework.org/schema/tx  
  10.     http://www.springframework.org/schema/tx/spring-tx-4.2.xsd  
  11.     http://www.springframework.org/schema/context  
  12.     http://www.springframework.org/schema/context/spring-context-4.2.xsd  
  13.     http://www.springframework.org/schema/aop  
  14.     http://www.springframework.org/schema/aop/spring-aop-4.2.xsd  
  15.     http://www.springframework.org/schema/cache  
  16.     http://www.springframework.org/schema/cache/spring-cache-4.2.xsd  
  17.     http://www.springframework.org/schema/mvc  
  18.     http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd">  
  19.   
  20.     <mvc:annotation-driven />  
  21.     <!-- 启动组件扫描,排除@Controller组件,该组件由SpringMVC配置文件扫描 -->  
  22.     <context:component-scan base-package="com.xe.demo">  
  23.         <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" />  
  24.     </context:component-scan>  
  25.   
  26.     <!-- mysql数据源 -->  
  27.     <bean id="mysqlDataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close">  
  28.         <property name="driverClassName" value="${mysql.driver}" />  
  29.         <property name="url" value="${mysql.url}" />  
  30.         <property name="username" value="${mysql.username}" />  
  31.         <property name="password" value="${mysql.password}" />  
  32.         <property name="defaultAutoCommit" value="false" />  
  33.         <property name="maxActive" value="20" />  
  34.         <property name="initialSize" value="1" />  
  35.         <property name="maxWait" value="60000" />  
  36.         <property name="minIdle" value="1" />  
  37.         <property name="timeBetweenEvictionRunsMillis" value="60000" />  
  38.         <property name="minEvictableIdleTimeMillis" value="300000" />  
  39.         <property name="validationQuery" value="SELECT 'x'" />  
  40.         <property name="testWhileIdle" value="true" />  
  41.         <property name="testOnBorrow" value="false" />  
  42.         <property name="testOnReturn" value="false" />  
  43.         <property name="poolPreparedStatements" value="true" />  
  44.         <property name="maxPoolPreparedStatementPerConnectionSize" value="50" />  
  45.     </bean>  
  46.   
  47.     <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">  
  48.         <property name="dataSource" ref="mysqlDataSource" />  
  49.         <property name="typeAliasesPackage" value="com.xe.demo.model" />  
  50.         <property name="configLocation" value="classpath:mybatis/mybatis-config.xml" />  
  51.         <property name="mapperLocations" value="classpath:mybatis/*/*.xml"></property>  
  52.     </bean>  
  53.   
  54.     <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">  
  55.         <property name="basePackage" value="com.xe.demo.mapper" />  
  56.         <property name="markerInterface" value="com.xe.demo.mapper.BaseMapper" />  
  57.         <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />  
  58.     </bean>  
  59.   
  60.     <bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">  
  61.         <constructor-arg ref="sqlSessionFactory" />  
  62.     </bean>  
  63.   
  64.     <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">  
  65.         <property name="dataSource" ref="mysqlDataSource" />  
  66.     </bean>  
  67.       
  68.     <!-- 启动对@AspectJ注解的支持 -->  
  69.     <aop:aspectj-autoproxy proxy-target-class="true" />  
  70.   
  71.     <!-- 配置事务切面Bean,指定事务管理器 -->  
  72.     <tx:advice id="txAdvice" transaction-manager="transactionManager">  
  73.         <tx:attributes>  
  74.             <tx:method name="delete*" propagation="REQUIRED" read-only="false" rollback-for="java.lang.Exception" />  
  75.             <tx:method name="update*" propagation="REQUIRED" read-only="false" rollback-for="java.lang.Exception" />  
  76.             <tx:method name="save*" propagation="REQUIRED" read-only="false" rollback-for="java.lang.Exception" />  
  77.             <tx:method name="batch*" propagation="REQUIRED" read-only="false" rollback-for="java.lang.Exception" />  
  78.         </tx:attributes>  
  79.     </tx:advice>  
  80.     <!-- Service aop -->  
  81.     <aop:config>  
  82.         <aop:pointcut id="pc" expression="execution(* com.xe.demo.service.*Service.*(..))" />  
  83.         <aop:advisor pointcut-ref="pc" advice-ref="txAdvice" />  
  84.     </aop:config>  
  85. </beans>  
spring管理配置文件spring.xml:

[html] view plain copy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx"  
  4.     xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context"  
  5.     xmlns:aop="http://www.springframework.org/schema/aop" xmlns:mvc="http://www.springframework.org/schema/mvc"  
  6.     xmlns:task="http://www.springframework.org/schema/task"  
  7.     xsi:schemaLocation="http://www.springframework.org/schema/beans  
  8.     http://www.springframework.org/schema/beans/spring-beans-4.2.xsd  
  9.     http://www.springframework.org/schema/tx  
  10.     http://www.springframework.org/schema/tx/spring-tx-4.2.xsd  
  11.     http://www.springframework.org/schema/context  
  12.     http://www.springframework.org/schema/context/spring-context-4.2.xsd  
  13.     http://www.springframework.org/schema/aop  
  14.     http://www.springframework.org/schema/aop/spring-aop-4.2.xsd  
  15.     http://www.springframework.org/schema/cache  
  16.     http://www.springframework.org/schema/cache/spring-cache-4.2.xsd  
  17.     http://www.springframework.org/schema/mvc  
  18.     http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd">  
  19.   
  20.     <!-- 读取配置文件 -->  
  21.     <context:property-placeholder location="classpath*:config.properties" ignore-unresolvable="false" />  
  22.       
  23.     <import resource="classpath:spring/spring-mybatis.xml"/>  
  24. </beans>  

配置spring-mvc.xml:

[html] view plain copy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"  
  4.     xmlns:context="http://www.springframework.org/schema/context"  
  5.     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd  
  6.         http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd    
  7.         http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">  
  8.   
  9.     <mvc:annotation-driven />  
  10.     <context:component-scan base-package="com.xe.demo.controller" />  
  11.     <!-- 对静态资源文件的访问 -->  
  12.     <mvc:resources mapping="/assets/**" location="/assets/" />  
  13.   
  14.     <!-- 配置SpringMVC的视图解析器 -->  
  15.     <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">  
  16.         <property name="prefix" value="" />  
  17.         <property name="suffix" value=".jsp" />  
  18.     </bean>  
  19.   
  20.     <!-- 上传配置 -->  
  21.     <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">  
  22.         <property name="defaultEncoding" value="UTF-8" />  
  23.         <property name="maxUploadSize" value="-1" />  
  24.         <property name="maxInMemorySize" value="40960" />  
  25.     </bean>  
  26. </beans>  

创建全局配置文件config.properties:

[plain] view plain copy
  1. ########################### 数据源配置 ###########################  
  2. #########本地数据库#########  
  3. #数据源驱动  
  4. mysql.driver=com.mysql.jdbc.Driver  
  5. mysql.username=root  
  6. mysql.password=xie8845233  
  7. mysql.url=jdbc:mysql://localhost/demo?autoReconnect=true&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true  

加载log4j.properties日志文件:

[plain] view plain copy
  1. log4j.rootLogger=DEBUG,CONSOLE,ERR_LOG  
  2. log4j.addivity.org.apache=false  
  3. #打印到控制台  
  4. log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender  
  5. log4j.appender.CONSOLE.Target=System.out  
  6. log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout  
  7. log4j.appender.CONSOLE.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss} -%-4r [%t] %-5p  %x - %m%n  
  8. #输入日志到文件  
  9. log4j.appender.ERR_LOG=org.apache.log4j.DailyRollingFileAppender  
  10. log4j.appender.ERR_LOG.Threshold=ERROR  
  11. log4j.appender.ERR_LOG.File=${catalina.home}/logs/demo  
  12. log4j.appender.ERR_LOG.DatePattern='_'yyyyMMdd'.log'  
  13. log4j.appender.ERR_LOG.Encoding=utf-8  
  14. log4j.appender.ERR_LOG.layout=org.apache.log4j.PatternLayout  
  15. log4j.appender.ERR_LOG.layout.ConversionPattern=[m6]  %d{yyyy-MM-dd HH\:mm\:ss} %5p %c{1}\:%L \: %m%n  
  16.   
  17. log4j.logger.org.apache=ERROR  
  18. log4j.logger.org.mybatis=ERROR  
  19. log4j.logger.org.springframework=ERROR  

配置web.xml:

[html] view plain copy
  1. <!DOCTYPE web-app PUBLIC  
  2.  "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"  
  3.  "http://java.sun.com/dtd/web-app_2_3.dtd" >  
  4.   
  5. <web-app>  
  6.     <display-name>demo-bstable</display-name>  
  7.     <welcome-file-list>  
  8.         <welcome-file>index.jsp</welcome-file>  
  9.     </welcome-file-list>  
  10.   
  11.     <context-param>  
  12.         <param-name>contextConfigLocation</param-name>  
  13.         <param-value>classpath:spring/spring.xml</param-value>  
  14.     </context-param>  
  15.     <context-param>  
  16.         <param-name>log4jConfigLocation</param-name>  
  17.         <param-value>classpath:log4j.properties</param-value>  
  18.     </context-param>  
  19.   
  20.     <listener>  
  21.         <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>  
  22.     </listener>  
  23.     <!-- 启动加载spring容器 -->  
  24.     <listener>  
  25.         <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  
  26.     </listener>  
  27.   
  28.     <servlet>  
  29.         <servlet-name>demoServlet</servlet-name>  
  30.         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
  31.         <init-param>  
  32.             <param-name>contextConfigLocation</param-name>  
  33.             <param-value>classpath:spring/spring-mvc.xml</param-value>  
  34.         </init-param>  
  35.         <load-on-startup>1</load-on-startup>  
  36.     </servlet>  
  37.     <servlet-mapping>  
  38.         <servlet-name>demoServlet</servlet-name>  
  39.         <url-pattern>/</url-pattern>  
  40.     </servlet-mapping>  
  41.     <servlet-mapping>  
  42.         <servlet-name>default</servlet-name>  
  43.         <url-pattern>*.html</url-pattern>  
  44.     </servlet-mapping>  
  45.       
  46.     <!-- 编码过滤器 -->  
  47.     <filter>  
  48.         <filter-name>encodingFilter</filter-name>  
  49.         <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>  
  50.         <init-param>  
  51.             <param-name>encoding</param-name>  
  52.             <param-value>UTF-8</param-value>  
  53.         </init-param>  
  54.         <init-param>  
  55.             <param-name>forceEncoding</param-name>  
  56.             <param-value>true</param-value>  
  57.         </init-param>  
  58.     </filter>  
  59.     <filter-mapping>  
  60.         <filter-name>encodingFilter</filter-name>  
  61.         <url-pattern>/*</url-pattern>  
  62.     </filter-mapping>  
  63. </web-app>  

创建通用mapper接口BaseMapper.java:
[java] view plain copy
  1. package com.xe.demo.mapper;  
  2.   
  3. import java.io.Serializable;  
  4. import java.util.List;  
  5.   
  6. import org.apache.ibatis.annotations.Param;  
  7.   
  8. import com.xe.demo.common.pojo.PageAjax;  
  9.   
  10. /** 
  11.  * Mybatis基础DAO 
  12.  * @author 蔡泽华 
  13.  */  
  14. public interface BaseMapper<T> {  
  15.   
  16.     /** 
  17.      * 通过ID查询 
  18.      * @param id 
  19.      * @return 
  20.      */  
  21.     Object selectById(Serializable id);  
  22.       
  23.     /** 
  24.      * 查询单条记录 
  25.      * @param entity 
  26.      * @return 
  27.      */  
  28.     Object selectOne(@Param("item")Object obj);  
  29.   
  30.     /** 
  31.      * 查询记录集合 
  32.      * @param entity 
  33.      * @return 
  34.      */  
  35.     List<?> selectList(@Param("item")Object obj);  
  36.       
  37.     /** 
  38.      * 分页查询 
  39.      * @param t 
  40.      * @param page 
  41.      * @return 
  42.      */  
  43.     List<T> selectPage(@Param("item")Object obj, @Param("page")PageAjax<T> page);  
  44.   
  45.     /** 
  46.      * 通用的保存方法 
  47.      * @param <T> 
  48.      * @param entity 
  49.      */  
  50.     void save(@Param("item")Object obj);  
  51.       
  52.     /** 
  53.      * 批量保存 
  54.      * @param list 
  55.      */  
  56.     int batchSave(List<?> list);  
  57.   
  58.     /** 
  59.      * 通用的修改方法 
  60.      * @param <T> 
  61.      * @param entity 
  62.      */  
  63.     int update(@Param("item")Object obj);  
  64.       
  65.     /** 
  66.      * 批量更新 
  67.      * @param list 
  68.      * @return 
  69.      */  
  70.     int batchUpdate(List<?> list);  
  71.   
  72.     /** 
  73.      * 删除方法 
  74.      * @param id 
  75.      */  
  76.     int delById(Serializable id);  
  77.       
  78.     /** 
  79.      * 批量删除 
  80.      * @param list 
  81.      * @return 
  82.      */  
  83.     int delList(List<?> list);  
  84.   
  85.     /** 
  86.      * 批量删除方法 
  87.      * @param ids 
  88.      */  
  89.     int delArray(int[] ids);  
  90.   
  91.     /** 
  92.      * 统计查询 
  93.      * @param <T> 
  94.      * @param params 查询参数 
  95.      * @return 总记录条数 
  96.      */  
  97.     int count(Object obj);  
  98.   
  99. }  

创建通用业务层实现BaseService.java:

[java] view plain copy
  1. package com.xe.demo.service;  
  2.   
  3. import java.io.Serializable;  
  4. import java.util.List;  
  5.   
  6. import org.springframework.beans.factory.annotation.Autowired;  
  7.   
  8. import com.xe.demo.common.pojo.PageAjax;  
  9. import com.xe.demo.mapper.BaseMapper;  
  10.   
  11. /** 
  12.  * 通用业务层 
  13.  * @author 蔡泽华 
  14.  */  
  15. public class BaseService<T> {  
  16.       
  17.     @Autowired  
  18.     private BaseMapper<T> baseMapper;  
  19.   
  20.     /** 
  21.      * 通过ID查询 
  22.      * @param id 
  23.      * @return 
  24.      */  
  25.     public Object selectById(Serializable id) {  
  26.         return baseMapper.selectById(id);  
  27.     }  
  28.   
  29.     /** 
  30.      * 查询单条记录 
  31.      * @param entity 
  32.      * @return 
  33.      */  
  34.     public Object selectOne(Object obj) {  
  35.         return baseMapper.selectOne(obj);  
  36.     }  
  37.   
  38.     /** 
  39.      * 查询集合 
  40.      * @param t 
  41.      * @return 
  42.      */  
  43.     public List<?> selectList(Object obj) {  
  44.         return (List<?>) baseMapper.selectList(obj);  
  45.     }  
  46.       
  47.     /** 
  48.      * 分页查询 
  49.      * @param t 
  50.      * @param page 
  51.      * @return 
  52.      */  
  53.     public PageAjax<T> selectPage(Object obj, PageAjax<T> page){  
  54.         List<T> list = baseMapper.selectPage(obj, page);  
  55.         return new PageAjax<T>(list);  
  56.     }  
  57.   
  58.     /** 
  59.      * 通用的保存方法 
  60.      * @param <T> 
  61.      * @param entity 
  62.      */  
  63.     public void save(Object obj) {  
  64.         baseMapper.save(obj);  
  65.     }  
  66.   
  67.     /** 
  68.      * 批量保存 
  69.      * @param list 
  70.      */  
  71.     public void batchSave(List<?> list) {  
  72.         baseMapper.batchSave(list);  
  73.     }  
  74.   
  75.     /** 
  76.      * 通用的修改方法 
  77.      * @param <T> 
  78.      * @param entity 
  79.      */  
  80.     public void update(Object obj) {  
  81.         baseMapper.update(obj);  
  82.     }  
  83.   
  84.     /** 
  85.      * 删除方法 
  86.      * @param id 
  87.      */  
  88.     public int delById(Serializable id) {  
  89.         return baseMapper.delById(id);  
  90.     }  
  91.   
  92.     /** 
  93.      * 批量删除 
  94.      * @param list 
  95.      * @return 
  96.      */  
  97.     public int delList(List<?> list) {  
  98.         return baseMapper.delList(list);  
  99.     }  
  100.   
  101.     /** 
  102.      * 批量删除方法 
  103.      * @param ids 
  104.      */  
  105.     public int delArray(int[] ids) {  
  106.         return baseMapper.delArray(ids);  
  107.     }  
  108.   
  109.     /** 
  110.      * 统计查询 
  111.      * @param <T> 
  112.      * @param params 查询参数 
  113.      * @return 总记录条数 
  114.      */  
  115.     public int count(T t) {  
  116.         return baseMapper.count(t);  
  117.     }  
  118.       
  119.     /** 
  120.      * 批量更新 
  121.      * @param list 
  122.      * @return 
  123.      */  
  124.     public int batchUpdate(List<?> list){  
  125.         return baseMapper.batchUpdate(list);  
  126.     }  
  127.     /*@Autowired 
  128.     private SqlSessionTemplate sqlSessionTemplate; 
  129.      
  130.     *//** 
  131.      * 批量更新 
  132.      * @param str 
  133.      * @param obj 
  134.      * @return 
  135.      * @throws Exception 
  136.      *//* 
  137.     public int batchUpdate(String str, List<?> objs) { 
  138.         SqlSessionFactory sqlSessionFactory = sqlSessionTemplate.getSqlSessionFactory(); 
  139.         // 批量执行器 
  140.         SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH, false); 
  141.         int succ = 0; 
  142.         try { 
  143.             if (objs != null) { 
  144.                 for (int i = 0, size = objs.size(); i < size; i++) { 
  145.                     sqlSession.update(str, objs.get(i)); 
  146.                 } 
  147.                 sqlSession.flushStatements(); 
  148.                 sqlSession.commit(); 
  149.                 sqlSession.clearCache(); 
  150.             } 
  151.         } finally { 
  152.             sqlSession.close(); 
  153.         } 
  154.         return succ; 
  155.     }*/  
  156. }  

创建数据表t_user:
  1. CREATE TABLE `t_user` (  
  2.   `id` int(3) unsigned NOT NULL AUTO_INCREMENT,  
  3.   `username` char(20) NOT NULL,  
  4.   `password` char(32) NOT NULL,  
  5.   `email` varchar(100) DEFAULT NULL,  
  6.   `useable` tinyint(4) NOT NULL DEFAULT '1' COMMENT '是否可用(0禁用,1可用)',  
  7.   `addtime` datetime NOT NULL COMMENT '创建时间',  
  8.   `logintime` datetime DEFAULT NULL COMMENT '登陆时间',  
  9.   `loginip` varchar(15) DEFAULT NULL COMMENT '登陆IP',  
  10.   PRIMARY KEY (`id`),  
  11.   KEY `username` (`username`) USING BTREE  
  12. ) ENGINE=InnoDB AUTO_INCREMENT=39 DEFAULT CHARSET=utf8;  

编写增删查改sql映射文件UserMapper.xml:

[html] view plain copy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"   
  3.     "http://mybatis.org/dtd/mybatis-3-mapper.dtd">  
  4. <mapper namespace="com.xe.demo.mapper.UserMapper">  
  5.     <select id="selectById" resultType="map">  
  6.         SELECT u.id, u.username, u.password, u.email, u.useable, u.addtime, u.logintime, u.loginip FROM t_user u where u.id = #{id}  
  7.     </select>  
  8.       
  9.     <select id="selectOne" resultType="user">  
  10.         SELECT u.id, u.username, u.password, u.email, u.useable, u.addtime, u.logintime, u.loginip FROM t_user u where 1 = 1  
  11.         <if test="null != id"> and u.id = #{id}</if>  
  12.         <if test="null != username"> and u.username = #{username}</if>  
  13.         <if test="null != email"> and u.email = #{email}</if>  
  14.     </select>  
  15.   
  16.     <select id="selectList" resultType="map">  
  17.         SELECT u.id, u.username, u.password, u.email, u.useable, u.addtime, u.logintime, u.loginip FROM t_user u  
  18.         <where>  
  19.             <if test="null != username and '' != username"> and u.username like CONCAT('%', #{username}, '%')</if>  
  20.             <if test="null != email and '' != email"> and u.email like CONCAT('%', #{email}, '%')</if>  
  21.         </where>  
  22.     </select>  
  23.       
  24.     <select id="selectPage" resultType="map">  
  25.         SELECT u.id, u.username, u.password, u.email, u.useable, u.addtime, u.logintime, u.loginip FROM t_user u where 1 = 1  
  26.             <if test="null != obj.username and '' != obj.username"> and u.username like CONCAT('%', #{obj.username}, '%')</if>  
  27.             <if test="null != obj.email and '' != obj.email"> and u.email = #{obj.email}</if>  
  28.         limit #{page.startRow}, #{page.pageSize}  
  29.     </select>  
  30.       
  31.     <insert id="save">  
  32.         insert into t_user(username, password, email, useable, addtime)  
  33.         values(#{username}, #{password}, #{email}, #{useable}, now())  
  34.     </insert>  
  35.       
  36.     <update id="update">  
  37.         update t_user set password = #{password}, email = #{email}, useable = #{useable} where id = #{id}  
  38.     </update>  
  39.   
  40.     <update id="batchSave">  
  41.         insert into t_user(username, password, email, useable, addtime) values  
  42.         <foreach collection="list" item="item" index="index" separator=",">  
  43.             (#{item.username}, #{item.password}, #{item.email}, #{item.useable}, now())  
  44.         </foreach>  
  45.     </update>  
  46.   
  47.     <update id="batchUpdate">  
  48.         <foreach collection="list" item="item" index="index" open="" close="" separator=";">  
  49.             update t_user set password = #{item.password}, email = #{item.email}, useable = #{item.useable} where id = #{item.id}  
  50.         </foreach>  
  51.     </update>  
  52.       
  53.     <delete id="delArray">  
  54.         delete from t_user where id in  
  55.         <foreach collection="array" item="item" open="(" separator="," close=")">  
  56.             #{item}  
  57.         </foreach>  
  58.     </delete>  
  59.       
  60.     <delete id="delList">  
  61.         delete from t_user where id in  
  62.         <foreach collection="list" item="item" open="(" separator="," close=")">  
  63.             #{item}  
  64.         </foreach>  
  65.     </delete>  
  66. </mapper>  
创建UserService继承BaseService.java;

创建UserController.java实现功能:

[java] view plain copy
  1. package com.xe.demo.controller;  
  2.   
  3. import java.util.ArrayList;  
  4. import java.util.Arrays;  
  5. import java.util.HashMap;  
  6. import java.util.List;  
  7. import java.util.Map;  
  8.   
  9. import org.springframework.beans.factory.annotation.Autowired;  
  10. import org.springframework.stereotype.Controller;  
  11. import org.springframework.web.bind.annotation.RequestMapping;  
  12. import org.springframework.web.bind.annotation.ResponseBody;  
  13.   
  14. import com.xe.demo.common.pojo.AjaxResult;  
  15. import com.xe.demo.common.pojo.PageAjax;  
  16. import com.xe.demo.model.User;  
  17. import com.xe.demo.service.UserService;  
  18.   
  19. @Controller  
  20. public class UserController {  
  21.   
  22.     @Autowired  
  23.     private UserService userService;  
  24.       
  25.     @ResponseBody  
  26.     @RequestMapping("/queryById")  
  27.     public AjaxResult queryById(int id){  
  28. //      User user = userService.selectById(id);  
  29.         Object user = userService.selectById(id);  
  30.         return new AjaxResult(user);  
  31.     }  
  32.       
  33.     @ResponseBody  
  34.     @RequestMapping("/queryOne")  
  35.     public AjaxResult queryOne(User user){  
  36.         Object obj = userService.selectOne(user);  
  37.         return new AjaxResult(obj);  
  38.     }  
  39.       
  40.     @ResponseBody  
  41.     @RequestMapping("/queryList")  
  42.     public AjaxResult queryList(User user){  
  43.         List<?> list = userService.selectList(user);  
  44.         return new AjaxResult(list);  
  45.     }  
  46.       
  47.     @ResponseBody  
  48.     @RequestMapping("/queryPage")  
  49.     public PageAjax<User> queryPage(User user, PageAjax<User> page){  
  50.         return userService.selectPage(user, page);  
  51.     }  
  52.   
  53.     @ResponseBody  
  54.     @RequestMapping("/save")  
  55.     public AjaxResult save(User user){  
  56.         //保存map测试  
  57.         Map<String, Object> map = new HashMap<String, Object>();  
  58.         map.put("username", user.getUsername());  
  59.         map.put("email", user.getEmail());  
  60.         map.put("useable", user.getUseable());  
  61.         map.put("password", user.getPassword());  
  62.         userService.save(map);  
  63.         return new AjaxResult();  
  64.     }  
  65.       
  66.     @ResponseBody  
  67.     @RequestMapping("/update")  
  68.     public AjaxResult update(User user){  
  69.         //更新map测试  
  70. //      Map<String, Object> map = new HashMap<String, Object>();  
  71. //      map.put("id", user.getId());  
  72. //      map.put("email", user.getEmail());  
  73. //      map.put("useable", user.getUseable());  
  74. //      map.put("password", user.getPassword());  
  75.         userService.update(user);  
  76.         return new AjaxResult();  
  77.     }  
  78.       
  79.     @ResponseBody  
  80.     @RequestMapping("/batchSave")  
  81.     public AjaxResult batchSave(){  
  82. //      List<User> list = new ArrayList<User>();  
  83. //      User user = null;  
  84. //      for(int i = 0; i < 10; i ++){  
  85. //          user = new User();  
  86. //          String username = "ourte" + i;  
  87. //          user.setUsername(username);  
  88. //          user.setPassword("123456");  
  89. //          user.setUseable(1);  
  90. //          user.setEmail(username + "@163.com");  
  91. //          list.add(user);  
  92. //      }  
  93.   
  94.         //map批量保存  
  95.         List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();  
  96.         Map<String, Object> map = null;  
  97.         for(int i = 0; i < 10; i ++){  
  98.             map = new HashMap<String, Object>();  
  99.             String username = "csefgg" + i;  
  100.             map.put("username", username);  
  101.             map.put("email", username + "@163.com");  
  102.             map.put("useable", 1);  
  103.             map.put("password", "658264");  
  104.             list.add(map);  
  105.         }  
  106.         userService.batchSave(list);  
  107.         return new AjaxResult();  
  108.     }  
  109.       
  110.     @ResponseBody  
  111.     @RequestMapping("/batchUpdate")  
  112.     public AjaxResult batchUpdate(){  
  113.         Integer[] ids = new Integer[]{30, 31, 32};  
  114.   
  115. //      List<User> list = new ArrayList<User>();  
  116. //      User user = null;  
  117. //      for(int id: ids){  
  118. //          user = new User();  
  119. //          user.setId(id);  
  120. //          user.setPassword("654321");  
  121. //          user.setUseable(0);  
  122. //          user.setEmail("csew@163.com");  
  123. //          list.add(user);  
  124. //      }  
  125.           
  126.         //map批量更新  
  127.         List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();  
  128.         Map<String, Object> map = null;  
  129.         for(int id: ids){  
  130.             map = new HashMap<String, Object>();  
  131.             map.put("id", id);  
  132.             map.put("email", "dfdwfg@163.com");  
  133.             map.put("useable", 1);  
  134.             map.put("password", "565656");  
  135.             list.add(map);  
  136.         }  
  137.         userService.batchUpdate(list);  
  138.         return new AjaxResult();  
  139.     }  
  140.   
  141.     @ResponseBody  
  142.     @RequestMapping("/delList")  
  143.     public AjaxResult delList(Integer[] ids){  
  144.         List<Integer> list = Arrays.asList(ids);  
  145.         userService.delList(list);  
  146.         return new AjaxResult();  
  147.     }  
  148.       
  149.     @ResponseBody  
  150.     @RequestMapping("/delArray")  
  151.     public AjaxResult delArray(int[] ids){  
  152.         userService.delArray(ids);  
  153.         return new AjaxResult();  
  154.     }  
  155.   
  156. }  

部署启动项目,使用http请求模拟器请求接口测试:

1.通过ID查询:

2.通过条件查询返回实体集合


3.通过条件查询返回Map集合


4.多条件分页查询实体


5.多条件分页查询map


6.批量保存数据


7.批量更新数据


8.评论删除(mybatis接收List<Integer>参数)


9.批量删除(mybatis接收int[]参数)


10.添加数据


11.更新数据



项目源码下载地址:整合maven+spring+springmvc+mybatis实现ssm通用增删查改API(没BUG版本)

(Spring+SpringMVC+MyBatis)SSM三大框架整合教程 目录 一、基本概念 1、Spring 2、SpringMVC 3、MyBatis 二、开发环境搭建 三、Maven Web项目创建 四、SSM整合 1、Maven引入需要的JAR包 2、Spring与MyBatis的整合 3、整合SpringMVC 使用SSM(Spring、SpringMVC和Mybatis)已经有三个多月了,项目在技术上已经没有什么难点了,基于现有的技术就可以实现想要的功能,当然肯定有很多可以改进的地... 阅读详情

相关推荐

SSM框架——(SpringMVC + Spring + MyBatis + Maven多模块)整合

为初学者而著! Java基础是初学者的起点,是帮助你从小白入门到精通必学基础课程! B站最新录制Java300集>>> 适合准备入行开发的零基础员学习Java,基于最新JDK13、IDEA平台讲解的,视频中穿插多个实战项目。每一个知识点都讲解的通俗易懂,由浅入深。不仅适用于零基础的初学者,有经验的程序员也可做巩固学习。 配套学习:​2022年Java300集最新录制课程上线了>>>​ SpringMVC + Spring + MyBatis + Ma...

编程领域的博客 1390

eclipse下springmvc+spring+maven+mybatis+mysql的搭建,并实现增删改查

eclipse下SpringMVC+Maven+Mybatis+MySQL项目搭建 这篇文章主要讲解在eclipse环境下SpringMVC+Maven+Mybatis+MySQL的项目搭建过程。 创建Maven工程。   右击-->New->Other   点击->Manven Porject   点击->勾选快速框架   输入项目名,包(Packa...

一路向北 2035

基于Maven+Spring+SpringMVC+MyBatis的SSM通用CRUD API开发实战

htmltable {th, td {th {pre {简介:SSM(Spring、SpringMVC、MyBatis)是Java Web开发的经典框架组合,结合Maven进行项目依赖与构建管理,可高效搭建结构清晰、易于维护的Web应用。本项目通过整合Maven、Spring的IoC/AOP、SpringMVC的请求分发机制以及MyBatis的持久层操作,实现了一套通用的增删查改API基础框架。

weixin_34413326的博客 856

SSM基本整合 mybatis + springmvc + spring完成基本的增删改查

本文是基于spring,spring mvc,mybatis框架整合,适合已经学习完ssm框架的java开发人员

qq_48655035的博客 460

基于Maven的SSM框架搭建实战(Spring+SpringMVC+MyBatis)

简介:SSM框架由Spring、SpringMVC和MyBatis三大开源框架组成,是Java企业级开发中的主流技术组合。本文详细介绍如何使用Maven构建一个“亲测可用”的SSM项目Demo,涵盖从环境配置到功能测试的完整流程。通过该实践,开发者可掌握Spring的依赖注入与AOP管理、SpringMVC的请求处理机制以及MyBatis的持久化操作,最终实现Web层、业务层与数据访问层的整合,完成基础CRUD功能并具备扩展能力。

weixin_35750747的博客 1166

SSM框架整合实战项目(Spring+SpringMVC+MyBatis)基于Maven构建

SSM(Spring+SpringMVC+MyBatis)作为Java Web开发的经典轻量级框架组合,凭借其良好的分层结构和松耦合设计,广泛应用于企业级应用开发。Spring 负责全局的Bean管理与依赖注入,实现业务逻辑的集中管控;SpringMVC 作为前端控制器,接收并分发HTTP请求,实现表现层的清晰解耦;MyBatis 则通过SQL映射机制完成持久层操作,兼顾灵活性与可维护性。在Maven项目中,三者通过Spring容器进行无缝整合:SpringMVC的加载Web层上下文,而。

weixin_29840475的博客 893

javaweb+spring+springmvc+mybatis完成数据信息的增删改查基本功能

利用javaweb、spring、springmvc以及mybatis完成简单的增删改查功能

BeJav 3233

Matlab路径文件pathdef.m可能为只读文件修改方法

找到MATLAB目录下的bin这个文件夹,直接改这个文件夹的权限(之前试过改pathdef.m的权限,不好用)如果到这里重新导入还是不行,从官网重新下载需要的安装包,可能是你的安装包出了问题。(Win11系统,matlab版本为2022b)编辑——添加——在输入对象名称来选择中输入everyone。重启matlab,以管理员身份运行。并修改其他已有的权限,都给它。

yqc1123的博客 1万+

用户增删改查:在eclipse创建Spring+SpringMVC+Mybatis的项目

1. 新建maven项目 点击“File”->“New”->”Other”->输入“Maven”,新建一个“Maven Project”,如下图所示: 请勾选“Create a simple project”,创建一个简单的项目。 填写好包名、项目名,选择打包类型为:war,如下图所示 项目创建好后可能会发现有错误,选择项目,右键“属性properties”->”层面Project Facets”-

qazwyc的博客 1万+

秦时明月6.2魔改版_从零到一部署指南_含安卓客户端配置与GM后台直通

本文提供《秦时明月》6.2魔改版从零开始的完整部署指南。详细讲解CentOS服务器环境准备、服务端文件部署与安装、关键端口开放及进程验证。重点涵盖安卓客户端APK的IP修改与重签名方法,并介绍了GM后台工具的访问与使用,助你快速搭建并管理专属游戏服务器。

garlic的博客 310

HEVC/VVC中R-Lambda码率控制算法原理

文章目录1. 比特分配1.1 GOP级比特分配1.2 帧级比特分配1.3 LCU级比特分配2. 码率控制2.1 λ的计算和更新2.2 参数QP的确定 VVC中码率控制算法沿用了HEVC中经典的R-λ码率控制模型,R-λ由中科大的李斌博士提出(详情参考JCTVC-K0103)。R-λ模型的基础为视频编码中 R(比特 bpp)和 D(失真 MSE)之间的双曲线模型,即 D(R)=CR−KD(R) = ...

Aidoneus_y 6136

mvc mysql_Spring MVC实现mysql数据库增删改查完整实例

最近刚学了springmvc框架,感觉确实方便了不少,减少了大量的冗余代码。就自己做了个小项目练练手,这是个初级的springmvc应用的项目,没有用到mybatis,项目功能还算完善,实现了基本的增删改查的功能。项目环境:-系统:win10-开发环境:eclipseOxygenReleaseCandidate3(4.7)-jdk版本:java1.8(121)-mysql:5.7-spring:4...

weixin_33608494的博客 1069

Keil5实战:如何高效导出变量数据并实现可视化分析

本文详细介绍了在Keil5开发环境中,如何利用调试脚本高效导出程序运行时变量数据的方法。通过编写脚本自动捕获数据并保存为文件,再结合Excel或Python进行可视化分析,为嵌入式调试与算法优化提供了数据支撑,显著提升开发效率。

silver的专栏 1105

SSM框架——详细整合教程(Spring+SpringMVC+MyBatis)

使用SSM(Spring、SpringMVC和Mybatis)已经有三个多月了,项目在技术上已经没有什么难点了,基于现有的技术就可以实现想要的功能,当然肯定有很多可以改进的地方。之前没有记录SSM整合的过程,这次刚刚好基于自己的一个小项目重新搭建了一次,而且比项目搭建的要更好一些。以前解决问题的过程和方法并没有及时记录,以后在自己的小项目中遇到我再整理分享一下。这次,先说说三大框架整合过程。个人认

在路上 64万+

基于YOLOv5/v8/v10的垃圾分类识别系统:设计实现与性能优化(附代码+数据集)

做完这个毕设,你已经掌握了从数据准备、模型训练到界面开发的全流程。把模型部署到树莓派上,做个真正的“智能垃圾桶”硬件装置;加入语音提示功能,检测到垃圾后自动语音播报类别;试试融合多个YOLO模型的优势,让分类精度再上一个台阶。按照这个教程一步步做,你的毕设不仅能顺利完成,还能做出很多亮点。要是过程中遇到啥问题,别慌,慢慢琢磨或者咱们一起聊聊,肯定能把这个毕设做成让你满意的作品。

know_F0727的博客 463

带洞多边形如何分成凸多边形集合,对多边形进行凸分解?

摘要: 凸分解是计算几何中的经典问题,分为三角化和凸分解两种方法。三角化将带洞多边形转换为简单多边形并分割为三角形,常用算法包括耳剪法、单调多边形三角化等。凸分解则生成更少但更大的凸多边形,常用Hertel-Mehlhorn算法或基于凹点的递归切割。实际应用中建议使用CGAL、Poly2Tri等成熟库处理。三角化适合图形渲染,凸分解更适用于物理引擎和路径规划。关键步骤包括数据校验、选择合适的算法及后处理优化。

插件开发 354

使用 IDEA Maven 整合 SSM 框架(Spring+SpringMVC+Mybatis)

博主声明: 转载请在开头附加本文链接及作者信息,并标记为转载。本文由博主威威喵原创,请多支持与指教。 本文首发于此 博主:威威喵|博客主页:https://blog.youkuaiyun.com/smile_running 1、前言 由于博主之前写的这篇文章太水了,其实也是用处不大,所以我决定把这篇文章内容改了。改的内容是 ssm 框架的基本搭建与使用,由于博主毕业设计中需...

你若盛开,蜜蜂自来 1万+

YOLOv11 改进 - 注意力机制 | Deformable-LKA 可变形大核注意力:自适应采样网格优化特征捕捉,提升不规则目标感知

本文介绍了可变形大核注意力(D-LKA Attention)及其在YOLOv11中的结合。D-LKA Attention是一种简化的注意力机制,采用大卷积核利用体积上下文信息,通过可变形卷积灵活调整采样网格,适应多样数据模式。它有2D和3D版本,3D版本在跨深度数据理解上表现出色,共同构成了D-LKA Net架构。我们将D-LKA Attention集成进YOLOv11,在模型的检测头部分引入deformable_LKA_Attention模块。实验表明,该方法在分割任务上表现优于现有方法,提升了模型的检测

魔改工程师的博客 1170

SSM三大框架整合详细教程(SPRING+SPRINGMVC+MYBATIS)

经典非影印Spring书籍分享:https://blog.youkuaiyun.com/kenkao/article/details/49902495 SSM三大框架整合详细教程(SPRING+SPRINGMVC+MYBATIS) 使用 SSM ( Spring 、 SpringMVC 和 Mybatis )已经有三个多月了,项目在技术上已经没有什么难点了,基于现有的技术就可以实现想要的功能,当然肯定有很...

优秀技术文章收录 2156

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

SSM整合_MQ(eclipse版本) 超详细Spring+SpringMVC+Mybatis整合

SSM整合_MQ(eclipse版本) 超详细Spring+SpringMVC+Mybatis整合 0创建项目 1)、创建Maven的简单web工程 2)、补全WEB-INF目录和web.xml文件: <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSc...

weixin_42588676的博客 2094

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Java框架SSM整合————Spring5框架+SpringMVC框架+MyBatis框架

最近用Spring5+SpringMVC+MyBatis框架整合做项目,以下总结以下学习和使用过程中的心得和理解! 1, 基本概念 Spring5框架 Spring 是一个开源框架,是为了解决企业应用程序开发复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。 Spring使用基本的JavaBean来完成以前只可能由EJ...

以梦为马,不负韶华 3275

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Maven+SSM(SpringMVC+Spring+Mybatis) 框架整合

Maven+SSM(SpringMVC+Spring+Mybatis) 框架整合

hfbin的博客 2890

SSM框架——详细整合教程(Spring+SpringMVC+MyBatis)

SSM框架——详细整合教程基本概念SpringSpringMVCMyBatis环境搭建SSM整合项目创建引入项目依赖的jar包配置SpringMVC配置日志使用Tomcat测试Spring与MyBatis的整合建立数据库配置文件db.properties 基本概念 Spring Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。 SpringMVC Spring MVC ...

JustinNeil的博客 1382
上一篇: spring Boot学习日志(二)JPA操作Mysql
下一篇: 用maven构建ssm(spring+springmvc+mybatis)框架
@清风明月情@
博客等级 码龄10年 52粉丝 39原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值