zoukankan      html  css  js  c++  java
  • 第一次使用MyBatis

    MyBatis学习第一步

    一:

    我们要导入maven依赖置于pom.xml中:

    我们需要mysql与mybatis的依赖 maven仓库地址

    <!--        mysql-->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>8.0.22</version>
            </dependency>
     <!--        mybatis-->
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis</artifactId>
                <version>3.5.6</version>
            </dependency>
    

    毫无疑问学一门新知识他的官方文档是必不可少的,mybatis官方文档

    image-20210117124135372

    二:

    XML 配置文件中包含了对 MyBatis 系统的核心设置,包括获取数据库连接实例的数据源(DataSource)以及决定事务作用域和控制方式的事务管理器(TransactionManager)。我们来配置其核心文件。

    driver, url, username, password 为主动配置因素

    <?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?&amp;useUnicode=true&amp;characterEncoding=UTF-8&amp;serverTimezone=GMT%2B8"/>
                    <property name="username" value="root"/>
                    <property name="password" value="123456"/>
                </dataSource>
            </environment>
        </environments>
        <mappers>
            <mapper resource="com/wang/dao/UserMapper.xml"  />
        </mappers>
    </configuration>
    

    2.1

    建议文件名字与官方一致

    image-20210117125042290

    2.2

    • 从 XML 中构建 SqlSessionFactory

    • 每个基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为核心的。SqlSessionFactory 的实例可以通过 SqlSessionFactoryBuilder 获得。而 SqlSessionFactoryBuilder 则可以从 XML 配置文件或一个预先配置的 Configuration 实例来构建出 SqlSessionFactory 实例。

      从 XML 文件中构建 SqlSessionFactory 的实例非常简单,建议使用类路径下的资源文件进行配置。 但也可以使用任意的输入流(InputStream)实例,比如用文件路径字符串或 file:// URL 构造的输入流。MyBatis 包含一个名叫 Resources 的工具类,它包含一些实用方法,使得从类路径或其它位置加载资源文件更加容易。

      public class MybatisUtils {
      
          private static SqlSessionFactory sqlSessionFactory;
          static{
                //使用MyBatis第一步, 获取sqlSessionFactory
              try {
                  String resource = "mybatis-config.xml";
                  InputStream inputStream = Resources.getResourceAsStream(resource);
                   sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
              } catch (IOException e) {
                  e.printStackTrace();
              }
          }
          //既然有了SqlSessionFactory,顾名思义,我们就可以从中获得SqlSession的实列
          //SqlSession 完全包含了面向数据库执行SQL命令所需的所有方法
          public static SqlSession getSqlSession(){
              return sqlSessionFactory.openSession();
          }
      }
      

    image-20210117141908683

    三:

    探究已映射的 SQL 语句,接下俩我们做一个用户查询的例子:


    3.1

    首先准备好数据库

    image-20210117142600128

    建立相应的实体类

    image-20210117142455155

    建立相应的Mapper

    userDao

    public interface  UserDao  {
        List<User> getUserList();
    }
    
    

    UserMapper

    <?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.wang.dao.UserDao">
        <select id="getUserList" resultType="com.wang.pojo.User">
        select * from mybatis.user
      </select>
    </mapper>
    

    这里的Dao均为更名为Mapper, id为方法名 , namespace为全限定名,resultType 为结果集类型

    3.2

    最后我们进行测试

    public class UserDaoTest {
        @Test
            public void test(){
                //第一步,获得sqlSession对象
                SqlSession sqlSession=null;
                try {
                    sqlSession = MybatisUtils.getSqlSession();
                    UserDao mapper = sqlSession.getMapper(UserDao.class);
                    List<User> userList = mapper.getUserList();
                    for (User user:userList) {
                        System.out.println(user);
                    }
                }catch (Exception e){
                    e.printStackTrace();
                }
                finally {
                    //关闭sqlSession
                    sqlSession.close();
                }
        }
    }
    

    四:你可能遇到的错误

    • 配置文件没有注册
    • 绑定接口不对
    • 方法名不对
    • 返回类型不对
    • Maven导出资源问题
    • 核心配置文件中不能有中文注释
    • jdbc缺少时区配置
  • 相关阅读:
    shell脚本之for循环
    shell脚本小集锦
    Java构建指定大小文件
    IntelliJ+Maven+Spring+Tomcat项目搭建(MAC)
    Git下基本命令操作
    Mac下IntelliJ的Git、GitHub配置及使用
    Git下的.DS_Store文件
    Mac下GitHub以及GitHub Desktop使用实战
    idea快捷键
    汉字获取首字符
  • 原文地址:https://www.cnblogs.com/IanIan/p/14288936.html
Copyright © 2011-2022 走看看