zoukankan      html  css  js  c++  java
  • Mybatis(二):怎样使用Mybatis

    一、创建项目(本文以Idea基于Maven构建的项目为例)

    • New——>Project

    • 笔者这里是选择自己本地的Maven及配置

    • 最后点击Finish即可

    二、在配置文件中添加依赖包

    • pom.xml配置文件中添加Mybatis、JDBC驱动、log4j日志管理的包依赖
    • 完整代码如下:
    <?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">
      <modelVersion>4.0.0</modelVersion>
    
      <groupId>com.zhurouwangzi</groupId>
      <artifactId>MybatisDemo</artifactId>
      <version>1.0-SNAPSHOT</version>
    
      <name>MybatisDemo</name>
      <!-- FIXME change it to the project's website -->
      <url>http://www.example.com</url>
    
      <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.7</maven.compiler.source>
        <maven.compiler.target>1.7</maven.compiler.target>
        <!--mybatis版本-->
        <mybatis.version>3.2.7</mybatis.version>
        <!--log4j版本-->
        <slf4j.version>1.6.6</slf4j.version>
        <log4j.version>1.2.12</log4j.version>
      </properties>
    
      <dependencies>
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>4.11</version>
          <scope>test</scope>
        </dependency>
    
        <!-- mybatis核心包 -->
        <dependency>
          <groupId>org.mybatis</groupId>
          <artifactId>mybatis</artifactId>
          <version>${mybatis.version}</version>
        </dependency>
        <!-- mysql驱动包 -->
        <dependency>
          <groupId>mysql</groupId>
          <artifactId>mysql-connector-java</artifactId>
          <version>5.1.29</version>
        </dependency>
    
        <!-- 日志文件管理包 -->
        <!-- log start -->
        <dependency>
          <groupId>log4j</groupId>
          <artifactId>log4j</artifactId>
          <version>${log4j.version}</version>
        </dependency>
        <dependency>
          <groupId>org.slf4j</groupId>
          <artifactId>slf4j-api</artifactId>
          <version>${slf4j.version}</version>
        </dependency>
        <dependency>
          <groupId>org.slf4j</groupId>
          <artifactId>slf4j-log4j12</artifactId>
          <version>${slf4j.version}</version>
        </dependency>
        <dependency>
          <groupId>org.junit.jupiter</groupId>
          <artifactId>junit-jupiter-api</artifactId>
          <version>RELEASE</version>
          <scope>compile</scope>
        </dependency>
      </dependencies>
    
      <build>
        <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
          <plugins>
            <!-- clean lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#clean_Lifecycle -->
            <plugin>
              <artifactId>maven-clean-plugin</artifactId>
              <version>3.1.0</version>
            </plugin>
            <!-- default lifecycle, jar packaging: see https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging -->
            <plugin>
              <artifactId>maven-resources-plugin</artifactId>
              <version>3.0.2</version>
            </plugin>
            <plugin>
              <artifactId>maven-compiler-plugin</artifactId>
              <version>3.8.0</version>
            </plugin>
            <plugin>
              <artifactId>maven-surefire-plugin</artifactId>
              <version>2.22.1</version>
            </plugin>
            <plugin>
              <artifactId>maven-jar-plugin</artifactId>
              <version>3.0.2</version>
            </plugin>
            <plugin>
              <artifactId>maven-install-plugin</artifactId>
              <version>2.5.2</version>
            </plugin>
            <plugin>
              <artifactId>maven-deploy-plugin</artifactId>
              <version>2.8.2</version>
            </plugin>
            <!-- site lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#site_Lifecycle -->
            <plugin>
              <artifactId>maven-site-plugin</artifactId>
              <version>3.7.1</version>
            </plugin>
            <plugin>
              <artifactId>maven-project-info-reports-plugin</artifactId>
              <version>3.0.0</version>
            </plugin>
          </plugins>
        </pluginManagement>
      </build>
    </project>
    View Code
    • 等依赖包下载完了之后我们在项目这里可以看到:

    •  在src下添加一个resource文件夹,然后鼠标右键Mark Directory As Resources Root

    •  在src/resource文件夹下创建SqlMapConfig.xml作为Mybatis的全局配置文件
    • 在src/resource然后再创建一个log4j.properties文件用来配置日志文件的配置
    • 在src/resource再创建一个sqlmap文件夹用来存放Mybatis的映射文件
    • 创建好的项目结构如下:


    三、设置Mybatis相关配置文件

    • log4j.properties配置文件的内容如下:
    # Global logging configuration
    log4j.rootLogger=DEBUG, stdout
    # Console output...
    log4j.appender.stdout=org.apache.log4j.ConsoleAppender
    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
    log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
    • SqlMapConfig.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>
        <!-- 和spring整合后 environments配置将废除-->
        <environments default="development">
            <environment id="development">
                <!-- 使用jdbc事务管理-->
                <transactionManager type="JDBC" />
                <!-- 数据库连接池-->
                <dataSource type="POOLED">
                    <property name="driver" value="com.mysql.jdbc.Driver" />
                    <property name="url" value="jdbc:mysql://localhost:3306/web_test3?characterEncoding=utf-8" />
                    <property name="username" value="root" />
                    <property name="password" value="root" />
                </dataSource>
            </environment>
        </environments>
    
    </configuration>

    四、创建实体类

    package com.zhurouwangzi.entity;
    
    public class UserBaseInfo {
        private int id;
        private String username;
    
        @Override
        public String toString(){
            return "User [id=" + id + ", username=" + username+ "]";
        }
    
        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;
        }
    }
    View Code
    • 在src/resource/sqlmap文件夹下添加user.xml作为UserBaseInfo的映射文件

    <?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">
    <!-- namespace是命名空间,作用sql语句的隔离,后面还有重要作用
    #{}作用就是占位符,相当于jdbc的“?”
    parameterType:查询的参数类型
    resultType:查询结果的数据类型,如果时候pojo应该给全路径。
    -->
    <mapper namespace="test">
        <select id="getUserById" parameterType="int" resultType="com.zhurouwangzi.entity.UserBaseInfo">
            select * from user_baseinfo where id = #{id}
        </select>
    </mapper>
    View Code
    • 在SqlMapConfig.xml配置文件中添加<Mappers>配置:

     

    五、用测试方法区测试

    • 代码如下:
    package com.zhurouwangzi.service;
    
    import com.zhurouwangzi.entity.UserBaseInfo;
    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.jupiter.api.Test;
    
    import java.io.InputStream;
    
    public class MybatisTest {
    
        @Test
        public void test() throws Exception{
            //1.创建一个SqlSessionFactoryBuilder对象
            SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
            //2.加载配置文件
            InputStream inputStream = Resources.getResourceAsStream("SqlMapConfig.xml");
            //3.创建SqlSessionFactory工厂对象
            SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(inputStream);
            //4.获取SqlSession对象
            SqlSession sqlSession = sqlSessionFactory.openSession();
            //5.执行sql语句
            UserBaseInfo userBaseInfo = sqlSession.selectOne("getUserById", 16);
            System.out.println(userBaseInfo);
            //关闭资源
            sqlSession.close();
        }
    }
    View Code

    运行结果如下:

  • 相关阅读:
    公用表表达式(CTE)的递归调用
    c# 如何让tooltip显示文字换行
    实战 SQL Server 2008 数据库误删除数据的恢复
    SQL SERVER数据库中 是否可以对视图进行修改删除
    asp.net中实现文件批量上传
    sql server 2008学习2 文件和文件组
    sql server 2008学习3 表组织和索引组织
    sql server 2008学习4 设计索引的建议
    sql server 2008学习10 存储过程
    .net 调用 sql server 自定义函数,并输出返回值
  • 原文地址:https://www.cnblogs.com/Infancy/p/12623636.html
Copyright © 2011-2022 走看看