• 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后,加油!
  • 相关阅读:
    冲刺进度条03
    冲刺进度条02
    冲刺进度条01
    第二阶段团队冲刺(九)
    第二阶段团队冲刺(八)
    第二阶段团队冲刺(七)
    用户体验评价
    第二阶段团队冲刺(六)
    程序员修炼之道:从小工到专家阅读笔记01
    2019春季学期进度报告(十三)
  • 原文地址:https://www.cnblogs.com/wxdestiny/p/9741347.html
Copyright © 2020-2023  润新知