Mybatis-Spring

Spring是一款轻量级的控制反转(IOC)面向切面(AOP)的框架。

Spring Boot

  • 一个快速开发的脚手架。
  • 基于SpringBoot可以快速开发单个微服务。
  • 约定大于配置

Sping Cloud

  • SpringCloud是基于SpringBoot实现的。

 IOC理论推导

1.UserDao 接口

2.UserDaoImpl 实现类

3.UserService 业务接口

4.UserServiceImpl 业务实现类

##常用依赖
```xml
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>5.3.2</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jdbc</artifactId>
      <version>5.3.2</version>
    </dependency>
```
##注解说明
两者区别,都是用来自动装配的,都可以放在属性字段上。
- @Autowired:通过byType的方式实现,自动装配先找类型、然后是名字,而且必须要求这个对象存在。
    如果不能唯一自动装配上属性,则需要通过@Qualifier(value="自定义的id")
    - @AUtowired
    @Qualifier(value="id")
    
- @Resourse自动装配通过名字,然后是类型。(默认通过byname的方式实现)

- @Component : 组件,放在类上,即表示这个类被Spring管理了,就是bean!
    - 衍生注解,功能相同,名字不同。在mvc三层架构中分层使用。
        - dao层: 【@Repository】
        - service层: 【@Service】
        - controller层: 【@Controller】
- @Value(""): 放在set方法或属性即代表赋值给它。
- 作用域:@Scope("singleton")单例模式,@Scope("prototype")原型模式。
##注解开发
- 注解支持 applicationContext.xml
```xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:mvc="http://www.springframework.org/schema/mvc"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
       xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:util="http://www.springframework.org/schema/util"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
                              http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd 
                              http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd
                              http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.2.xsd
                              http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.2.xsd">
    <context:annotation-config/>
<!--    指定要扫描的包,这个包下的注解就会生效-->
    <context:component-scan base-package="com.stx"/>
</beans>                        
```
##AOP面向切面编程
- 导一个切面包
```xml
<dependency>
      <groupId>org.aspectj</groupId>
      <artifactId>aspectjweaver</artifactId>
      <version>1.9.4</version>
    </dependency>
```
- 自定义类方式实现切面
```java
方式一:
<!--    注册bean-->
    <bean id="要注册的类" class="com.stx.service.*"/>
<!--    自定义类切面-->
    <bean id="要引用的类" class="com.stx.service."/>
    <aop:config>
        <aop:aspect ref="要引用的类">
            <aop:pointcut id="point" expression="execution(* com.stx.service.*(..))"/>
<!--            通知-->
            <aop:after method="" pointcut-ref="point"/>
        </aop:aspect>
    </aop:config>
方式二:
<!--配置aop:需要导入aop的约束-->
    <aop:config>
        <aop:pointcut id="pointcut" "/>
<!--        执行环绕增加-->
        <aop:advisor advice-ref="要切入的类" pointcut-ref="pointcut"/>
        <aop:advisor advice-ref="要切入的类" pointcut-ref="pointcut"/>
        <aop:advisor advice-ref="要切入的类" pointcut-ref="pointcut"/>
    </aop:config>
方式三:
<bean>注册后加上一句<aop:aspectj-autoproxy/>//开启注解支持
@Aspect//标记这个类名是个切面
@Before("expression="execution(* com.stx.service.实现类.*(..))")//标记方法执行前后。

```
##整合mybatis-spring
- 第一步配置xml文件
```xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:mvc="http://www.springframework.org/schema/mvc"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
       xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:util="http://www.springframework.org/schema/util"
       xsi:schemaLocation="http://www.springframework.org/schema/beans  http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
                              http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd
                              http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd
                              http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.2.xsd
                              http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.2.xsd">

<!--使用spring的数据源替换mybatis的配置-->
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306?serverTimezone=GMT%2B8&amp;useSSL=false&amp;useUnicode=true&amp;characterEncoding=UTF-8"/>
        <property name="username" value="root"/>
        <property name="password" value="123456"/>
    </bean>

<!--sqlSessionFactory的创建-->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
<!--        绑定mybatis配置文件(可有可无,最好加上)-->
        <property name="configLocation" value="classpath:mybatis-config.xml"/>
        <property name="mapperLocations" value="classpath:com/stx/mapper/*.xml"/>
    </bean>

<!--此处面向对象,所以需要一实现类-->
    <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
<!--        只能使用构造器注入sqlSessionFactory,因为它没有set方法-->
        <constructor-arg index="0" ref="sqlSessionFactory"/>
    </bean>

</beans>
```
- 第二步,实现类
```java
//接口的实现类
public class UserMapperImpl implements UserMapper {

    private SqlSessionTemplate sqlSession;

    public void setSqlSession(SqlSessionTemplate sqlSession) {
        this.sqlSession = sqlSession;
    }
//用sqlSession重写方法
    @Override
    public List<User> selectUser() {
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        return mapper.selectUser();

    }
}
```
- 第三步,bean注入spring
```xml
    <bean id="userMapper" class="com.stx.mapper.UserMapperImpl">
        <property name="sqlSession" ref="sqlSession"/>
    </bean>
```
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值