zoukankan      html  css  js  c++  java
  • 2.spring+mybatis整合步骤

    2.spring+mybatis整合步骤

    1.创建spring_mybatis_mysql这么一个javaweb或java工程

    2.导入spring、mybatis、mysql、和mybatis提供的与spring整合的插件包

      mysql的jar:
    mysql-connector-java-5.1.43-bin.jar
    c3po连接池的jar:
    c3p0-0.9.5.2.jar
    mybatis的jar:
    asm-3.3.1.jar(字节码)
    cglib-2.2.2.jar(代理)
    commons-logging-1.1.1.jar(日志)
    log4j-1.2.17.jar(log4日志,可不要)
    mybatis-3.2.7.jar(核心包)
    mybatis与spring整合的jar:
    mybatis-spring-1.1.1.jar
    spring的ioc模块的jar:(asm包在3.2.2中已经整合到core中)
    spring-beans-4.0.4.RELEASE.jar
    spring-context-4.0.4.RELEASE.jar
    spring-core-4.0.4.RELEASE.jar
    spring-expression-4.0.4.RELEASE.jar
    commons-logging-1.2.jar
    spring的aop模块的jar:
    aopalliance.jar(spring4中未见)
    spring-aspects-4.0.4.RELEASE.jar
    cglib-2.2.2.jar(未见)
    spring-aop-4.0.4.RELEASE.jar
    spring的transavion(事物模块)的jar:
    spring-jdbc-4.0.4.RELEASE.jar
    spring-orm-4.0.4.RELEASE.jar
    org.springframework.transaction-4.0.4.RELEASE.jar(tx)
    spring的web的jar(web工程中使用):
    spring-web-4.0.4.RELEASE.jar
    spring-webmvc-4.0.4.RELEASE.jar

    2.1maven(pom.xml)的依赖配置

    <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/maven-v4_0_0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <groupId>spring_mybatis_mysql</groupId>
        <artifactId>spring_mybatis_mysql</artifactId>
        <packaging>war</packaging>
        <version>1.0-SNAPSHOT</version>
        <name>spring_mybatis_mysql Maven Webapp</name>
        <url>http://maven.apache.org</url>
        <dependencies>
            <!--junit包-->
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>3.8.1</version>
                <scope>test</scope>
            </dependency>
            <!--mysql包-->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.43</version>
            </dependency>
            <!--c3po连接池-->
            <dependency>
                <groupId>com.mchange</groupId>
                <artifactId>c3p0</artifactId>
                <version>0.9.5.2</version>
            </dependency>
            <!--mybatis的包-->
            <dependency>
                <groupId>asm</groupId>
                <artifactId>asm</artifactId>
                <version>3.3.1</version>
            </dependency>
            <dependency>
                <groupId>cglib</groupId>
                <artifactId>cglib</artifactId>
                <version>2.2.2</version>
            </dependency>
            <dependency>
                <groupId>commons-logging</groupId>
                <artifactId>commons-logging</artifactId>
                <version>1.1.1</version>
            </dependency>
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis</artifactId>
                <version>3.2.7</version>
            </dependency>
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis-spring</artifactId>
                <version>1.1.1</version>
            </dependency>
            <!--spring IOC部分-->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-beans</artifactId>
                <version>4.0.4.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context</artifactId>
                <version>4.0.4.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-core</artifactId>
                <version>4.0.4.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-expression</artifactId>
                <version>4.0.4.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>aopalliance</groupId>
                <artifactId>aopalliance</artifactId>
                <version>1.0</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-aspects</artifactId>
                <version>4.0.4.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-aop</artifactId>
                <version>4.0.4.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-jdbc</artifactId>
                <version>4.0.4.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-orm</artifactId>
                <version>4.0.4.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-tx</artifactId>
                <version>4.0.4.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>RELEASE</version>
            </dependency>
        </dependencies>
        <build>
            <finalName>spring_mybatis_mysql</finalName>
        </build>
    </project>


    3.创建一个员工表
    emp.sql

    CREATE TABLE emps (
      eid INT (5) PRIMARY KEY ,
      ename VARCHAR (20),
      esal INT (8),
      esex VARCHAR (2)
    );

    4.创建对应的JavaBean

    package nick.entity;
    
    /**
     * Created by Administrator on 2017/8/9.
     */
    public class Emp {
        private Integer eid;
        private String ename;
        private Integer esal;
        private String esex;
    
        public Emp() {
        }
    
        public Emp(Integer eid, String ename, Integer esal, String esex) {
            this.eid = eid;
            this.ename = ename;
            this.esal = esal;
            this.esex = esex;
        }
    
        public Integer getEid() {
            return eid;
        }
    
        public void setEid(Integer eid) {
            this.eid = eid;
        }
    
        public String getEname() {
            return ename;
        }
    
        public void setEname(String ename) {
            this.ename = ename;
        }
    
        public Integer getEsal() {
            return esal;
        }
    
        public void setEsal(Integer esal) {
            this.esal = esal;
        }
    
        public String getEsex() {
            return esex;
        }
    
        public void setEsex(String esex) {
            this.esex = esex;
        }
    }


    5.创建EmpMapper.xml文件

    <?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">
    <!--配置命名空间-->
    <mapper namespace="empNamespace">
    
       <resultMap type="nick.entity.Emp" id="empMap">
    
        <id column="id"  property="eid"/>
        <result column="name"  property="ename"/>
        <result column="sal"  property="esal"/>
        <result column="sex"  property="esex"/>
       </resultMap>
    
        <!--增加员工-->
        <insert id="add" parameterType="nick.entity.Emp" >
            INSERT INTO emps(eid,ename,esal,esex) VALUES (#{eid},#{ename},#{esal},#{esex})
        </insert>
    </mapper>


    6.创建mybatis.xml配置文件

    <?xml version="1.0" encoding="UTF-8" ?>
    
    <!DOCTYPE configuration
            PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
            "http://mybatis.org/dtd/mybatis-3-config.dtd">
    
    <configuration>
        <settings>
            <setting name="useGeneratedKeys" value="false"/>
            <setting name="useColumnLabel" value="true"/>
        </settings>
    
        <!-- 配置映射类xml文件的路径 -->
        <mappers>
            <mapper resource="mapper/EmpMapper.xml"/>
        </mappers>
    
    </configuration>


    7.创建EmpDao.java类

    package nick.dao;
    
    import nick.entity.Emp;
    import org.apache.ibatis.session.SqlSession;
    import org.apache.ibatis.session.SqlSessionFactory;
    
    /**
     * Created by Administrator on 2017/8/9.
     * 持久层Dao
     */
    public class EmpDao {
        private SqlSessionFactory sqlSessionFactory;
    
        public void setSqlSessionFactory(SqlSessionFactory sqlSessionFactory) {
            this.sqlSessionFactory = sqlSessionFactory;
        }
    
        /**
         * 增加员工
         *
         * @param emp
         * @return
         * @throws Exception
         */
        public boolean add(Emp emp) throws Exception {
            SqlSession sqlSession = sqlSessionFactory.openSession();
            sqlSession.insert("empNamespace.add",emp);
            sqlSession.close();
            return true;
        }
    }


    8.配置spring.xml(重点)

    <?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:aop="http://www.springframework.org/schema/aop"
           xmlns:tx="http://www.springframework.org/schema/tx"
           xmlns:context="http://www.springframework.org/schema/context"
           xsi:schemaLocation="
               http://www.springframework.org/schema/beans
               http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
               http://www.springframework.org/schema/tx
               http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
               http://www.springframework.org/schema/aop
               http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
               http://www.springframework.org/schema/context
               http://www.springframework.org/schema/context/spring-context-4.0.xsd">
    
        <!--1.配置c3p0连接池,目的:管理数据库连接-->
        <bean id="comboPooledDataSourceID" class="com.mchange.v2.c3p0.ComboPooledDataSource">
            <property name="driverClass" value="com.mysql.jdbc.Driver"></property>
            <property name="jdbcUrl"
                      value="jdbc:mysql://127.0.0.1:3306/mybatis?characterEncoding=UTF-8&amp;autoReconnect=true"></property>
            <property name="user" value="root"></property>
            <property name="password" value="123456"></property>
        </bean>
    
        <!--2.配置org.mybatis.spring.SqlSessionFactoryBean,目的:加载mybatis配置文件和映射文件,即替代原mybatis工具类的作用-->
        <bean id="sqlSessionFactoryBeanID" class="org.mybatis.spring.SqlSessionFactoryBean">
            <property name="configLocation" value="classpath:mybatis.xml"></property>
            <!--因为数据库连接已经由c3p0管理,所以mybatis.xml数据连接需要依赖c3p0的数据库连接配置-->
            <property name="dataSource" ref="comboPooledDataSourceID"></property>
        </bean>
    
        <!--3.配置mybatis事物管理器,即因为mybatis底层用的是jdbc的事物管理器,所以在这里依然配置jdbc事物管理器:spring中已经集成-->
        <bean id="dataSourceTransactionManagerID" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
            <!--同样是依赖于连接池-->
            <property name="dataSource" ref="comboPooledDataSourceID"></property>
        </bean>
    
        <!--4.配置事物通知,即:让哪些方法需要事物支持-->
        <tx:advice id="tx" transaction-manager="dataSourceTransactionManagerID">
            <tx:attributes>
                <tx:method name="add*" propagation="REQUIRED"/>
                <tx:method name="delete*" propagation="REQUIRED"/>
                <tx:method name="update*" propagation="REQUIRED"/>
                <tx:method name="*" propagation="SUPPORTS"/><!--在代码中手动配置是否支持事物-->
            </tx:attributes>
        </tx:advice>
    
        <!--5.配置事物切面,即:让哪些包下的类需要事物,正式项目中事物的包要集成在serrvice中-->
        <aop:config>
            <aop:pointcut id="pointcut" expression="execution(* nick.dao.*.*(..))"></aop:pointcut>
            <aop:advisor advice-ref="tx" pointcut-ref="pointcut"/>
        </aop:config>
    
        <!--6.注册empDao-->
        <bean id="empDaoID" class="nick.dao.EmpDao">
            <property name="sqlSessionFactory" ref="sqlSessionFactoryBeanID"/>
        </bean>
    </beans>

    9.测试(使用test2测试)

    package nick.test;
    
    import nick.dao.EmpDao;
    import nick.entity.Emp;
    import org.junit.Test;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    /**
     * Created by Administrator on 2017/8/9.
     * 单元测试
     */
    public class test {
        @Test
        public void test () {
            //单独测试mybatis
            EmpDao empDao = new EmpDao();
            try {
                empDao.add(new Emp(3,"笨笨",6000,"男"));
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        //测试spring整合mybatis
        @Test
        public void test2 () throws Exception{
            ApplicationContext ac = new ClassPathXmlApplicationContext(new String[]{"spring.xml"});
            EmpDao empDao = (EmpDao) ac.getBean("empDaoID");
            empDao.add(new Emp(6,"嘻嘻",9000,"女"));
        }
    }


  • 相关阅读:
    codeforces242E XOR on Segment
    HDU3037 Saving Beans
    BZOJ1951 [Sdoi2010]古代猪文
    BZOJ3563 DZY Loves Chinese
    HDU1573 X问题
    POJ2891 Strange Way to Express Integers
    BZOJ2152 聪聪可可
    codeforces291E Tree-String Problem
    codeforces741D Arpa’s letter-marked tree and Mehrdad’s Dokhtar-kosh paths
    codeforces246E Blood Cousins Return
  • 原文地址:https://www.cnblogs.com/Nick-Hu/p/7325748.html
Copyright © 2011-2022 走看看