MyBatis 学习(六):Spring 整合 MyBatis

Spring 整合 MyBatis

  • 1)在创建项目之前,首先在 MySQL 数据库中创建 mybatis 数据库和 student 表,sql 语句如下所示:

    CREATE DATABASES mybatis;
    USE mybatis;
    DROP TABLE IF EXISTS `student`
    CREATE TABLE `student` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `name` varchar(255) DEFAULT NULL,
      `sex` char(4) DEFAULT NULL,
      `age` int(11) DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
    
  • 2)创建 Web 应用,并添加相关 JAR 包

    在Eclipse中创建一个名为spring-mybatis-work的Web应用
    在这里插入图片描述
    在这里插入图片描述

将 Spring 整合 MyBatis 的核心 JAR 包、依赖 JAR 包以及 MySQL 数据库的驱动 JAR 包一起复制到 /WEB-INF/lib 目录下
在这里插入图片描述

  • 3)创建持久化类

    在src目录下创建一个名为 com.zhang.pojo 的包,在该包下创建持久化类 Student,注意在类中声明的属性与数据表 student 的字段一致。

    package com.zhang.pojo;
    
    public class Student {
    
    	private int id;
    	
    	private String name;
    	
    	private String sex;
    	
    	private int age;
    
    	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 getSex() {
    		return sex;
    	}
    
    	public void setSex(String sex) {
    		this.sex = sex;
    	}
    
    	public int getAge() {
    		return age;
    	}
    
    	public void setAge(int age) {
    		this.age = age;
    	}
    
    	@Override
    	public String toString() {
    		return "Student [id=" + id + ", name=" + name + ", sex=" + sex + ", age=" + age + "]";
    	}
    	
    	
    }
    
    
  • 4)创建映射文件

    在src目录下创建一个名为 com.zhang.mapper 的包,在该包中创建映射文件 StudentMapper.xml 文件 和 StudentMapper 接口

    • StudentMapper.xml 文件内容如下:

      <?xml version="1.0" encoding="UTF-8"?>
      <!DOCTYPE mapper
      PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
      "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
      <mapper namespace="com.zhang.mapper.StudentMapper">
          
          <!-- 查询所有学生信息 -->
          <select id="selAllStudent" resultType="com.zhang.pojo.Student">
          	select * from student
          </select>
          
          <!-- 根据id查询学生所有信息 -->
          <select id="selStudentById" resultType="com.zhang.pojo.Student" parameterType="int">
          	select * from student where id=#{id}
          </select>
          
          <!-- 添加学生信息 -->
         	<insert id="insertStudent" parameterType="com.zhang.pojo.Student">
         		insert into student(id,name,sex,age) values(default,#{name},#{sex},#{age})
         	</insert>
      </mapper>
      
    • StudentMapper 接口如下:

      package com.zhang.mapper;
      
      import java.util.List;
      
      import com.zhang.pojo.Student;
      
      public interface StudentMapper {
      
      	public List<Student> selAllStudent();
      	
      	public Student selStudentById(int id);
      	
      	public int insertStudent(Student student);
      }
      

      StudentMapper 接口里的方法名应与 StudentMapper.xml 里的 SQL 语句里的id相对应

  • 5) 创建Service接口

    在src目录下创建一个名为 com.zhang.service 的包,在其包下创建 StudentService 接口,其内容如下:

    package com.zhang.service;
    
    import java.util.List;
    
    import com.zhang.pojo.Student;
    
    public interface StudentService {
    
    	public List<Student> findAllStudent();
    	
    	public Student findStudentById(int id);
    	
    	public int addStudent(Student student);
    }
    
  • 6) 创建Service实现类

    在src目录下创建一个名为 com.zhang.service.impl 的包,在其包下创建StudentServiceImp,其为 StudentService 的实现类,并且需要在实现类中声明 Mapper 接口对象,并生成 getter/setter 方法,交予Spring管理。具体内容如下:

    package com.zhang.service.impl;
    import java.util.List;
    
    import com.zhang.mapper.StudentMapper;
    import com.zhang.pojo.Student;
    import com.zhang.service.StudentService;
    
    public class StudentServiceImpl implements StudentService{
    
    	//声明 Mapper 接口对象,并生成 getter/setter 方法
    	private StudentMapper studentMapper;
    	
    	
    	public StudentMapper getStudentMapper() {
    		return studentMapper;
    	}
    
    
    	public void setStudentMapper(StudentMapper studentMapper) {
    		this.studentMapper = studentMapper;
    	}
    
    
    
    	@Override
    	public List<Student> findAllStudent() {
    		
    		return studentMapper.selAllStudent();
    	}
    
    
    	@Override
    	public Student findStudentById(int id) {
    		
    		return studentMapper.selStudentById(id);
    	}
    
    
    	@Override
    	public int addStudent(Student student) {
    		
    		return studentMapper.insertStudent(student);
    	}
    
    }
    
  • 7) 创建 Spring 的配置文件

    在 src 目录下创建配置文件 applicationContext.xml,在配置文件中配置数据源、MyBatis 工厂以及 Mapper 代理开发等信息。

    applicationContext.xml 的代码如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:aop="http://www.springframework.org/schema/aop"
        xmlns:tx="http://www.springframework.org/schema/tx"
        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/tx
            http://www.springframework.org/schema/tx/spring-tx.xsd
            http://www.springframework.org/schema/aop
            http://www.springframework.org/schema/aop/spring-aop.xsd
            http://www.springframework.org/schema/context
            http://www.springframework.org/schema/context/spring-context.xsd"
            default-autowire="byName">
            
            <!-- 配置数据源 -->
     		<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
     			<!-- MySQL数据库驱动 -->
     			<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
     			<!-- 连接数据库的URL -->
     			<property name="url" value="jdbc:mysql://localhost/mybatis?characterEncoding=UTF-8"></property>
     			<!-- 连接数据库的用户名 -->
     			<property name="username" value="root"></property>
     			<!-- 连接数据库的密码 -->
     			<property name="password" value="123456"></property>
     			 <!-- 最大连接数 -->
    	        <property name="maxTotal" value="30" />
    	        <!-- 最大空闲连接数 -->
    	        <property name="maxIdle" value="10" />
    	        <!-- 初始化连接数 -->
    	        <property name="initialSize" value="5" />
     		</bean>
     		
     		 <!-- 创建SqlSessionFactory对象 -->
     		<bean id="factory" class="org.mybatis.spring.SqlSessionFactoryBean">
     			<!-- 数据库连接信息来源于dataSource -->
     			<property name="dataSource" ref="dataSource"></property>
     		</bean>
     		 <!--扫描器 相当于mybatis-config.xml中mappers下的package标签, 扫描com.zhang.mapper包后会给对应接口创建对象 -->
     		<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
     			<!-- 要扫描哪个包 -->
     			<property name="basePackage" value="com.zhang.mapper"/>
     			<!-- 和factory产生关系 -->
     			<property name="sqlSessionFactory" ref="factory"></property>
     		</bean>
     		<!-- 由Spring管理service实现类-->
     		<bean id="studentService" class="com.zhang.service.impl.StudentServiceImpl">
     			<property name="studentMapper" ref="studentMapper"></property>
     		</bean>
    </beans>
    
  • 8) 创建测试类

    在src目录下创建一个名为 com.zhang.work 的包,在该包下创建 MainApp 测试类,其内容如下:

    package com.zhang.work;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.util.List;
    
    import org.apache.ibatis.io.Resources;
    import org.apache.ibatis.session.SqlSession;
    import org.apache.ibatis.session.SqlSessionFactory;
    import org.apache.ibatis.session.SqlSessionFactoryBuilder;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    import com.zhang.pojo.Student;
    import com.zhang.service.impl.StudentServiceImpl;
    
    public class MainApp {
    
    	public static void main(String[] args) {
    		
    	
    	 ApplicationContext applicationContext  = new ClassPathXmlApplicationContext("applicationContext.xml");
    	
    	 StudentServiceImpl studentService = applicationContext.getBean("studentService", StudentServiceImpl.class);
    	 
    	 //查询所有信息
    	 List<Student> studentList = studentService.findAllStudent();
    	 
    	 for(Student student:studentList) {
    		 System.out.println(student);
    	 }
    	 System.out.println("=========================");
    	 //添加信息
    	 Student s1 = new Student();
    	 s1.setId(4);
    	 s1.setName("小刚");
    	 s1.setSex("男");
    	 s1.setAge(22);
    	 
    	 int addStudent = studentService.addStudent(s1);
    	 System.out.println("添加了"+addStudent+"条数据");
    	 System.out.println("=========================");
    	 studentList = studentService.findAllStudent();
    	 for(Student student:studentList) {
    		 System.out.println(student);
    	 }
    	 
    	}
    }
    
  • 9) 运行结果

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值