MyBatis框架搭建(利用Maven技术)

一、pom.xml配置文件

导入MyBatis框架包以及所需仓库(Maven技术在云端下载)

<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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.bdqn</groupId>
  <artifactId>T369-MyBatis</artifactId>
  <packaging>war</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>T369-MyBatis Maven Webapp</name>
  <url>http://maven.apache.org</url>
  <!-- 引入外部Jar包(资源) -->
  <dependencies>
    <!-- 引入MySQL驱动包 -->
    <dependency>
      <groupId>com.mysql</groupId>
      <artifactId>mysql-connector-j</artifactId>
      <version>8.2.0</version>
    </dependency>
    <!-- 引入MyBait(数据库操作框架) -->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.5.16</version>
    </dependency>
    <!-- 引入Log4j -->
    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>1.2.17</version>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.13.2</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
  <build>
    <finalName>T369-MyBatis</finalName>
    <resources>
      <resource>
        <directory>src/main/resources</directory>
        <includes>
          <include>**/*.properties</include>
          <include>**/*.xml</include>
        </includes>
      </resource>
    </resources>
  </build>
</project>

二、配置MyBatis框架核心配置文件mybatis-config.xml

MyBatis框架的核心配置文件中设置的是MyBatis框架的全局信息,包括数据库连接及事务信息、MyBatis框架运行所需的各种特性,以及一些影响MyBatis框架运行时的行为的属性。需要注意的是该配置文件的元素节点是有先后顺序的。

configuration        根节点

        properties        描述一些外部的、可替代的属性

        settings            修改MyBatis的运行时行为

        typeAliases      为Java类型指定一个别名

        typeHandlers   类型处理器

        objectFactory   对象工厂

        plugins              插件

        environments    环境配置

                environment        一组环境配置

                        》transactionManager        事务管理器

                        》dataSource                      数据源

        databaseIdProvider 启动多数据库厂商支持

        mapper                     映射器

<?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>
    <!-- 引入database.properties配置 -->
    <properties resource="database.properties" />
    <!-- 设置MyBatis框架的运行时行为 -->
    <settings>
        <!-- 使用Log4j作为MyBatis框架的日志实现 -->
        <setting name="logImpl" value="LOG4J" />
    </settings>
    <typeAliases>

        <typeAlias type="com.bdqn.entity.Book" alias="book"/>

    </typeAliases>
    <!-- 配置MyBatis框架的运行环境 -->
    <environments default="development">

        <environment id="development">
            <!-- 配置事务管理器,采用JDBC事务,由应用自行管理事务 -->
            <transactionManager type="JDBC" />
            <!-- 配置数据源,POOLED:MyBatis提供的数据源,JNDI:JNDI数据源 -->
            <dataSource type="POOLED">
                <!-- 使用¥{}引用定义的参数,此处参数来自database.properties文件 -->
                <property name="driver" value="${driver}" />
                <property name="url" value="${url}" />
                <property name="username" value="${username}" />
                <property name="password" value="${password}" />
            </dataSource>
        </environment>
    </environments>

    <!-- 配置映射文件 -->
    <mappers>
        <mapper resource="mapper/BookMapper.xml" />
    </mappers>
</configuration>

三、创建实体类

        在应用程序设计中,实体类通常对应需求中的业务实体,并与关系型数据库中的表结构存在对应关系。通过实体类映射SQL语句实现持久化操作时MyBatis框架最常见的工作模式。

        MyBatis框架一般采用POJO编程模型定义实体类,POJO可以简单地理解为符合JavaBean规范的普通的Java对象,该对象没有特殊的继承或实现关系(java.io.Serializable接口除外),使用私有属性存储对象状态,访问属性必须通过相应的getter和setter方法,符合面向对象封装的要求。

package com.bdqn.entity;

import java.io.Serializable;

/**
 * @author 崔书健
 */
//@Alias("book")
public class Book implements Serializable {

    private static final long serialVersionUID = 42L;

    private int bid;
    private String bName;
    private String author;
    private String pubComp;
    private String pubDate;
    private int bCount;
    private float price;

    public String toString() {
        return "book{bid="+this.bid+",bName="+this.bName+",author="+this.author+",pubComp="+this.pubComp+",pubDate="+this.pubDate+",bCount="+this.bCount+",price="+this.price+"}";
    }

    public int getBid() {
        return bid;
    }

    public void setBid(int bid) {
        this.bid = bid;
    }

    public String getbName() {
        return bName;
    }

    public void setbName(String bName) {
        this.bName = bName;
    }

    public String getAuthor() {
        return author;
    }

    public void setAuthor(String author) {
        this.author = author;
    }

    public String getPubComp() {
        return pubComp;
    }

    public void setPubComp(String pubComp) {
        this.pubComp = pubComp;
    }

    public String getPubDate() {
        return pubDate;
    }

    public void setPubDate(String pubDate) {
        this.pubDate = pubDate;
    }

    public int getbCount() {
        return bCount;
    }

    public void setbCount(int bCount) {
        this.bCount = bCount;
    }

    public float getPrice() {
        return price;
    }

    public void setPrice(float price) {
        this.price = price;
    }
}

四、创建Mapper接口

        在MyBatis框架下,Mapper接口是指用于 绑定到SQL映射语句的接口,又称映射器,通常于SQL映射文件配合使用。对应用而言,Mapper接口即为DAO接口,定义了对数据进行持久化操作的API。

package com.bdqn.mapper;

import com.bdqn.entity.Book;

import java.util.List;

public interface BookMapper {

    /**
     * 统计图书数量的方法
     * @return
     */
    public int count();

    /**
     * 查询用户列表
     * @return
     */
    public List<Book> getBookList();
}

五、创建SQL映射文件 

        定义与用户操作相关的SQL映射文件,该文件时一个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.bdqn.mapper.BookMapper">

    <!-- 查询总数量 -->
    <select id="count" resultType="int">
        select count(1) from book
    </select>
    <select id="getBookList" resultType="com.bdqn.entity.Book">
        select * from book
    </select>
</mapper>

六、编写测试类

本文章使用JUnit进行测试,结果在控制台输出

定义工具类MyBatisUtil

在静态代码块中创建SqlSessionFactory实例,并定义两个静态方法,分别用于创建SqlSession和关闭SqlSession。

package com.bdqn.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;

/**
 * @author 崔书健
 */
public class MyBatisUtil {

    private static SqlSessionFactory factory;

    static{
        try {
            InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
            factory = new SqlSessionFactoryBuilder().build(is);
        } catch (IOException e) {
            throw new RuntimeException("初始化失败",e);
        }
    }

    public static SqlSession createSqlSession(){

        return factory.openSession(false); // false表示关闭自动提交用于事务控制
    }

    public static void closeSqlSession(SqlSession sqlSession){
        if (sqlSession != null){
            sqlSession.close();
        }
    }
}

创建测试类

package com.bdqn.mapper;

import com.bdqn.entity.Book;
import com.bdqn.utils.MyBatisUtil;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;

import java.io.InputStream;
import java.util.List;
import java.util.logging.Logger;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

/**
 * @author 崔书健
 */
public class SysBookMapperTest {

    private SqlSession sqlSession;

    /**
     * 在每一个测试用例执行之前做的事情
     * @throws Exception
     */
    @Before
    public void setUp() throws Exception{
        sqlSession = MyBatisUtil.createSqlSession();
    }

    /**
     *  在每一个测试用例执行之后做的事情
     */
    @After
    public void tearDown(){
        MyBatisUtil.closeSqlSession(sqlSession);
    }

    /**
     * 测试查询总数据量(myBatis框架基本使用)
     */
    @Test
    public void testCount(){
        int count = sqlSession.getMapper(BookMapper.class).count();
        System.out.println("总数据量:" + count);
        assert true;
    }

    /**
     * 测试查询数据列表
     */
    @Test
    public void testBookListQuery(){
        List<Book> list = sqlSession.getMapper(BookMapper.class).getBookList();
        for (Book book : list) {
            System.out.println(book);
        }
        assert true;
    }
}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值