Mybatis_03:第一个Mybatis程序

3、第一个Mybatis程序

3.1、环境搭建

  • 1、创建数据库并创建表

    • -- 创建数据库Mybatis
      CREATE DATABASE `MyBatis`
      
      -- 创建user表
      CREATE TABLE `user` (
        `id` int(11) NOT NULL,
        `username` varchar(255) DEFAULT NULL,
        `password` varchar(255) DEFAULT NULL,
        PRIMARY KEY (`id`)
      ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
      
    • 连接数据库

  • 2、导入依赖Jar包

    • <dependencies>
      <!-- 添加依赖mysql-connector-java驱动包以连接数据库-->
          <dependency>
              <groupId>mysql</groupId>
              <artifactId>mysql-connector-java</artifactId>
              <version>8.0.25</version>
           </dependency>
      <!-- 添加依赖使用框架集合:Mybatis-->
      <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
          <dependency>
              <groupId>org.mybatis</groupId>
              <artifactId>mybatis</artifactId>
              <version>3.5.9</version>
          </dependency>
      <!-- 添加依赖使用junit单元测试-->
          <dependency>
              <groupId>junit</groupId>
              <artifactId>junit</artifactId>
              <version>4.12</version>
          </dependency>
      </dependencies>
      
    • 创建子项目

3.2、创建模块

  • 3、在resources资源目录中配置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>
          <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?useUnicode=true&amp;characterEncoding=utf-8"/>
                      <property name="username" value="root"/>
                      <property name="password" value="123456"/>
                  </dataSource>
              </environment>
          </environments>
          <mappers>
              <mapper resource="zhang/Dao/Usermapper.xml"/>
          </mappers>
      </configuration>
      
  • 4、编写封装工具类

    • package zhang.Utils;
      
      
      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 java.io.IOException;
      import java.io.InputStream;
      
      public class MyBatisUtils {
          private static SqlSessionFactory sqlSessionFactory;
      
          //使用Mybatis获取sqlSessionFactory对象
          static {
              try {
                  String resource = "mybatis-config.xml";
                  InputStream inputStream = Resources.getResourceAsStream(resource);
                  //提高sqlSessionFactory作用域
                  sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
              } catch (IOException e) {
                  e.printStackTrace();
              }
          }
      
      
          public static SqlSession getsqlSession(){
              return sqlSessionFactory.openSession();
          }
      }
      
  • 5、创建对应数据库实体类

    • package zhang.Pojo;
      
      public class user {
          private int id;
          private String username;
          private String password;
      
          public user() {
          }
      
          public user(int id, String username, String password) {
              this.id = id;
              this.username = username;
              this.password = password;
          }
      
          public int getId() {
              return id;
          }
      
          public void setId(int id) {
              this.id = id;
          }
      
          public String getUsername() {
              return username;
          }
      
          public void setUsername(String username) {
              this.username = username;
          }
      
          public String getPassword() {
              return password;
          }
      
          public void setPassword(String password) {
              this.password = password;
          }
      
      }
      
      
  • 6、实现数据库查询底层接口

    • 编写UserDao接口
    package zhang.Dao;
    
    import zhang.Pojo.user;
    
    import java.util.List;
    
    public interface UserDao {
        List<user> getUserlist();
    }
    
    
    • 编写Usermapper.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="zhang.Dao.UserDao">
        <select id="getUserlist" resultType="zhang.Pojo.user">
            select * from mybatis.user
        </select>
    </mapper>
    

3.3、测试

  • 7、编写测试类

    • import org.apache.ibatis.session.SqlSession;
      import org.junit.Test;
      import zhang.Dao.UserDao;
      import zhang.Pojo.user;
      import zhang.Utils.MyBatisUtils;
      
      import java.util.List;
      
      public class Usertest {
          @Test
          public void test(){
      
              SqlSession sqlSession = MyBatisUtils.getsqlSession();
              UserDao userDao = sqlSession.getMapper(UserDao.class);
              List<user> getuserliset = userDao.getUserlist();
      
      
              for (zhang.Pojo.user user:getuserliset) {
                  System.out.print(""+user.getId());
                  System.out.print(" "+user.getUsername());
                  System.out.println(" "+user.getPassword());
              }
      
              sqlSession.close();
          }
      }
      
      
    • 实现具体结果

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-f0wvlHsg-1663506052925)(D:\32838\Documents\SSM框架整合.assets\image-20220517205042983.png)]

3.4、解决bug以及一些自己的理解

  • org.apache.ibatis.binding.BindingException: Type interface zhang.Dao.UserDao is not known to the MapperRegistry.(没有注册配置文件)
    • 如果出现ExceptionInInitializerError报错时,检查xml文件中是否写有注释,因为乱码存在,所以这时需要修改文件的字符集编码为UTF-8。

在这里插入图片描述

  • ERROR EXIST zhang.Dao.Usermapper.xml

    • 解决办法:其中maven创建的项目由于约定大于配置,可能导致在java包下的配置文件无法导出。在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>
      
  • 返回类型不对。

  • 绑定接口错误。

  • 对用方法名错误。
    在这里插入图片描述

  • 心得:关于创建的第一个Mybatis程序,其底层是实现Dao接口中的方法,连接数据库,查询,返回结果集等一列操作。其MyBatis封装数据库查询操作。假设创建对应接口实现类UserDaoImpl,MyBatis的namespace对应UserDaoImpl实现接口,如此的话就需实现接口方法,也就是xml文件中的id,同时返回结果集对应Result对象。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值