zoukankan      html  css  js  c++  java
  • 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后,加油!
  • 相关阅读:
    104.Maximum Depth of Binary Tree
    103.Binary Tree Zigzag Level Order Traversal
    102.Binary Tree Level Order Traversal
    101.Symmetric Tree
    100.Same Tree
    99.Recover Binary Search Tree
    98.Validate Binary Search Tree
    97.Interleaving String
    static静态初始化块
    serialVersionUID作用
  • 原文地址:https://www.cnblogs.com/wxdestiny/p/9741347.html
Copyright © 2011-2022 走看看