zoukankan      html  css  js  c++  java
  • spring+mybatic整合开发的基本步骤

    1.根据需求划分模块(Dao、Service、Controller):

     2.通过maven引入相关的jar包依赖:

    service模块的pom:

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <parent>
            <artifactId>spring_emp</artifactId>
            <groupId>com.yzy</groupId>
            <version>1.0-SNAPSHOT</version>
    
        </parent>
        <modelVersion>4.0.0</modelVersion>
        <packaging>jar</packaging>
        <artifactId>spring_emp_service</artifactId>
        <dependencies>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-beans</artifactId>
                <version>5.2.5.RELEASE</version>
            </dependency>
            <!-- https://mvnrepository.com/artifact/org.springframework/spring-core -->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-core</artifactId>
                <version>5.2.5.RELEASE</version>
            </dependency>
            <!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context</artifactId>
                <version>5.2.5.RELEASE</version>
            </dependency>
    
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-jdbc</artifactId>
                <version>5.2.5.RELEASE</version>
            </dependency>
    
            <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>8.0.19</version>
            </dependency>
            <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis</artifactId>
                <version>3.5.4</version>
            </dependency>
            <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis-spring</artifactId>
                <version>2.0.4</version>
            </dependency>
            <!-- https://mvnrepository.com/artifact/org.springframework/spring-aop -->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-aop</artifactId>
                <version>5.2.5.RELEASE</version>
            </dependency>
            <!-- https://mvnrepository.com/artifact/org.aspectj/aspectjweaver -->
            <dependency>
                <groupId>org.aspectj</groupId>
                <artifactId>aspectjweaver</artifactId>
                <version>1.9.5</version>
            </dependency>
            <!-- https://mvnrepository.com/artifact/org.springframework/spring-tx -->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-tx</artifactId>
                <version>5.2.5.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>aopalliance</groupId>
                <artifactId>aopalliance</artifactId>
                <version>1.0</version>
            </dependency>
        </dependencies>
    </project>

    web模块的pom文件:

    <?xml version="1.0" encoding="UTF-8"?>
    
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
      <parent>
        <artifactId>spring_emp</artifactId>
        <groupId>com.yzy</groupId>
        <version>1.0-SNAPSHOT</version>
      </parent>
      <modelVersion>4.0.0</modelVersion>
    
      <artifactId>spring_emp_web</artifactId>
      <packaging>war</packaging>
    
      <name>spring_emp_web Maven Webapp</name>
      <!-- FIXME change it to the project's website -->
      <url>http://www.example.com</url>
    
      <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.7</maven.compiler.source>
        <maven.compiler.target>1.7</maven.compiler.target>
      </properties>
    
      <dependencies>
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>4.11</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/javax.servlet/jstl -->
        <dependency>
          <groupId>javax.servlet</groupId>
          <artifactId>jstl</artifactId>
          <version>1.2</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
        <dependency>
          <groupId>javax.servlet</groupId>
          <artifactId>javax.servlet-api</artifactId>
          <version>4.0.1</version>
        </dependency>
        <dependency>
          <artifactId>spring_emp_service</artifactId>
          <groupId>com.yzy</groupId>
          <version>1.0-SNAPSHOT</version>
        </dependency>
      </dependencies>
    
      <build>
        <finalName>spring_emp_web</finalName>
        <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
          <plugins>
            <plugin>
              <artifactId>maven-clean-plugin</artifactId>
              <version>3.1.0</version>
            </plugin>
            <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
            <plugin>
              <artifactId>maven-resources-plugin</artifactId>
              <version>3.0.2</version>
            </plugin>
            <plugin>
              <artifactId>maven-compiler-plugin</artifactId>
              <version>3.8.0</version>
            </plugin>
            <plugin>
              <artifactId>maven-surefire-plugin</artifactId>
              <version>2.22.1</version>
            </plugin>
            <plugin>
              <artifactId>maven-war-plugin</artifactId>
              <version>3.2.2</version>
            </plugin>
            <plugin>
              <artifactId>maven-install-plugin</artifactId>
              <version>2.5.2</version>
            </plugin>
            <plugin>
              <artifactId>maven-deploy-plugin</artifactId>
              <version>2.8.2</version>
            </plugin>
          </plugins>
        </pluginManagement>
      </build>
    </project>

    3.编写spring配置文件:

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx"
           xmlns:aop="http://www.springframework.org/schema/aop"
           xmlns:context="http://www.springframework.org/schema/context"
           xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/aop https://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
        <!-- Spring整合Mybatis -->
    <!--   配置数据源-->
        <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
            <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
            <property name="url" value="jdbc:mysql://localhost:3306/emp?serverTimezone=UTC"></property>
            <property name="username" value="root"></property>
            <property name="password" value="root"></property>
        </bean>
        <!-- 配置会话工厂 -->
        <bean name="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
            <property name="dataSource" ref="dataSource"></property>
            <property name="typeAliasesPackage" value="com.yzy.entity"></property>
        </bean>
        <!-- 配置mybatis的mapper配置文件存放的地方 -->
        <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
            <property name="basePackage" value="com.yzy.Dao"></property>
            <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
        </bean>
        <!-- 配置事务管理器 -->
        <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
            <property name="dataSource" ref="dataSource"></property>
        </bean>
        <!-- 配置advice,管理事务的行为 -->
        <tx:advice id="txAdvice" transaction-manager="transactionManager">
            <tx:attributes>
                <tx:method name="search*" read-only="true"/>
                <tx:method name="find*" read-only="true"/>
                <tx:method name="get*" read-only="true"/>
                <tx:method name="*" propagation="REQUIRED"/>
            </tx:attributes>
        </tx:advice>
        <!-- 配置切面,以及advice使用的对象 -->
        <aop:config>
            <aop:pointcut id="txPointCut" expression="execution(* com.yzy.serice.*.*(..))"/>
            <aop:advisor advice-ref="txAdvice" pointcut-ref="txPointCut"/>
        </aop:config>
        <!-- 开启spring的注解ioc包扫描 -->
        <context:component-scan base-package="com.yzy"></context:component-scan>
        <!-- 自动代理,当代理的对象没有继承接口是,使用cglib代理,否则默认jdk自动代理(需继承接口) -->
        <aop:aspectj-autoproxy proxy-target-class="true"/>
    </beans>

    4.创建实体类:

     5.编写dao接口以及mapper配置文件:

    package com.yzy.Dao;
    import com.yzy.entity.department; import org.springframework.stereotype.Repository; import java.util.List; @Repository("departmentDao") public interface departmentDao { void add(department dep); void update(department dep); void delete(Integer id); List<department> selectAll(); department selectById(Integer id); }

    mapper配置文件:

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE mapper
            PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
            "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    <!--配置命名空间,需和dao接口一致-->
    <mapper namespace="com.yzy.Dao.departmentDao">
    <!--    配置结果集,将数据库的表与实体类对应-->
        <resultMap id="resultMap" type="department">
            <id property="id" column="id" javaType="Integer"></id>
            <result property="name" column="name" javaType="String"></result>
            <result property="address" column="address" javaType="String"></result>
        </resultMap>
    <!--    配置sql语句,id需与dao接口的方法名一一对应-->
        <insert id="add" useGeneratedKeys="true" parameterType="department">
            insert department(name,address) value(#{name},#{address})
        </insert>
        <update id="update" parameterType="department">
            update department set name=#{name},address=#{address} where id=#{id}
        </update>
        <delete id="delete" parameterType="Integer">
            delete from department where id =#{id}
        </delete>
        <select id="selectAll" resultMap="resultMap">
            select * from department
        </select>
        <select id="selectById" parameterType="Integer" resultMap="resultMap">
            select * from department where id =#{id}
        </select>
    </mapper>

    6.编写service:

    package com.yzy.serice.impl;
    
    
    import com.yzy.Dao.departmentDao;
    import com.yzy.entity.department;
    import com.yzy.serice.DepartmentService;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    
    import javax.annotation.Resource;
    import java.util.List;
    @Service("departmentService")
    public class departmentServiceImpl implements DepartmentService{
    
       @Autowired
        private departmentDao dao;
    
    
        public void add(department dep) {
            dao.add(dep);
        }
    
        public void edit(department dep) {
            dao.update(dep);
        }
    
        public void remove(Integer id) {
            dao.delete(id);
        }
    
        public department get(Integer id) {
            return dao.selectById(id);
        }
    
        public List<department> getAll() {
            return dao.selectAll();
        }
    }

    7.编写controller:

    package com.yzy.controller;
    
    import com.yzy.entity.department;
    import com.yzy.serice.DepartmentService;
    import com.yzy.serice.impl.departmentServiceImpl;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Controller;
    
    import javax.annotation.Resource;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    import java.util.List;
    
    @Controller("departmentController")
    public class departmentController {
        @Autowired
        private DepartmentService departmentService;
        public void list(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            List<department> all = departmentService.getAll();
            request.setAttribute("LIST",all);
            request.getRequestDispatcher("/department_list.jsp").forward(request,response);
        }
    }

    8.编写一个servlet来解析url,将对应的请求交给相应的controller:

    package com.yzy.global;
    
    import com.yzy.controller.departmentController;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    import java.lang.reflect.InvocationTargetException;
    import java.lang.reflect.Method;
    
    
    public class dispatcherServlet extends HttpServlet {
        private ApplicationContext context;
    
        @Override
        public void init() throws ServletException {
            super.init();
            context=new ClassPathXmlApplicationContext("application.xml");
        }
    
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            doGet(request,response);
        }
    
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            String path = request.getServletPath().substring(1);
            int index=path.indexOf("/");
            String beanName=null;
            String methodName=null;
            if(index!=-1){
                beanName=path.substring(0,index)+"Controller";
                methodName=path.substring(index+1,path.indexOf(".do"));
            }else{
                beanName="selfController";
                methodName=path.substring(0,path.indexOf(".do"));
            }
             Object obj = context.getBean(beanName);
            //通过反射来调用相应的controller的方法
            try {
                Method method = obj.getClass().getMethod(methodName, HttpServletRequest.class, HttpServletResponse.class);
                method.invoke(obj,request,response);
            } catch (NoSuchMethodException e) {
                e.printStackTrace();
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            } catch (InvocationTargetException e) {
                e.printStackTrace();
            }
        }
    }
    <!-- Spring整合Mybatis -->
  • 相关阅读:
    Nutch的配置(使用MySQL作为数据存储)
    MySQL简单实现多字段模糊查询
    nutch的一些基础整理
    Java分布式爬虫Nutch教程——导入Nutch工程,执行完整爬取
    Nutch2 WebPage写入数据库的过程分析
    Nutch2 WebPage 字段解释
    nutch如何修改regex-urlfilter.txt爬取符合条件的链接
    Run Nutch In Eclipse on Linux and Windows nutch version 0.9
    Linux Mint 17.1 安装全配置
    Ubuntu(Linux Mint):sudo apt-get upgrade升级失败
  • 原文地址:https://www.cnblogs.com/shouyaya/p/12717240.html
Copyright © 2011-2022 走看看