Sping整合MyBatis学习笔记

步骤:

1.导入jar包

​    mybatis-spring.jar、spring-tx.jar、spring-aop.jar

​    spring-core.jar、spring-jdbc.jar、spring-context.jar

​    spring-beans.jar、commons-logging.jar、spring-context-support.jar

​    spring-expression.jar、commons-dbcp.jar、commons-pool.jar

​    log4j.jar mysql-connector-java-5.1.40-bin.jar mybatis.jar

2.创建类-表

3.MyBatis配置文件

4.通过mapper.xml将类、表建立映射关系

5.spring配置文件applicationContext.xml

​    通过Spring管理MyBatis的SqlSessionFactory,产生SqlSessionFactory所需要的数据库信息

6.使用Spring-MyBatis整合产物开发程序

​    目标:通过Spring产生 MyBatis最终操作需要的动态mapper对象

​    Spring产生动态mapper对象的三种方法:

​       a.Dao层实现类(继承SqlSessionDaoSupport类)

​       b.省略a中的实现类

​       c.批量产生

代码

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"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    
    <!--  加载dp.properties文件  -->
    <bean id="config" class="org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer">
        <property name="locations">
            <array>
                <value>classpath:dp.properties</value>
            </array>
        </property>
    </bean>

    <!-- 配置数据库信息(替代mybatis中的conf.xml) -->
    <bean id="dataSource2" class="org.apache.commons.dbcp2.BasicDataSource">
        <property name="driverClassName" value="${driver}"/>
        <property name="url" value="${url}"/>
        <property name="username" value="${username}"/>
        <property name="password" value="${password}"/>
    </bean>

    <!-- 在springIOC容器中创建MyBatis的核心类sqlSessionFactory -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource2"/>

        <!-- 加载mapper.xml路径 -->
        <property name="mapperLocations" value="cn/test/mapper/*.xml"/>
    </bean>

    <!-- 开启注解扫描器 -->
<!--    <context:component-scan base-package="cn.test.daoImpl, cn.test.serviceImpl"/>-->
    
    <!--
        批量产生多个mapper
        约定:批量产生的Mapper值在SpingIOC中的id值默认是接口名
     -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>

        <!-- 指定批量产生哪个包中的mapper对象 -->
        <property name="basePackage" value="cn.test.mapper"/>
    </bean>

    <bean id="studentService" class="cn.test.serviceImpl.StudentServiceImpl">
        <property name="studentMapper" ref="studentMapper"/>
    </bean>
</beans>

db.properties
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatisspring
username=root
password=password

log4j.properties
log4j.rootLogger=WARN,stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile=org.apache.log4j.FileAppender
log4j.appender.logfile.File=target/spring.log
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout# Configure logging for testing: optionally with log file

Student.java
package cn.test.entity;

public class Student {
    private int sid;
    private String sname;
    private int sage;

    public Student(){}

    public Student(int sid, String sname, int sage) {
        this.sid = sid;
        this.sname = sname;
        this.sage = sage;
    }

    public int getSid() {
        return sid;
    }

    public void setSid(int sid) {
        this.sid = sid;
    }

    public String getSname() {
        return sname;
    }

    public void setSname(String sname) {
        this.sname = sname;
    }

    public int getSage() {
        return sage;
    }

    public void setSage(int sage) {
        this.sage = sage;
    }
}

StudentMapper
public interface StudentMapper {
    public void addStudent(Student student);
}

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="cn.test.mapper.StudentMapper">
    <select id="addStudent" parameterType="cn.test.entity.Student">
        insert into student values (#{sid}, #{sname}, #{sage})
    </select>
</mapper>

StudentService
public interface StudentService {
    public void addStudent(Student student);
}

StudentServiceImpl.java

public class StudentServiceImpl implements StudentService {
    private StudentMapper studentMapper;
    
    public void setStudentMapper(StudentMapper studentMapper) {
        this.studentMapper = studentMapper;
    }

    @Override
    public void addStudent(Student student) {
        studentMapper.addStudent(student);
    }
}

MyText.java
public class MyTest {
    @Test
    public void test1(){
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        StudentService studentService = (StudentService) context.getBean("studentService");
        Student stu = new Student(4, "ww", 21);
        studentService.addStudent(stu);
    }
}
发布了46 篇原创文章 · 获赞 1 · 访问量 2401

猜你喜欢

转载自blog.csdn.net/weixin_43708069/article/details/104505493