• Spring的简单使用(3)


    一:SM框架的整合:

    所需要的依赖:


    junit
    junit
    4.12
    test


    org.springframework
    spring-aspects
    5.2.5.RELEASE


    org.springframework
    spring-context
    5.2.5.RELEASE


    org.springframework
    spring-tx
    5.2.5.RELEASE


    org.springframework
    spring-jdbc
    5.2.5.RELEASE


    org.mybatis
    mybatis
    3.5.1


    org.mybatis
    mybatis-spring
    1.3.1


    mysql
    mysql-connector-java
    5.1.32


    com.mchange
    c3p0
    0.9.5.4







    src/main/resources

    **/*.properties
    **/*.xml




    src/main/java

    **/*.properties
    **/*.xml



    mybatis核心配置文件:


    PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
    "http://mybatis.org/dtd/mybatis-3-config.dtd">


    spring—mapper.核心配置文件(接管了mybatis的核心配置文件):


    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    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/context http://www.springframework.org/schema/context/spring-context.xsd">























    spring-service核心配置文件:


    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://mybatis.org/schema/mybatis-spring"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://mybatis.org/schema/mybatis-spring http://mybatis.org/schema/mybatis-spring.xsd">






    database.properties:

    jdbc.driver=com.mysql.jdbc.Driver
    jdbc.url=jdbc:mysql://localhost:3306/mybatis?useSSL=false&useUnicode=true&characterEncoding=UTF-8
    jdbc.username=root
    jdbc.password=ztb

    dao层:

      dao层接口:

    public interface UserMapper {
    int insert(User user);
    }

      dao层配置文件:


    PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    "http://mybatis.org/dtd/mybatis-3-mapper.dtd">


    insert into user values (#{id},#{name},#{pwd})

    实体类:

    package com.ztb.pojo;

    public class User {
    private Integer id;
    private String name;
    private String pwd;

    public User() {
    }

    public User(Integer id, String name, String pwd) {
    this.id = id;
    this.name = name;
    this.pwd = pwd;
    }

    public Integer getId() {
    return id;
    }

    public void setId(Integer id) {
    this.id = id;
    }

    public String getName() {
    return name;
    }

    public void setName(String name) {
    this.name = name;
    }

    public String getPwd() {
    return pwd;
    }

    public void setPwd(String pwd) {
    this.pwd = pwd;
    }

    @Override
    public String toString() {
    return "User{" +
    "id=" + id +
    ", name='" + name + '\'' +
    ", pwd='" + pwd + '\'' +
    '}';
    }
    }

    service层:

       service接口:

    public interface UserService {
    int insert(User user);
    }

       service实现类:

    @Service("user")
    public class UserServiceImpl implements UserService{
    @Autowired
    UserMapper userMapper;



    @Override
    public int insert(User user) {
    return userMapper.insert(user);
    }
    }

    测试:

    @Test
    public void test1() {
    ApplicationContext context = new ClassPathXmlApplicationContext("spring-service.xml");
    UserService userServiceImpl = (UserService) context.getBean("user");
    int i = userServiceImpl.insert(new User(13, "张三", "2222"));
    System.out.println(i);

    二:事务:

    分为注解式事务和声明式事务:

    1:注解式事务:使用@Transactional注解完成事务控制,此注解可以添加到类上,,则对类中的所有方法都执行事务的处理。也可以添加到方法上,添加到方法上只是对该方法进行事务处理。

    由于事务都是在业务逻辑层,所以所有的事务都必须配在service层:

    首先需要在spring-service配置文件中添加支持注解式事务:







    注解式事务必须要在实现类上面添加注解:

     

     

     

     

     

     

     

      2:声明式事务(重要):在配置文件中添加一次,整个项目都遵循事物的设定。

    声明式事务配置如下:



















    也可以如下写:

     

     

     

     

    事务优先级的处理:

    如果有一些方法和声明式事务不匹配,则可以设置优先级:

    在配置文件中添加注解式事务,设置优先级比声明式要高,这样在方法上就会选择注解式事务来操作了

    注解式设置为100
    声明式设置为1
  • 相关阅读:
    scala集合的partition方法使用
    【老生谈算法】matlab绘制温度场原理——温度场原理
    做了五年功能测试麻木了,现在想进阶自动化测试该从哪里开始?
    【洛谷算法题】P3954-成绩【入门1顺序结构】
    计算机网络交换机应用基础
    SQL项目实战:房产行业如何分析?(步骤具体且明确)
    [单片机框架][bsp层][N32G4FR][bsp_tim] tim配置和使用
    一步搞懂镜像文件
    声声入耳:音频新体验
    uniapp——获取某元素距离顶部的距离,并将高度应用到css里面,为实现scroll-view内容而不让整个页面出现滚动条。
  • 原文地址:https://www.cnblogs.com/zhangtaibing/p/16570489.html