知名网站建设定制Spring-Mybatis整合 | 原理分析

💫

🌐Hello World !

文章目录


▌环境搭建

步骤:

导入相关jar包

  • junit
  • mybatis
  • mysql
  • spring
  • aop织入
  • mybatis-spring

环境搭建:

    <dependencies>        <!--junit-->        <dependency>            <groupId>junit</groupId>            <artifactId>junit</artifactId>            <version>4.12</version>        </dependency>        <!--mysql-->        <dependency>            <groupId>mysql</groupId>            <artifactId>mysql-connector-java</artifactId>            <version>8.0.28</version>        </dependency>        <!--mybatis-->        <dependency>            <groupId>org.mybatis</groupId>            <artifactId>mybatis</artifactId>            <version>3.5.2</version>        </dependency>        <!--spring-->        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-webmvc</artifactId>            <version>5.2.0.RELEASE</version>        </dependency>        <!--spring知名网站建设定制操作数据库,需要spring-jdbc-->        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-jdbc</artifactId>            <version>5.1.9.RELEASE</version>        </dependency>        <!--aop织入-->        <dependency>            <groupId>org.aspectj</groupId>            <artifactId>aspectjweaver</artifactId>            <version>1.9.4</version>        </dependency>        <dependency>            <groupId>org.mybatis</groupId>            <artifactId>mybatis-spring</artifactId>            <version>2.0.2</version>        </dependency>    </dependencies>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43

▌Mybatis流程回顾

  • 知名网站建设定制编写实体类
package com.wei.pojo;import lombok.Data;@Datapublic class User {    private int id;    private String name;    private String pwd;}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 知名网站建设定制编写知名网站建设定制核心配置文件
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configuration        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"        "http://mybatis.org/dtd/mybatis-3-config.dtd"><!--configuration核心配置文件--><configuration>    <!--知名网站建设定制引入外部配置文件-->    <!--<properties resource="jdbc.properties"/>-->    <settings>        <!--知名网站建设定制标准日志工厂实现-->        <setting name="logImpl" value="LOG4J"/>    </settings>    <typeAliases>        <package name="com.wei.pojo.User"/>    </typeAliases>    <!--环境配置-->    <environments default="development">        <environment id="development">            <!--事物管理-->            <transactionManager type="JDBC"/>            <dataSource type="POOLED">                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>                <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=true&amp;useUnicode=true&amp;characterEncoding=UTF-8"/>                <property name="username" value="root"/>                <property name="password" value="root"/>            </dataSource>        </environment>    </environments>    <mappers>        <mapper class="com.wei.Mapper.UserMapper"/>    </mappers></configuration>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 编写接口
package com.wei.Mapper;import com.wei.pojo.User;import java.util.List;public interface UserMapper {    public List<User> selectUser();}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 编写Mapper映射文件
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"        "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><!--namespace=知名网站建设定制绑定一个对应的Dao/Mapper接口--><mapper namespace="com.wei.Mapper.UserMapper">    <!--select知名网站建设定制查询语句查询全部用户-->    <select id="selectUser" resultType="com.wei.pojo.User">        select * from mybatis.user;    </select></mapper>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 测试
import com.wei.Mapper.UserMapper;import com.wei.pojo.User;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.junit.Test;import java.io.IOException;import java.io.InputStream;import java.util.List;public class MyTest {   @Test    public void test() throws IOException {       String resources = "mybatis-config.xml";       //读取mybatis-config.xml知名网站建设定制主配置文件      InputStream in = Resources.getResourceAsStream(resources);      SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(in);       SqlSession sqlSession = sessionFactory.openSession(true);       UserMapper mapper = sqlSession.getMapper(UserMapper.class);      List<User> userList = mapper.selectUser();      for (User user : userList) {         System.out.println(user);      }      sqlSession.close();   }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32

▌Mybatis-Spring整合

方式

  • 要和 Spring 一起使用 MyBatis,需要在 Spring 应用上下文中定义至少两样东西:一个 SqlSessionFactory 和至少一个数据映射器类。
  • 在 MyBatis-Spring 中,可使用 SqlSessionFactoryBean来创建 SqlSessionFactory。 要配置这个工厂 bean,只需要把下面代码放在 Spring 的 XML 配置文件中
  • 在基础的 MyBatis 用法中,是通过 SqlSessionFactoryBuilder 来创建 SqlSessionFactory 的。而在 MyBatis-Spring 中,则使用 SqlSessionFactoryBean 来创建
  • 编写UserMapper接口类
package com.wei.Mapper;import com.wei.pojo.User;import java.util.List;public interface UserMapper {    public List<User> selectUser();}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • UserMapper.xml映射文件
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"        "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><!--namespace=绑定一个对应的Dao/Mapper接口--><mapper namespace="com.wei.Mapper.UserMapper">    <!--select查询语句查询全部用户-->    <select id="selectUser" resultType="com.wei.pojo.User">        select * from mybatis.user;    </select></mapper>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • UserMapperImpl实现类,接口增加实现类
package com.wei.Mapper;import com.wei.pojo.User;import org.mybatis.spring.SqlSessionTemplate;import java.util.List;public class UserMapperImpl implements UserMapper{    //以前来有操作使用SqlSession执行,现在所有操作在SqlSessionTemplate    private SqlSessionTemplate sqlSession;    public void setSqlSession(SqlSessionTemplate sqlSession) {        this.sqlSession = sqlSession;    }    public List<User> selectUser(){        UserMapper mapper = sqlSession.getMapper(UserMapper.class);        return mapper.selectUser();    }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • User接口
package com.wei.pojo;import lombok.Data;@Datapublic class User {    private int id;    private String name;    private String pwd;}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • Mybatis-config.xml核心配置文件
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configuration        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"        "http://mybatis.org/dtd/mybatis-3-config.dtd"><!--configuration核心配置文件--><configuration>    <!--引入外部配置文件-->    <!--<properties resource="jdbc.properties"/>-->    <settings>        <!--标准日志工厂实现-->        <setting name="logImpl" value="LOG4J"/>    </settings>    <typeAliases>        <package name="com.wei.pojo"/>    </typeAliases>    <!--环境配置-->    <environments default="development">        <environment id="development">            <!--事物管理-->            <transactionManager type="JDBC"/>            <dataSource type="POOLED">                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>                <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=true&amp;useUnicode=true&amp;characterEncoding=UTF-8"/>                <property name="username" value="root"/>                <property name="password" value="root"/>            </dataSource>        </environment>    </environments><!--    <mappers>--><!--        <mapper class="com.wei.Mapper.UserMapper"/>--><!--    </mappers>--></configuration>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • log4j.properties资源包
log4j.properties#将等级为DEBUG的日志信息输出到console和file两个目的地log4j.rootLogger=DEBUG,console,file#控制台输出的相关设置log4j.appender.console=org.apache.log4j.ConsoleAppenderlog4j.appender.console.Target=System.outlog4j.appender.console.Threshold=DEBUGlog4j.appender.console.layout=org.apache.log4j.PatternLayoutlog4j.appender.console.layout.ConversionPattern=【%c】-%m%n#文件输出的相关配置log4j.appender.file=org.apache.log4j.RollingFileAppenderlog4j.appender.file.File=./log/wei.loglog4j.appender.file.MaxFileSize=10mblog4j.appender.file.Threshold=DEBUGlog4j.appender.file.layout=org.apache.log4j.PatternLayoutlog4j.appender.file.layout.ConversionPattern=【%p】[%d{yy-MM-dd}【%c】%m%n#日志输出级别log4j.logger.org.mybatis=DEBUGlog4j.logger.java.sql=DEBUGlog4j.logger.java.sql.Statement=DEBUGlog4j.logger.java.sql.ResultSet=DEBUGlog4j.logger.java.sql.PreparedStatement=DEBUG
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • ​ spring-dao.xml(将sqlSessionFactory等bean注入到spring框架中,来管理持久层中的操作)
<?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">    <!--DataSource:使用Spring的数据源替换Mybatis的配置-->    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">        <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/>        <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=true&amp;useUnicode=true&amp;characterEncoding=UTF-8"/>        <property name="username" value="root"/>        <property name="password" value="root"/>    </bean>    <!--sqlSessionFactory-->    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">        <!--配置数据源-->        <property name="dataSource" ref="dataSource"/>        <!--        当你需要使用mybatis-config.xml 配置文件的时候你就需要配置config-location,        config-location的作用是确定mybatis-config.xml文件位置的,        而mapper-locations是用来注册你写的xxxmapper.xml文件。如果你使用了mybatis-config.xml,        并且里面配置了mapper,那就不需要mapper-locations        mapper-locations是一个定义mapper接口位置的属性,在xxx.yml或xxx.properties下配置,作用是实现mapper接口配置        -->        <!--绑定Mybatis配置文件-->        <property name="configLocation" value="classpath:mybatis-config.xml"/>        <property name="mapperLocations" value="classpath:com/wei/Mapper/*.xml"/>    </bean>    <!--SqlSessionTemplate:就是我们使用的sqlSessiion-->    <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">        <!--只能使用构造器注入,应为没有set方法-->        <constructor-arg index="0" ref="sqlSessionFactory"/>    </bean>    <!--注入UserMapperImpl实现类-->    <bean id="userMpaaer" class="com.wei.Mapper.UserMapperImpl">        <property name="sqlSession" ref="sqlSession"/>    </bean></beans>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • ​ ApplicationContext.xml(配置Spring框架所需的信息)
<?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">    <!--import,一般用于团队开发中,可以将多个配置文件导入合并为一个-->    <import resource="spring-dao.xml"/>    <!--注入UserMapperImpl实现类-->    <bean id="userMpaaer" class="com.wei.Mapper.UserMapperImpl">        <property name="sqlSession" ref="sqlSession"/>    </bean></beans>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 测试
import com.wei.Mapper.UserMapper;import com.wei.pojo.User;import org.junit.Test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import java.io.IOException;public class MyTest {   @Test    public void test() throws IOException {       //解析beans.xml文件,生成管理相应的Bean对象       ApplicationContext context = new ClassPathXmlApplicationContext("ApplicationContext.xml");//       UserMapper userMpaaer = context.getBean("userMpaaer", UserMapper.class);       UserMapper userMpaaer = (UserMapper) context.getBean("userMpaaer");       for (User user: userMpaaer.selectUser()){           System.out.println(user);       }   }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

SqlSessionTemplate分析

SqlSessionTemplate 是 MyBatis-Spring 的核心。作为 SqlSession 的一个实现,这意味着可以使用它无缝代替你代码中已经在使用的 SqlSessionSqlSessionTemplate 是线程安全的,可以被多个 DAO 或映射器所共享使用

  • 使用 SqlSessionFactory 作为构造方法的参数来创建 SqlSessionTemplate 对象
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">  <constructor-arg index="0" ref="sqlSessionFactory" /></bean>
  • 1
  • 2
  • 3
@Configurationpublic class MyBatisConfig {  @Bean  public SqlSessionTemplate sqlSession() throws Exception {    return new SqlSessionTemplate(sqlSessionFactory());  }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 现在,这个 bean 就可以直接注入到你的 DAO bean 中了。你需要在你的 bean 中添加一个 SqlSession 属性,就像下面这样:
public class UserDaoImpl implements UserDao {  private SqlSession sqlSession;  public void setSqlSession(SqlSession sqlSession) {    this.sqlSession = sqlSession;  }  public User getUser(String userId) {    return sqlSession.selectOne("org.mybatis.spring.sample.mapper.UserMapper.getUser", userId);  }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 注入Spring:按下面这样,注入 SqlSessionTemplate
<bean id="userDao" class="org.mybatis.spring.sample.dao.UserDaoImpl">  <property name="sqlSession" ref="sqlSession" /></bean>
  • 1
  • 2
  • 3
  • SqlSessionTemplate 还有一个接收 ExecutorType 参数的构造方法。这允许你使用如下 Spring 配置来批量创建对象,例如批量创建一些 SqlSession:
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">  <constructor-arg index="0" ref="sqlSessionFactory" />  <constructor-arg index="1" value="BATCH" /></bean>
  • 1
  • 2
  • 3
  • 4
@Configurationpublic class MyBatisConfig {  @Bean  public SqlSessionTemplate sqlSession() throws Exception {    return new SqlSessionTemplate(sqlSessionFactory(), ExecutorType.BATCH);  }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 现在所有的映射语句可以进行批量操作了,可以在 DAO 中编写如下的代码
public class UserService {  private final SqlSession sqlSession;  public UserService(SqlSession sqlSession) {    this.sqlSession = sqlSession;  }  public void insertUsers(List<User> users) {    for (User user : users) {      sqlSession.insert("org.mybatis.spring.sample.mapper.UserMapper.insertUser", user);    }  }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

注意,只需要在希望语句执行的方法与 SqlSessionTemplate 中的默认设置不同时使用这种配置。

这种配置的弊端在于,当调用这个方法时,不能存在使用不同 ExecutorType 的进行中的事务。要么确保对不同 ExecutorTypeSqlSessionTemplate 的调用处在不同的事务中,要么完全不使用事务

configLocation & mapperLocations分析

  • Spring-dao.xml中
<!--绑定Mybatis配置文件--><property name="configLocation" value="classpath:mybatis-config.xml"/><property name="mapperLocations" value="classpath:com/wei/Mapper/*.xml"/>
  • 1
  • 2
  • 3
  • configLocation :即mybatis-config.xml核心配置文件

当你需要使用mybatis-config.xml 配置文件的时候你就需要配置config-location,config-location的作用是确定mybatis-config.xml文件位置

  • mapperLocations:dao接口类的映射文件

是用来注册所写的xxxmapper.xml映射文件

SqlSessionDaoSupport方式

  • 创建User类
package com.wei.pojo;import lombok.Data;@Datapublic class User {    private int id;    private String name;    private String pwd;}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • UserMapper接口
package com.wei.Mapper;import com.wei.pojo.User;import java.util.List;public interface UserMapper {    public List<User> selectUser();}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • UserMapper.xml映射文件
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"        "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><!--namespace=绑定一个对应的Dao/Mapper接口--><mapper namespace="com.wei.Mapper.UserMapper">    <!--select查询语句查询全部用户-->    <select id="selectUser" resultType="com.wei.pojo.User">        select * from mybatis.user;    </select></mapper>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • Spring-dao.xml(配置、整合Mybatis)
<?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">    <!--DataSource:使用Spring的数据源替换Mybatis的配置-->    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">        <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/>        <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=true&amp;useUnicode=true&amp;characterEncoding=UTF-8"/>        <property name="username" value="root"/>        <property name="password" value="root"/>    </bean>    <!--sqlSessionFactory-->    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">        <!--配置数据源-->        <property name="dataSource" ref="dataSource"/>        <!--        当你需要使用mybatis-config.xml 配置文件的时候你就需要配置config-location,        config-location的作用是确定mybatis-config.xml文件位置的,        而mapper-locations是用来注册你写的xxxmapper.xml文件。如果你使用了mybatis-config.xml,        并且里面配置了mapper,那就不需要mapper-locations        mapper-locations是一个定义mapper接口位置的属性,在xxx.yml或xxx.properties下配置,作用是实现mapper接口配置        -->        <!--绑定Mybatis配置文件-->        <property name="configLocation" value="classpath:mybatis-config.xml"/>        <property name="mapperLocations" value="classpath:com/wei/Mapper/*.xml"/>    </bean></beans>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • UserMapperImpl实现类,注入到spring中(applicationContext.xml)
package com.wei.Mapper;import com.wei.pojo.User;import org.mybatis.spring.support.SqlSessionDaoSupport;import java.util.List;public class UserMapperImpl2 extends SqlSessionDaoSupport implements UserMapper{    @Override    public List<User> selectUser() {//        SqlSession sqlSession = getSqlSession();//        UserMapper mapper = sqlSession.getMapper(UserMapper.class);        return getSqlSession().getMapper(UserMapper.class).selectUser();    }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • applicationContext.xml(配置Spring框架所需的信息)
<?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">    <!--import,一般用于团队开发中,可以将多个配置文件导入合并为一个-->    <import resource="spring-dao.xml"/>    <!--注入UserMapperImpl实现类-->    <bean id="userMpaaer" class="com.wei.Mapper.UserMapperImpl">        <property name="sqlSession" ref="sqlSession"/>    </bean>    <bean id="userMapper2" class="com.wei.Mapper.UserMapperImpl2">        <property name="sqlSessionFactory" ref="sqlSessionFactory"/>    </bean></beans>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • MyTest测试类
import com.wei.Mapper.UserMapper;import com.wei.pojo.User;import org.junit.Test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import java.io.IOException;public class MyTest {   @Test    public void test() throws IOException {       //解析beans.xml文件,生成管理相应的Bean对象       ApplicationContext context = new ClassPathXmlApplicationContext("ApplicationContext.xml");//       UserMapper userMpaaer = context.getBean("userMpaaer", UserMapper.class);       UserMapper userMpaaer = (UserMapper) context.getBean("userMpaaer");       for (User user: userMpaaer.selectUser()){           System.out.println(user);       }   }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

SqlSessionDaoSupport分析

SqlSessionDaoSupport 是一个抽象的支持类,用来为你提供 SqlSession。调用 getSqlSession() 方法你会得到一个 SqlSessionTemplate,之后可以用于执行 SQL 方法,就像下面这样:

public class UserDaoImpl extends SqlSessionDaoSupport implements UserDao {  public User getUser(String userId) {    return getSqlSession().selectOne("org.mybatis.spring.sample.mapper.UserMapper.getUser", userId);  }}
  • 1
  • 2
  • 3
  • 4
  • 5

在这个类里面,通常更倾向于使用 MapperFactoryBean,因为它不需要额外的代码。但是,如果你需要在 DAO 中做其它非 MyBatis 的工作或需要一个非抽象的实现类,那么这个类就很有用了。

SqlSessionDaoSupport 需要通过属性设置一个 sqlSessionFactorySqlSessionTemplate。如果两个属性都被设置了,那么 SqlSessionFactory 将被忽略。

假设类 UserMapperImplSqlSessionDaoSupport 的子类,可以编写如下的 Spring 配置来执行设置:

<bean id="userDao" class="org.mybatis.spring.sample.dao.UserDaoImpl">  <property name="sqlSessionFactory" ref="sqlSessionFactory" /></bean>
  • 1
  • 2
  • 3

🌼 结语:创作不易,如果觉得博主的文章赏心悦目,还请——点赞👍收藏⭐️评论📝冲冲冲🤞


网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发