Spring框架(三)

接Spring框架(二)

 

1.创建复杂对象

复杂对象: 类中没有构造方法,或者构造方法不能调用如接口类型或抽象类实例

//1.类 implements FactoryBean<创建的类型>
  public class ConnectionFactoryBean implements FactoryBean<Connection> {
    @Override
    public Connection getObject() throws Exception {
        Class.forName("com.mysql.jdbc.Driver");
        return DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","root");
    }

    @Override
    public Class<?> getObjectType() {
        return Connection.class;
    }

    @Override
    public boolean isSingleton() {
        return false;
    }
  }

// 2.配置工厂管理
      <bean id="connectionFactoryBean" class="com.baizhi.factorybean.ConnectionFactoryBean"></bean>

// 3.获取复杂对象
        ApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");
        Connection conn = (Connection) context.getBean("connectionFactoryBean");
        System.out.println(conn);

2.SM整合思路

 

1.spring框架的作用

spring框架 项目管理框架 主要负责项目中组件对象的创建、使用、销毁

2.Mybatis框架的作用

Mybatis框架 持久层框架 主要用来简化数据库访问的操作

3.整合思路

整合思路: 两个框架作用不同,貌似没有什么联系,更深入看才能看出所谓Spring整合Mybatis,其实就是通过spring框架接管mybatis框架中核心对象的创建

4.mybatis中的核心对象有哪些

Mybatis的核心对象为: SqlSessionFactory   直接依赖于mybatis-config.xml 文件,一定依赖于数据源对象和mapper文件注册

整合就是通过Spring工厂管理SqlSessionFactory对象的创建

5.整合思路图示

 

3. SM整合DAO编程步骤

 

1.引入mybatis的依赖jar包

<dependency>
  <groupId>org.mybatis</groupId>
  <artifactId>mybatis</artifactId>
  <version>3.2.8</version>
</dependency>

2.引入Spring相关jar包

<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-core</artifactId>
  <version>4.3.2.RELEASE</version>
</dependency>
<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-context</artifactId>
  <version>4.3.2.RELEASE</version>
</dependency>
<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-context-support</artifactId>
  <version>4.3.2.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
    <version>4.3.2.RELEASE</version>
  </dependency>
<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-aop</artifactId>
  <version>4.3.2.RELEASE</version>
</dependency>
<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-beans</artifactId>
  <version>4.3.2.RELEASE</version>
</dependency>
<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-expression</artifactId>
  <version>4.3.2.RELEASE</version>
</dependency>
<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-aspects</artifactId>
  <version>4.3.2.RELEASE</version>
</dependency>
<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-tx</artifactId>
  <version>4.3.2.RELEASE</version>
</dependency>
<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-web</artifactId>
  <version>4.3.2.RELEASE</version>
</dependency>

3.mybatis-spring整合jar

<dependency>
  <groupId>org.mybatis</groupId>
  <artifactId>mybatis-spring</artifactId>
  <version>1.3.1</version>
</dependency>

4.引入数据库驱动jar

<dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
  <version>5.1.40</version>
</dependency>
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.1.12</version>
</dependency>

5.建表

6.编写实体类

7.书写DAO接口

public interface UserDAO {
    //查询所有
    List<User> findAll();
}

8.编写mapper配置文件

<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.xxx.dao.UserDAO">
    
    <select id="findAll" resultType="com.xxx.entity.User">
        select id,name,age,bir from t_user
    </select>

</mapper>

9.编写Spring-myabtis整合配置文件

核心思路:通过spring接管mybatis中SqlSessionFactory  DAO对象的创建

       分析一:创建SqlSessionFactory时需要依赖数据源对象 mapper 配置文件的位置

       分析二:创建DAO对象时需要依赖  SqlSessionFactory  和  DAO  接口类型

    <!--创建数据源对象-->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/sm"/>
        <property name="username" value="root"/>
        <property name="password" value="root"/>
    </bean>

    <!--创建sqlSessionFactory 注入 dataSource  mapperLocations 起别名 -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <!--注入mapper配置文件的位置-->
        <property name="mapperLocations" value="classpath:com/xxx/mapper/*.xml"></property>
        <!--起别名  默认起的别名为类名|类名首字母小写-->
        <property name="typeAliasesPackage" value="com.xxx.entity"/>
    </bean>

    <!--创建DAO对象-->
    <bean id="userDAO" class="org.mybatis.spring.mapper.MapperFactoryBean">
        <!--注入SqlSessionFactory-->
        <property name="sqlSessionFactory" ref="sqlSessionFactory"/>
        <!--注入DAO接口所在的包-->
        <property name="mapperInterface" value="com.xxx.dao.UserDAO"/>
    </bean>

10.启动工厂测试

ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");
UserDAO userDAO = (UserDAO) context.getBean("userDAO");
List<User> users = userDAO.findAll();
for (User user : users) {
  System.out.println(user);
}

3.SM整合Service编程步骤

 

1.编写spring-mybatis.xml配置文件

    <!--创建事务管理器-->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"/>
    </bean>

    <!--tx命名空间
       tx:advice 作用:将事务管理器自动转为一个通知对象  环绕通知
       transaction-manager: 用来指定外部事务管理器是谁
       id: 根据事务管理器转换的通知对象在工厂中唯一标识
    -->
    <!--配置事务属性-->
    <tx:advice id="txAdvice" transaction-manager="transactionManager">
        <!--配置业务层方法事务细粒度配置-->
        <tx:attributes>
            <tx:method name="save*"/>
            <tx:method name="update*"/>
            <tx:method name="delete*"/>
            <tx:method name="find*"/>
        </tx:attributes>
    </tx:advice>

    <!--配置事务切面-->
    <aop:config>
        <aop:pointcut id="pc" expression="within(com.xxx.service.*)"/>
        <aop:advisor advice-ref="txAdvice" pointcut-ref="pc"/>
    </aop:config>

2.配置图示

3.创建service接口

public interface UserService {
    List<User> findAll();
}

4.创建service对象

public class UserServiceImpl implements UserService {
    
    private UserDAO userDAO;
    public void setUserDAO(UserDAO userDAO) {
        this.userDAO = userDAO;
    }

    @Override
    public List<User> findAll() {
        return userDAO.findAll();
    }
}

5.配置业务组件对象

    <!--配置Service组件-->
    <bean id="userService" class="com.xxx.service.UserServiceImpl">
        <property name="userDAO" ref="userDAO"/>
    </bean>

6.启动测试


 

          点击:Spring框架(四)


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值