mybatis-Spring

mybatis-spring

回忆mybatis

  • 实体类

    package com.wjj.pojo;
    
    public class User {
        private  Integer id;
        private String name;
        private String pwd;
    
        @Override
        public String toString() {
            return "User{" +
                    "id=" + id +
                    ", name='" + name + '\'' +
                    ", pwd='" + pwd + '\'' +
                    '}';
        }
    }
    
  • 核心配置文件 编写 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>
    
        <typeAliases>
            <package name="com.wjj.pojo"/>
        </typeAliases>
    
        <environments default="development">
            <environment id="development">
                <transactionManager type="JDBC"/>
                <dataSource type="POOLED">
                    <property name="driver" value="com.mysql.jdbc.Driver"/>
                    <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=false&amp;useUnicode=true&amp;characterEncoding=UTF8"/>
                    <property name="username" value="root"/>
                    <property name="password" value="123456"/>
                </dataSource>
            </environment>
        </environments>
    
    
        <mappers>
            <mapper resource="com/wjj/mapper/UserMapper.xml"/>
        </mappers>
    </configuration>
    
  • 接口

    import com.wjj.pojo.User;
    
    import java.util.List;
    
    public interface UserMapper {
        public List<User> selectUsers();
    }
    

    绑定到接口

    <?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.wjj.mapper.UserMapper">
        <select id="selectUsers" resultType="User">
            select * from mybatis.user
        </select>
    </mapper>
    
  • 编写测试类

    public class MyTest {
        @Test
        public void test() throws IOException {
           String resource="mybatis-config.xml";
           InputStream inputStream= Resources.getResourceAsStream(resource);
           SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
            SqlSession sqlSession = sqlSessionFactory.openSession(true);
    
            UserMapper mapper = sqlSession.getMapper(UserMapper.class);
            List<User> userList = mapper.selectUsers();
    
            for (User user : userList) {
                System.out.println(user);
            }
        }
    }
    

1.mybatis-spring

  • 要和 Spring 一起使用 MyBatis,需要在 Spring 应用上下文中定义至少两样东西:一个 SqlSessionFactory 和至少一个数据映射器类。

    在 MyBatis-Spring 中,可使用 SqlSessionFactoryBean来创建 SqlSessionFactorymybatis-spring官方文档入门手册

    1. SqlSessionFactory 需要一个 DataSource(数据源)
      
    2. DataSource:使用spring的数据源替换mybatis的配置 c3p0 dbcp druid.
      这里使用spring提供的jdbc
      
    3. <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
          <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
          <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=false&amp;useUnicode=true&amp;characterEncoding=UTF8"/>
          <property name="username" value="root"/>
          <property name="password" value="123456"/>
      </bean>
      

    image-20260321135659133

    1. 这段操作相当于new故可以替换掉这段

    2. 可以通过application中get出来

      <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
          <property name="dataSource" ref="dataSource" />
      </bean>
      

      image-20260321140253264

    3. 此时我们sqlssion还没有拿到,就用beas 出来实现SqlSessionTemplate

      image-20260321142031125

      <!--SqlSessionTemplate 就是我们mybatis中使用的 sqlSession   -->
          <bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
      <!--只能用构造器注入sqlSessionFactory,无set方法-->
              <constructor-arg index="0" ref="sqlSessionFactory"/>
          </bean>
      
      

      实现接口配置类

      import com.wjj.pojo.User;
      import org.mybatis.spring.SqlSessionTemplate;
      
      import java.util.List;
      
      public class UserMapperImpl implements UserMapper{
          private SqlSessionTemplate sqlSessionTemplate;
          public void setSqlSessionTemplate(SqlSessionTemplate sqlSessionTemplate) {
              this.sqlSessionTemplate = sqlSessionTemplate;
          }
          @Override
          public List<User> selectUsers() {
              return sqlSessionTemplate.getMapper(UserMapper.class).selectUsers();
          }
      }
      
    4. 总的代码流程

    编写数据源配置

    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=false&amp;useUnicode=true&amp;characterEncoding=UTF8"/>
        <property name="username" value="root"/>
        <property name="password" value="123456"/>
    </bean>
    
    
        <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
            <property name="dataSource" ref="dataSource" />
            <!--绑定mybatis配置文件-->
            <property name="configLocation" value="classpath:mybatis-config.xml"/>
    <!--        <-同时<property 中也能配置mybatis  例如注册映射器-->
            <property name="mapperLocations" value="com/wjj/mapper/UserMapper.xml"/>
        </bean>
    

    sqlSessionTemplate

        <bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
    <!--只能用构造器注入sqlSessionFactory,无set方法-->
            <constructor-arg index="0" ref="sqlSessionFactory"/>
        </bean>
    

    注入到spring中

    <bean id="userMapperImpl" class="com.wjj.mapper.UserMapperImpl">
        <property name="sqlSessionTemplate" ref="sqlSessionTemplate"/>
    </bean>
    

    测试

    public class MyTest {
        @Test
        public void test() throws IOException {
    
            ApplicationContext Context = new ClassPathXmlApplicationContext("spring-mapper.xml");
            UserMapperImpl UMP = Context.getBean("userMapperImpl", UserMapperImpl.class);
            for (User user : UMP.selectUsers()) {
                System.out.println(user);
            }
        }
    }
    
    
1.2SqlSessionDaoSupport
  1. SqlSessionDaoSupport` 是一个抽象的支持类,用来为你提供 `SqlSession`。调用 `getSqlSession()` 方法你会得到一个 `SqlSessionTemplate
    
posted @ 2026-03-21 19:14  三咲肘击王  阅读(5)  评论(0)    收藏  举报