MyBatis 环境搭建

  

   

3、创建  Mybatis 核心配置文件

  MyBatis 核心配置文件主要用于配置数据库连接和 MyBatis 运行时所需的各种特性,包含了设置和影响 MyBatis 行为的属性。
  为了方便管理以后各框架集成所需的配置文件,故需在项目工程下新建 Source Folder 类型的 resources 目录,并在此目录下添加 MyBatis 的核心配置文件,默认文件名为 " configuration.xml"。但需要注意的是,为了方便在框架集成时更好地区分各个配置文件,我们一般将此文件名命名 "mybatis - config.xml"。该文件需要配置数据库连接信息和 MyBatis 的参数。

  说明:mybatis-config.xml  文件的元素节点是有一定顺序的,节点位置若不按顺序排位,那么 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">
<!-- 配置 mybatis 核心文件,通过这个配置文件完成 mybatis 与数据库的连接 -->
<configuration>

    <!-- 引入 database.properties 文件-->
    <properties resource="database.properties"/>

    <settings>
        <!-- 配置 mybatis 的日志实现为 LOG4J -->
        <setting name="logImpl" value="LOG4J" />
        <!-- 
            Mybatis 对 resultMap 自动映射的匹配级别
            NONE:关闭自动映射 
            PARTIAL:默认值,会自动映射没有嵌套的结果集
            FULL:会自动映射 嵌套的也会映射
        -->
        <setting name="autoMappingBehavior" value="PARTIAL"/>
    </settings>

    <typeAliases>
        <!-- 配置类型别名,减少输入多余的完整类名(类名不区分大小写)-->
        <package name="" />
    </typeAliases>

    <!--配置运行环境(可配置多套但只能选其中一套) -->
    <environments default="development">
        <environment id="development">
            <!--配置事务管理,采用 JDBC 的事务管理  -->
            <transactionManager type="JDBC"></transactionManager>
            <!-- 配置数据源,POOLED:mybatis自带的数据源,JNDI:基于tomcat的数据源 -->
            <dataSource type="POOLED">
                <property name="driver" value="${driver}"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
    </environments>
    
    <!-- 将mapper文件加入到配置文件中,指路径映射文件路径 -->
    <mappers>
        <mapper resource="cn/mybatis/dao/UserMapper.xml"/>
    </mappers>

</configuration>  
MyBatis 核心配置文件

4、创建持久化类 POJO(即实体类)

  持久化类是指其实例状态需要被 mybatis 持久化到数据库中的类。在应用的设计中,持久化类通常对应需求中的业务实体。MyBatis 一般采用  POJO 编程模型来实现持久化类, 与  POJO 类配合完成持久化工作是 MyBatis 最常见的工作模式。

  POJO ( Plain Ordinary Java Object),从字面上来讲就是普通 Java 对象。POJO 类可以简单地理解为符合 JavaBean 规范的实体类,它不需要继承和实现任何特殊的 Java 基类或者接口。 JavaBean 对象的状态保存在属性中,访问属性必须通过对应的 getter 和 setter 方法。

  以用户表(smbms_user)为例,定义用户 POJO 类,User.java 代码如下:

package cn.mybatis.pojo;

import java.util.Date;

public class User {
    private Integer id; //id 
    private String userCode; //用户编码
    private String userName; //用户名称
    private String userPassword; //用户密码
    private Integer gender;  //性别
    private Date birthday;  //出生日期
    private String phone;   //电话
    private String address; //地址
    private Integer userRole;    //用户角色
    private Integer createdBy;   //创建者
    private Date creationDate; //创建时间
    private Integer modifyBy;     //更新者
    private Date modifyDate;   //更新时间
    
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getUserCode() {
        return userCode;
    }
    public void setUserCode(String userCode) {
        this.userCode = userCode;
    }
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
    public String getUserPassword() {
        return userPassword;
    }
    public void setUserPassword(String userPassword) {
        this.userPassword = userPassword;
    }
    public Integer getGender() {
        return gender;
    }
    public void setGender(Integer gender) {
        this.gender = gender;
    }
    public Date getBirthday() {
        return birthday;
    }
    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }
    public String getPhone() {
        return phone;
    }
    public void setPhone(String phone) {
        this.phone = phone;
    }
    public String getAddress() {
        return address;
    }
    public void setAddress(String address) {
        this.address = address;
    }
    public Integer getUserRole() {
        return userRole;
    }
    public void setUserRole(Integer userRole) {
        this.userRole = userRole;
    }
    public Integer getCreatedBy() {
        return createdBy;
    }
    public void setCreatedBy(Integer createdBy) {
        this.createdBy = createdBy;
    }
    public Date getCreationDate() {
        return creationDate;
    }
    public void setCreationDate(Date creationDate) {
        this.creationDate = creationDate;
    }
    public Integer getModifyBy() {
        return modifyBy;
    }
    public void setModifyBy(Integer modifyBy) {
        this.modifyBy = modifyBy;
    }
    public Date getModifyDate() {
        return modifyDate;
    }
    public void setModifyDate(Date modifyDate) {
        this.modifyDate = modifyDate;
    }
    
    @Override
    public String toString() {
        return "User [id=" + id + ", userCode=" + userCode + ", userName=" + userName + ", userPassword=" + userPassword
                + ", gender=" + gender + ", birthday=" + birthday + ", phone=" + phone + ", address=" + address
                + ", userRole=" + userRole + ", createdBy=" + createdBy + ", creationDate=" + creationDate
                + ", modifyBy=" + modifyBy + ", modifyDate=" + modifyDate + "]";
    }
    
}
实体类 POJO

  说明:

     在 MyBatis 中,不需要 POJO 类名与数据库表名一致,因为 MyBatis 是 POJO 与 SQL 语句之间的映射机制,一般情况下,保证 POJO 对象的属性与数据库表的字段名一致即可。

      数据库中数据表的字段命名按照 Java 的驼峰命名规则,这样在进行实体映射的时候,一是方便开发者的工作,二是使用 Mybatis 框架开发,也方便数据表字段与 POJO 的属性进行自动映射。

5、创建 DAO 接口

  在 DAO 层创建 UserMapper 接口,编写与 User 用户有关的功能,以查询用户记录数为例。

package cn.mybatis.dao;

public interface UserMapper {

    /**
     * 查询用户表记录数
     * @return
     */
    public int count();
    
}
UserMapper 接口

6、创建 SQL 映射文件

   创建 SQL 映射文件,完成与 POJO (实体类)的映射,该文件也是一个 XML 文件,命名为 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="cn.mybatis.dao.UserMapper">

    <!-- 查询用户表记录数 -->
    <select id="count" resultType="int">
        select count(1) as count from smbms_user
    </select>
    
</mapper>
Mybatis 的 SQL 映射文件

  经验:SQL 映射文件一般都对应于相应的 POJO,所以一般都是采用 POJO 的名称+Mapper 的规则来进行命名。当然该 mapper 文件属于 DAO 层的操作,应该放置在 dao 包下,并根据业务功能进行分包放置。

   注意点:不要忘记将 SQL 映射文件加入 Mybatis 核心配置文件中。

7、创建测试类
  在工程中加入 JUnit4,创建测试类 UserMapperTest.java 进行功能测试,并在后台打印出用户表的记录数,具体实现步骤如下。

package cn.mybatis.test;

import java.io.IOException;
import java.io.InputStream;

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 cn.mybatis.dao.UserMapper;

public class UserMapperTest {

    @Test
    public void testCount() {

        int count = 0;
        SqlSession sqlSession = null;

        try {
            // 1.读取全局配置文件: mybatis-config.xml
            String resource = "mybatis-config.xml";
            // 2.获取 mybatis-config.xml 文件的输入流
            InputStream is = Resources.getResourceAsStream(resource);
            // 3.创建 SqlsessionFactory 对象,此对象可以完成对配置文件的读取
            SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
            // 4.创建 SqlSession 对象,此对象的作用是调用 mapper 文件进行数据操作,需要注意的是必须先把 mapper 文件引入到 mybatis-config.xml 中才能起效
             
            sqlSession = factory.openSession();

            // 第一种方式:调用selectOne方法执行查询操作,MyBatis 通过 mapper 文件的 namespace 和子元素的 id 来找到相应的 SQL,从而执行查询操作(此方式不需要编写DAO接口)
            // count = sqlSession.selectOne("cn.mybatis.dao.UserMapper.count");

            // 第二种方式:调用getMapper(Mapper.class)执行dao接口方法来实现对数据库的查询操作(推荐使用)
            count = sqlSession.getMapper(UserMapper.class).count();

        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            // 关闭 SqlSession 对象
            sqlSession.close();
        }
        System.out.println(count);
    }

}
测试类 UserMapperTest
个性签名:北上广不相信眼泪,90后闯荡社会,不喝清晨的粥,只干最烈的酒,90后,加油!
原文地址:https://www.cnblogs.com/wxdestiny/p/9741347.html