zoukankan      html  css  js  c++  java
  • 从0开始整合SSM框架--2.spring整合mybatis

    依赖:
    <properties>
    <!-- spring版本号 -->
    <spring.version>4.1.3.RELEASE</spring.version>
    </properties>

    <!-- Spring依赖-->
    <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
    <version>${spring.version}</version>
    </dependency>

    <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-web</artifactId>
    <version>${spring.version}</version>
    </dependency>
    <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-oxm</artifactId>
    <version>${spring.version}</version>
    </dependency>
    <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-tx</artifactId>
    <version>${spring.version}</version>
    </dependency>

    <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
    <version>${spring.version}</version>
    </dependency>

    <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>${spring.version}</version>
    </dependency>
    <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-aop</artifactId>
    <version>${spring.version}</version>
    </dependency>

    <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context-support</artifactId>
    <version>${spring.version}</version>
    </dependency>

    <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-test</artifactId>
    <version>${spring.version}</version>
    </dependency>
    <!--数据库连接池-->
    <dependency>
    <groupId>com.mchange</groupId>
    <artifactId>c3p0</artifactId>
    <version>0.9.5.2</version>
    </dependency>
    <!--Spring+mybatis的整合包-->
    <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
    <dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis-spring</artifactId>
    <version>1.2.2</version>
    </dependency>

    整合的步骤
      第一步:创建一个java工程。
      第二步:导入jar包。(上面提到的jar包)
      第三步:mybatis的配置文件sqlmapConfig.xml
      第四步:编写Spring的配置文件
        1、数据库连接及连接池
        2、事务管理(暂时可以不配置)
        3、sqlsessionFactory对象,配置到spring容器中
        4、mapeer代理对象或者是dao实现类配置到spring容器中。
      第五步:编写dao或者mapper文件
      第六步:测试。

    SqlMapConfig.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>
      <typeAliases>
        <package name="cn.itcast.mybatis.pojo"/>
      </typeAliases>
    <mappers>
      <mapper resource="sqlmap/User.xml"/>
    </mappers>
    </configuration>

    applicationContext.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p"
    xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-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/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
    http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd">
    <!-- 加载配置文件 -->
    <context:property-placeholder location="classpath:db.properties" />
    <!-- 数据库连接池 -->
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
    destroy-method="close">
    <property name="driverClassName" value="${jdbc.driver}" />
    <property name="url" value="${jdbc.url}" />
    <property name="username" value="${jdbc.username}" />
    <property name="password" value="${jdbc.password}" />
    <property name="maxActive" value="10" />
    <property name="maxIdle" value="5" />
    </bean>
    <!-- mapper配置 -->
    <!-- 让spring管理sqlsessionfactory 使用mybatis和spring整合包中的 -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <!-- 数据库连接池 -->
    <property name="dataSource" ref="dataSource" />
    <!-- 加载mybatis的全局配置文件 -->
    <property name="configLocation" value="classpath:mybatis/SqlMapConfig.xml" />
    </bean>

    </beans>

    db.properties
    jdbc.driver=com.mysql.jdbc.Driver
    jdbc.url=jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8
    jdbc.username=root
    jdbc.password=root

    1.Dao的开发
    三种dao的实现方式:
      1、传统dao的开发方式
      2、使用mapper代理形式开发方式
      3、使用扫描包配置mapper代理。

     传统dao的开发方式

         接口+实现类来完成。需要dao实现类需要继承SqlsessionDaoSupport类

    public class UserDaoImpl extends SqlSessionDaoSupport implements UserDao {

    @Override
    public User findUserById(int id) throws Exception {
    SqlSession session = getSqlSession();
    User user = session.selectOne("test.findUserById", id);
    //不能关闭SqlSession,让spring容器来完成
    //session.close();
    return user;
    }

    @Override
    public void insertUser(User user) throws Exception {
    SqlSession session = getSqlSession();
    session.insert("test.insertUser", user);
    session.commit();
    //session.close();
    }

    }

    配置dao
    把dao实现类配置到spring容器中
    <!-- 配置UserDao实现类 -->
    <bean id="userDao" class="cn.itcast.dao.UserDaoImpl">
    <property name="sqlSessionFactory" ref="sqlSessionFactory"/>
    </bean>
    测试方法
    @Test
    public void testFindUserById() throws Exception {
    UserDao userDao = (UserDao) applicationContext.getBean("userDao");
    User user = userDao.findUserById(1);
    System.out.println(user);
    }

    2.Mapper代理形式开发dao
    开发mapper接口

    在applicationContext中配置mapper代理

    <!-- 配置mapper代理对象 -->
    <bean class="org.mybatis.spring.mapper.MapperFactoryBean">
    <property name="mapperInterface" value="cn.itcast.mybatis.mapper.UserMapper"/>
    <property name="sqlSessionFactory" ref="sqlSessionFactory"></property>
    </bean>

    测试方法
    public class UserMapperTest {

    private ApplicationContext applicationContext;
    @Before
    public void setUp() throws Exception {
    applicationContext = new ClassPathXmlApplicationContext("classpath:spring/applicationContext.xml");
    }

    @Test
    public void testGetUserById() {
    UserMapper userMapper = applicationContext.getBean(UserMapper.class);
    User user = userMapper.getUserById(1);
    System.out.println(user);
    }

    }

    扫描包形式配置mapper
    <!-- 使用扫描包的形式来创建mapper代理对象 -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    <property name="basePackage" value="cn.itcast.mybatis.mapper"></property>
    </bean>
    每个mapper代理对象的id就是类名,首字母小写

    测试
    public class mybatisTest {
    private ApplicationContext applicationContext;
    @Before
    public void setUp() throws Exception {
    applicationContext = new ClassPathXmlApplicationContext("Spring/applicationContext.xml");
    }

    @Test
    public void testFindUserById() throws Exception {
    UserDao userDao = (UserDao) applicationContext.getBean("userDao");
    User user = userDao.findUserById(10);
    System.out.println(user);

    }
    }

  • 相关阅读:
    CDQ
    MySQL中的类Decode用法
    HTMLTestRunner生成空白resault.html
    参数化时按行读取txt文件,如何去掉换行符" "
    打开本地html的一些设置
    python中文乱码例子
    Python异常处理实例
    Python根据上下限生成不重复随机数1
    Linux自定义命令
    Python IDLE 清屏工具
  • 原文地址:https://www.cnblogs.com/red-evil/p/10057261.html
Copyright © 2011-2022 走看看