手牵手入门Spring5.2.5.RELEASE整合Mybatis3.5

2023年3月29日

Spring是Java EE编程领域的一个轻量级开源框架,该框架由一个叫Rod Johnson的程序员在 2002 年最早提出并随后创建,是为了解决企业级编程开发中的复杂性,实现敏捷开发的应用型框架 。Spring是一个开源容器框架,它集成各类型的工具,通过核心的Bean factory实现了底层的类的实例化和生命周期的管理。在整个框架中,各类型的功能被抽象成一个个的 Bean,这样就可以实现各种功能的管理,包括动态加载和切面编程。

MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录

整体框架

MyBatisUtils工具类



public class MyBatisUtils {
        private static SqlSessionFactory sqlSessionFactory = null;
        static {
            String config="mybatis-config.xml";
            InputStream inputStream = null;
            try {
                inputStream = Resources.getResourceAsStream(config);
                //创建SqlSessionFactory对象
                sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
        }
        //获取sqlSession的方法,非自动提交事务
        public  static SqlSession getSqlSession(){
            SqlSession sqlSession = null;
            if (sqlSessionFactory!=null){
                sqlSession =  sqlSessionFactory.openSession();//非自动提交事务
            }
            return sqlSession;
        }
        //获取sqlSession的方法,自动提交事务
        public  static SqlSession getSqlSessionAuto(){
            SqlSession sqlSession = null;
            if (sqlSessionFactory!=null){
                sqlSession =  sqlSessionFactory.openSession(true);//自动提交事务
            }
            return sqlSession;
        }
}

所需依赖:

spring依赖
spring事务依赖
mybatis依赖
mybatis-spring依赖
mysql驱动
德鲁伊连接池
单元测试
@Resource注解的依赖

pom.xml配置文件



    4.0.0

    org.example
    SSM01
    1.0-SNAPSHOT
    jar
    
        8
        8
        UTF-8
    

    
        
        
            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.9
        

        
        
            com.alibaba
            druid
            1.1.12
        

        
        
            junit
            junit
            4.11
            test
        
        
        
            jakarta.annotation
            jakarta.annotation-api
            2.1.0
        
    

    
        
            
                src/main/java
                
                    **/*.properties
                    **/*.xml
                
                false
            
        
    

jdbc.properties文件

jdbc.url=jdbc:mysql://116.205.131.136:3306/mysql?useUnicode=true&characterEncoding=utf-8
jdbc.user= root
jdbc.password= 111111

mybatis-config.xml配置文件





    
    
        
    

    
        
        
    


SpringConfig.xml配置文件



        
        
        
        
        
        
                
                
                
        

    
    
        
        
        
        
    

    
        
        
        
        
    
    

Staff实体类

package com.qgs.pojo;
import java.util.Objects;

/**
 * @author QGS
 * @version 1.0.0
 * @date 2023年03月09日 18:03:23
 * @packageName com.object
 * @className staff
 * @describe TODO
 */
public class Staff {
    private int id;
    private String name;
    private String diploma;
    private String title;
    private String marriage;
    private String status;
    private String workTime;

    public Staff(int id, String name, String diploma, String title, String marriage, String status, String workTime) {
        this.id = id;
        this.name = name;
        this.diploma = diploma;
        this.title = title;
        this.marriage = marriage;
        this.status = status;
        this.workTime = workTime;
    }

    public Staff() {
    }

    @Override
    public String toString() {
        return "Staff{" +
                "id=" + id +
                ", name='" + name + ''' +
                ", diploma='" + diploma + ''' +
                ", title='" + title + ''' +
                ", marriage='" + marriage + ''' +
                ", status='" + status + ''' +
                ", workTime='" + workTime + ''' +
                '}';
    }

    public int getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

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

    public String getDiploma() {
        return diploma;
    }

    public void setDiploma(String diploma) {
        this.diploma = diploma;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getMarriage() {
        return marriage;
    }

    public void setMarriage(String marriage) {
        this.marriage = marriage;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public String getWorkTime() {
        return workTime;
    }

    public void setWorkTime(String workTime) {
        this.workTime = workTime;
    }
    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Staff staff = (Staff) o;
        return id == staff.id && Objects.equals(name, staff.name) && Objects.equals(diploma, staff.diploma) && Objects.equals(title, staff.title) && Objects.equals(marriage, staff.marriage) && Objects.equals(status, staff.status) && Objects.equals(workTime, staff.workTime);
    }

    @Override
    public int hashCode() {
        return Objects.hash(id, name, diploma, title, marriage, status, workTime);
    }
}

StaffDao接口

package com.qgs.dao;
import com.qgs.pojo.Staff;
import java.util.List;
/**
 * @author QGS
 * @version 1.0.0
 * @date 2023年03月09日 19:58:46
 * @packageName com.myabtis.dao
 * @className StaffDao
 * @describe TODO
 */
public interface StaffDao {
    //查询所有
    List selectALL();
  
}

StaffDao.xml-mapper映射文件





    


Bank实体类 

package com.qgs.pojo;

import java.util.List;

/**
 * @author QGS
 * @version 1.0.0
 * @date 2023年03月28日 16:31:07
 * @packageName com.qgs.pojo
 * @className Bank
 * @describe TODO
 */
public class Bank {

    String actno;
    double balance;

    public String getActno() {
        return actno;
    }

    public void setActno(String actno) {
        this.actno = actno;
    }

    public double getBalance() {
        return balance;
    }

    public void setBalance(double balance) {
        this.balance = balance;
    }

    public Bank(String actno, double balance) {
        this.actno = actno;
        this.balance = balance;
    }

    public Bank() {
    }

    @Override
    public String toString() {
        return "Bank{" +
                "actno='" + actno + ''' +
                ", balance=" + balance +
                '}';
    }
}

public interface BankDao {

    List selectAllBank();
}

BankDao.xml





    


StaffDaoService接口

public interface StaffDaoService {
    List selectALL();

    List selectAllBank();
}

使用@Resource注解注入

@Resource注解是JDK扩展包中的,也就是属于JDK的一部分。所以该注解是标准注解,更加具有通用性。(JSR-250标准中指定的注解类型。JSR是Java规范提案)

@Autowired注解是Spring框架自己的。

@Resource注解默认根据名称装配byName,未指定name时,使用属性名作为name。通过name找不到的话会自动启动通过类型byType装配。

@Autowired注解默认根据类型装配bybyType,想根据名称装配,需要配合@Qualifier注解一起用。

@Resource注解用在属性上,setter方法上。

@Autowired注解用在属性上,setter方法上,构造方法上,构造方法参数上。

@Resource注解是JDK扩展包,不在JDK当中,需要引入依赖。

Spring6不在支持JavaEE,它支持的是JakartaEE9。

Spring6使用这个依赖

Spring5使用这个依赖

 

实现类

@Service
public class StaffDaoServiceImpl implements StaffDaoService {

    @Resource(name ="staffDao")
    StaffDao staffDao;

    @Resource(name ="bankDao")
    BankDao bankDao;

    public void setStaffDao(StaffDao staffDao) {
        this.staffDao = staffDao;
    }

    @Override
    public List selectALL() {
        return staffDao.selectALL();
    }

    @Override
    public List selectAllBank() {

        return bankDao.selectAllBank();
    }
}

测试类

@Test
public void test(){
    ApplicationContext applicationContext =new ClassPathXmlApplicationContext("SpringConfig.xml");
    StaffDaoService staffDaoServiceImpl = applicationContext.getBean("staffDaoServiceImpl", StaffDaoService.class);
    List staffs = staffDaoServiceImpl.selectALL();
    for (Staff staff : staffs) {
        System.out.println(staff.toString());
    }

    StaffDaoService staffDaoServiceImpl1 = applicationContext.getBean("staffDaoServiceImpl", StaffDaoService.class);
    List banks = staffDaoServiceImpl1.selectAllBank();
    for (Bank bank : banks) {
        System.out.println(bank.toString());
    }
}

服务器托管,北京服务器托管,服务器租用 http://www.hhisp.net

hackdl

咨询热线/微信 13051898268