Spring 整合 MyBatis 使用

1、搭建 Mybatis 环境

  • 导入 Mybatis 依赖的jar包
       <dependency>
           <groupId>org.mybatis</groupId>
           <artifactId>mybatis</artifactId>
           <version>3.5.9</version>
       </dependency>
       <!-- 导入 Junit 依赖  -->
       <dependency>
           <groupId>junit</groupId>
           <artifactId>junit</artifactId>
           <version>4.13</version>
           <scope>test</scope>
       </dependency>
       <!-- 导入 Mysql 依赖  -->
       <dependency>
           <groupId>mysql</groupId>
           <artifactId>mysql-connector-java</artifactId>
           <version>8.0.23</version>
           <scope>runtime</scope>
       </dependency>
  • 编写数据库配置文件 mysqlDb.properties
driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/hukan?useSSL=true&useUnicode=true&characterEncoding=UTF-8
username=root
password=123456
  • 编写 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>
    <properties resource="mysqlDb.properties"/>
    <typeAliases>
        <package name="com.hukanmasheng.pojo"/>
    </typeAliases>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <!-- 数据库引擎 -->
                <property name="driver" value="${driver}"/>
                <!-- 数据库地址 -->
                <property name="url" value="${url}"/>
                <!-- 用户名 -->
                <property name="username" value="${username}"/>
                <!-- 密码 -->
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
    </environments>
</configuration>
  • 编写获取 SqlSeesion 的工具类
public class MybatisUtils {   
   private static SqlSessionFactory sqlSessionFactory;
    static{
        String resource="mybatis-config.xml";
        InputStream inputStream = null;
        try {
            inputStream = Resources.getResourceAsStream(resource);
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    /*
     * 获取 SqlSession
     * */
    public static SqlSession getSqlSession()
    {
        return sqlSessionFactory.openSession(true);
    }
}
  • 编写数据库实体类与对应的Mapper和xml配置文件
    实体类代码如下:

    public class Employee implements Serializable {
        /**
         * 员工 ID
         */
        private String eid;
        /**
         * 员工姓名
         */
        private String name;
        /**
         * 所属部门
         */
        private int departmentId;
        /**
         * 手机号
         */
        private String telPhone;
        /**
         * 年龄
         */
        private int age;
    }
    

    Mapper 代码如下:

    public interface EmployeeMapper {
           List<Employee> findAll();
    }
    

    mapper.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.hukanmasheng.mapper.EmployeeMapper">
        <select id="findAll" resultType="Employee">
            select * from mybatis_employee
        </select>
    </mapper>
    
  • 在 mybatis-config.xml 中注册实体类mapper

    <mappers>
        <mapper resource="mapper/EmployeeMapper.xml"/>
    </mappers>
  • 编写测试类,测试配置是否成功
public class Mytest {
    @Test
    public void test1(){
        SqlSession ss = MybatisUtils.getSqlSession();
        EmployeeMapper mapper = ss.getMapper(EmployeeMapper.class);
        List<Employee> list = mapper.findAll();
        for(Employee ee:list) {
            System.out.println(ee);
        }
    }
}

执行成功
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BmKr19pZ-1647919105083)(img.png)]

2、mybatis-spring 快速入门

  • 导入Spring需要的jar包
<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-webmvc</artifactId>
  <version>5.3.17</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
    <version>5.3.12</version>
</dependency>
<dependency>
   <groupId>org.apache.geronimo.bundles</groupId>
   <artifactId>aspectjweaver</artifactId>
   <version>1.6.8_2</version>
</dependency>
<!-- 关键 jar 包 -->
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis-spring</artifactId>
    <version>2.0.7</version>
</dependency>
方式一 sqlSessionFactory + sqlSessionTemplate

· spring-sqlsession.xml 配置

  • 1 编写数据源配置
        <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/hukan?useSSL=true&useUnicode=true&characterEncoding=UTF-8"/>
            <!-- 用户名 -->
            <property name="username" value="root"/>
            <!-- 密码 -->
            <property name="password" value="123456"/>
        </bean>
    
  • 2 sqlSessionFactory
  •     <!--sqlSessionFactory-->
        <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
            <property name="dataSource" ref="dataSource"/>
            <!--绑定 mybatis 配置文件 -->
            <property name="configLocation" value="classpath:mybatis-config.xml" />
            <!--自 1.3.0 版本开始,新增的 configuration 属性能够在没有对应的 MyBatis XML 配置文件的情况下,直接设置 Configuration 实例-->
           <!-- <property name="configuration">
                <bean class="org.apache.ibatis.session.Configuration">
                    <property name="mapUnderscoreToCamelCase" value="true"/>
                </bean>
            </property>-->
            <property name="mapperLocations" value="classpath*:mapper/*.xml" />
        </bean>
    
  • 3 sqlSessionTemplate
        <!--sqlSession-->
        <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
            <constructor-arg index="0" ref="sqlSessionFactory" />
        </bean>
    
  • 4 需要给 Mapper 接口编写实现类
    public class EmployeeMapperImpl implements EmployeeMapper {
        private SqlSessionTemplate sqlSession;
    
        public void setSqlSession(SqlSessionTemplate sqlSession) {
            this.sqlSession = sqlSession;
        }
    
        public List<Employee> findAll() {
            EmployeeMapper mapper = sqlSession.getMapper(EmployeeMapper.class);
            return mapper.findAll();
        }
    }
    
  • 5 将 Mapper实现类注册到 Spring
     <bean id="employeeMapper" class="com.hukanmasheng.mapper.EmployeeMapperImpl">
            <property name="sqlSession" ref="sqlSession" />
        </bean>
    
  • 6 编写测试类
    @Test
    public void test2()
    {
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        EmployeeMapperImpl mapper = (EmployeeMapperImpl)context.getBean("employeeMapper");
        List<Employee> list = mapper.findAll();
        for(Employee ee:list) {
            System.out.println(ee);
        }
    }

执行成功
在这里插入图片描述

方式二:SqlSessionDaoSupport

这种配置更简单点,可以省去 SqlSessionTemplate 的配置,交给 SqlSessionDaoSupport 去创建。

SqlSessionDaoSupport 是一个抽象的支持类,用来为你提供 SqlSession。调用 getSqlSession() 方法你会得到一个 SqlSessionTemplate

  • 1 编写数据源配置 同方法一
  • 2 sqlSessionFactory 同方法二
  • 3 编写 Mapper 实现类,继承 SqlSessionDaoSupport 抽象类,代码如下:
    public class EmployeeDaoSupportImpl extends SqlSessionDaoSupport implements EmployeeMapper{
        public List<Employee> findAll() {
            EmployeeMapper mapper = getSqlSession().getMapper(EmployeeMapper.class);
            return mapper.findAll();
        }
    }
    
  • 4 编写测试类
    @Test
    public void testSqlSessionDaoSupport()
    {
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        EmployeeDaoSupportImpl mapper = (EmployeeDaoSupportImpl)context.getBean("employeeDaoSupportMapper");
        List<Employee> list = mapper.findAll();
        for(Employee ee:list) {
            System.out.println(ee);
        }
    }

执行成功
在这里插入图片描述

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值