Spring5(20) —— 回顾MyBatis

1.整合MyBatis

  1. 导入jar包
    • junit
    • mybatis
    • mysql数据库
    • spring相关
    • AOP织入
    • mybatis-spring【新知识点】
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <parent>
       <artifactId>Spring-Study</artifactId>
       <groupId>com.thhh</groupId>
       <version>1.0-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>

   <artifactId>Spring-10-MyBatis</artifactId>
   <dependencies>
       <!--junit依赖-->
       <dependency>
           <groupId>junit</groupId>
           <artifactId>junit</artifactId>
           <version>4.12</version>
       </dependency>
       <!--数据库依赖-->
       <dependency>
           <groupId>mysql</groupId>
           <artifactId>mysql-connector-java</artifactId>
           <version>5.1.47</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.8.RELEASE</version>
       </dependency>
       <!--spring操作数据库,需要再导入一个spring-jdbc这个依赖-->
       <dependency>
           <groupId>org.springframework</groupId>
           <artifactId>spring-jdbc</artifactId>
           <version>5.2.8.RELEASE</version>
       </dependency>
       <!--AOP织入包,简单理解,支持切入点表达式等等-->
       <dependency>
           <groupId>org.aspectj</groupId>
           <artifactId>aspectjweaver</artifactId>
           <version>1.9.4</version>
       </dependency>
       <!--mybatis-spring整合依赖-->
       <dependency>
           <groupId>org.mybatis</groupId>
           <artifactId>mybatis-spring</artifactId>
           <version>2.0.5</version>
       </dependency>
       <!--lombok依赖-->
       <dependency>
           <groupId>org.projectlombok</groupId>
           <artifactId>lombok</artifactId>
           <version>1.18.12</version>
       </dependency>
   </dependencies>

</project>
  1. 编写配置文件
  2. 测试

2.回忆MyBatis

使用步骤

  1. 编写实体类 (POJO)
  2. 辨析MyBatis核心配置文件 (mybatis-config.xml)
  3. 编写接口 (Dao)
  4. 编写mapper.xml (实现Dao)
  5. 测试

3.代码实现

  • 创建一个新model:Spring-10-MyBatis

  • 在resources文件夹下创建一个 [mybatis-config.xml] 配置文件

    <?xml version="1.0" encoding="UTF8" ?>
    <!DOCTYPE configuration
            PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
            "http://mybatis.org/dtd/mybatis-3-config.dtd">
    
    <!--核心配置文件-->
    <!--配置节点-->
    <configuration>
        <!--类型别名节点-->
        <typeAliases>
            <package name="com.thhh.pojo"/><!--直接包扫描,我们可以使用类名,首字母大小写都可以-->
        </typeAliases>
    
        <!--环境节点-->
        <environments default="development"><!--environments节点的default属性指定配置的众多环境中默认使用哪一个环境-->
            <!--环境1,我们还可以配置其他很多的环境节点-->
            <environment id="development">
                <transactionManager type="JDBC"/><!--事务管理,这里使用的就是JDBC中的事务管理-->
                <dataSource type="POOLED">
                    <!--属性节点,name设置属性名称,value设置属性值-->
                    <!--这里配置的就是JDBC4大参数-->
                    <property name="driver" value="com.mysql.jdbc.Driver"/><!--驱动-->
                    <!--注意:在XML中使不能直接使用&连接参数,我们需要转义,使用&amp;代替&-->
                    <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useUnicode=true&amp;characterEncoding=UTF-8"/><!--数据库的URL-->
                    <property name="username" value="root"/><!--连接数据库的账号-->
                    <property name="password" value="123"/><!--连接数据库的密码-->
                </dataSource>
            </environment>
        </environments>
        <mappers>
            <mapper resource="com/thhh/dao/UserMapper.xml"/>
        </mappers>
    </configuration>
    
  • 按照数据库中的表创建pojo,这里我们就使用mybatis数据库中的user表来回忆

    package com.thhh.pojo;
    
    import lombok.Data;
    
    @Data
    public class User {
        private int id;
        private String name;
        private String pwd;
    }
    
  • 有一个pojo,不管用不用,就去为它创建一个mapper文件,这里就创建一个UserMapper(就是原来Dao中操作user表的UserDao接口)

    package com.thhh.mapper;
    
    import com.thhh.pojo.User;
    
    import java.util.List;
    
    //Dao接口,在mybatis中使用mapper命名来代替dao命名
    public interface UserMapper {
        public List<User> queryUserList();
    }
    
  • 有一个mapper创建了,我们就为其创建一个mapper.xml文件,这里就创建一个UserMapper.xml文件(就是原来Dao接口的实现类UserDaoImpl),在mybatis中我们使用xml文件来实现Dao接口

    <?xml version="1.0" encoding="UTF8" ?>
    <!DOCTYPE mapper
            PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
            "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    
    <mapper>
    
    </mapper>
    

    这个文件创建的时候,我们可以直接去拷贝mybatis-config.xml文件的内容来修改
    在这里插入图片描述

  • 有一个mapper.xml文件,我们就去mybatis核心配置文件mybatis-config.xml中注册一个(这是在告诉mybatis去哪里找SQL语句)

       <mappers>
           <mapper resource="com/thhh/mapper/UserMapper.xml"/>
       </mappers>
    

        mapper注册有3种方式,其中使用class注册最好用,因为使用class注册,既适用于我们使用xml文件写sql,又适用于我们在mapper文件中直接使用注解写sql语句;而resource只支持我们使用xml文件写sql;第3种方式就是包扫描,它的作用等同于为这个整个包的POJO都写了一个class注册

        使用的时候还要注意,整个mybatis中,只有使用resource注册mapper的时候,路径才使用"/“分开,其他的都是使用”."来分隔

  • 为mapper.xml文件绑定接口,这就相当于原来使用java文件实现接口的时候的"implement DAOinterface",这一点很容易忘记,但是在测试的时候会报错提示
    在这里插入图片描述

  • 我们要测试的功能是查询,所以在mapper.xml中使用select节点

在这里插入图片描述

  • 测试
    import com.thhh.mapper.UserMapper;
    import com.thhh.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 test01() throws IOException {
            //获取sqlsession对象,原来将它封装成了工具类
            String resources = "mybatis-config.xml";
            InputStream in = Resources.getResourceAsStream(resources);
            SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
            SqlSession sqlSession = factory.openSession(true);
    
            //测试开始
            UserMapper mapper = sqlSession.getMapper(UserMapper.class);//获取dao实现类对象
            List<User> userList = mapper.queryUserList();//执行dao中的方法
            for (User user : userList) {
                System.out.println(user);
            }
            sqlSession.close();//关闭sqlSession,其实就是将conn归还到pool中方便下次使用
        }
    }
    

在这里插入图片描述

在这里插入图片描述

  • 解决办法:在pom.xml中加上如下配置
        <build>
            <resources>
                <resource>
                    <directory>src/main/resources</directory>
                    <includes>
                        <include>**/*.properties</include>
                        <include>**/*.xml</include>
                    </includes>
                    <filtering>true</filtering>
                </resource>
                <resource>
                    <directory>src/main/java</directory>
                    <includes>
                        <include>**/*.properties</include>
                        <include>**/*.xml</include>
                    </includes>
                    <filtering>true</filtering>
                </resource>
            </resources>
        </build>
    
  • 再次测试
    在这里插入图片描述
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值