MyBatis框架

文章介绍了MyBatis作为持久层框架的功能,包括支持自定义SQL和映射,以及其相对于JDBC和Hibernate的优缺点。接着详细阐述了如何搭建MyBatis环境,包括添加依赖、配置核心文件mybatis-config.xml。然后,展示了创建Bean实体、映射文件和测试类的步骤。最后,解析了配置文件的各个部分,如properties、settings、typeAliases和mappers。
摘要由CSDN通过智能技术生成

文章目录

一、MyBatis 介绍

持久化和ORM

Mybatis的概念和优缺点

二、MyBatis 环境搭建

         配置Mybatis核心文件-mybatis-config.xml

三、入门测试程序

1.创建 Bean 实体

2.创建映射文件

 3.编写测试类

四、配置解析

1.核心配置文件

 2、属性(properties)

3、设置(settings) 

4、类型别名(typeAliases)

5、映射器(mappers)


一、MyBatis 介绍

MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

持久化和ORM

【1】持久化就是程序的数据,在瞬时状态(new)和持久状态(数据库等)之间的转化。通过数据库操作进行转化。

【2】ORM.(O=javaBean)(R=关系型数据库)(M=映射)。

        编写程序的时候,以面向对象的方式处理数据。

        保存数据的时候,却以关系型数据库的方式存储

        注意:ORM这三方面要保持一致。任意部分的变动都要一起检测。

Mybatis的概念和优缺点

优点:    

        【1】Mybatis是一个“半成品”的“ORM”框架。作用于DAO层。    

        【2】和hibernate相比,他是一个轻量级的选手。有着灵活的SQL的操作。    

        【3】小巧简单易学。    

        【4】和JDBC相比,他实现了SQL和代码的分离。可重用。    

缺点:    

        【1】SQL编写的量大。需要对sql语句熟悉。    

        【2】数据库的移植性较差。

二、MyBatis 环境搭建

要使用 MyBatis, 只需将 mybatis-x.x.x.jar 文件置于类路径(classpath)中即可。

如果使用 idea中Maven 来构建项目,则需将下面的依赖代码置于 pom.xml 文件中:

    <dependencies>

            <!--log4j核心依赖-->
            <dependency>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
                <version>1.2.17</version>
            </dependency>

            <!-- mysql 数据库驱动 -->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>8.0.29</version>
            </dependency>
            
            <!-- mybatis依赖 -->
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis</artifactId>
                <version>3.5.6</version>
            </dependency>
          
            <!-- junit -->
            <dependency>
                <groupId>org.junit.jupiter</groupId>
                <artifactId>junit-jupiter-engine</artifactId>
                <version>5.5.2</version>
                <scope>test</scope>
            </dependency>
                
         
        </dependencies>
配置Mybatis核心文件-mybatis-config.xml

 

<configuration>
<!--  引入 jdbc.properties 文件 -->
<properties resource="jdbc.properties"/>
<!--  配置mybatis的log实现为LOG4J  -->
<settings>
<setting name="logImpl" value="LOG4J"/>
</settings>
<environments default="development">
<environment id="development">
<!-- 配置事务管理,采用JDBC的事务管理   -->
<transactionManager type="JDBC"/>
<!--  POOLED:mybatis自带的数据源,JNDI:基于tomcat的数据源  -->
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${user}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<!--  将mapper文件加入到配置文件中  -->
<mappers>
    <mapper resource="com/xinxi2/dao/TSysUserMapper.xml"/>
</mappers>
</configuration>

三、入门测试程序

1.创建 Bean 实体

package com.xinxi2.bean;

import java.util.Date;

public class TSysUser {

    private Integer id ;
    private String acccunt ;
    private String realname ;
    private String password ;
    private Integer sex ;
    private Date birthday ;
    private String phone ;
    private String address ;
    private Integer roleid ;
    private Integer createduserid ;
    private Date createdtime ;
    private Integer updateduserid ;
    private Date updatedtime ;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getAcccunt() {
        return acccunt;
    }

    public void setAcccunt(String acccunt) {
        this.acccunt = acccunt;
    }

    public String getRealname() {
        return realname;
    }

    public void setRealname(String realname) {
        this.realname = realname;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public Integer getSex() {
        return sex;
    }

    public void setSex(Integer sex) {
        this.sex = sex;
    }

    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 getRoleid() {
        return roleid;
    }

    public void setRoleid(Integer roleid) {
        this.roleid = roleid;
    }

    public Integer getCreateduserid() {
        return createduserid;
    }

    public void setCreateduserid(Integer createduserid) {
        this.createduserid = createduserid;
    }

    public Date getCreatedtime() {
        return createdtime;
    }

    public void setCreatedtime(Date createdtime) {
        this.createdtime = createdtime;
    }

    public Integer getUpdateduserid() {
        return updateduserid;
    }

    public void setUpdateduserid(Integer updateduserid) {
        this.updateduserid = updateduserid;
    }

    public Date getUpdatedtime() {
        return updatedtime;
    }

    public void setUpdatedtime(Date updatedtime) {
        this.updatedtime = updatedtime;
    }
}

2.创建映射文件

<?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.xinxi2.dao.TSysUserMapper">


    <!--
        Id:和接口方法名一样
        parameterType:参数类型,
        resultType:跟类名保持一致
    -->
   <select id="getListById" parameterType="integer"resultType="com.xinxi2.bean.TSysUser">
        select * from t_sys_user s where s.id=#{id}
    </select>


</mapper>

 3.编写测试类

测试类在测试源文件夹test下的 TSysUserTest 中。

public static void main(String[] args) {
        String resource = "mybatis.xml";
        InputStream inputStream = null;
        SqlSessionFactory sqlSessionFactory=null;
        SqlSession sqlSession=null;
        TSysUserMapper tSysUserMapper=null;
        TSyRoleMapper tSyRoleMapper = null;
        try {
            inputStream = Resources.getResourceAsStream(resource);
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
            sqlSession = sqlSessionFactory.openSession();

            tSysUserMapper = sqlSession.getMapper(TSysUserMapper.class);
            List<TSysUser> list = tSysUserMapper.getListById(2);
            for (TSysUser user:list){
                System.out.println(user.getRealname() + user.getPassword());
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            sqlSession.close();
        }

    }

四、配置解析

1.核心配置文件

 2、属性(properties)

我们可以通过properties来实现引用配置文件。

这些属性可以在外部进行配置,并可以进行动态替换。你既可以在典型的 Java 属性文件中配置这些属性,也可以在 properties 元素的子元素中设置。例如编写一个配置文件jdbc.properties:

driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/bianlidian?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT-8
username=root
pwd=123456

在核心配置文件中引入

注意:如果两个文件有同一个字段优先使用外部配置文件!因为会先运行内部配置文件,再运行外部配置文件,所以内部配置文件会被外部配置文件覆盖!

3、设置(settings) 

这是 MyBatis 中极为重要的调整设置,它们会改变 MyBatis 的运行时行为。 下表描述了设置中各项设置的含义、默认值等。

 

4、类型别名(typeAliases)

类型别名可为 Java 类型设置一个缩写名字。 它仅用于 XML 配置,意在降低冗余的全限定类名书写

    <!--别名设置-->
    <typeAliases>
        <!--给实体类起别名-->
        <typeAlias type="com.xinxi2.bean.TsyUser" alias="tsyuser"/>
    </typeAliases>

5、映射器(mappers)

方式一:直接绑定xml文件

    <!--设置映射XML文件-->
    <mappers>
        <mapper resource="com/xinxi2/dao/TSysUserMapper.xml"/>
    </mappers>

方式二:使用class文件绑定

<!--设置映射XML文件-->
<mappers>
    <mapper class="com.xinxi2.dao.TSysUserMapper"/>
</mappers>

方式三:使用扫描包进行注入绑定

    <!--设置映射XML文件-->
    <mappers>
        <!--扫描包-->
        <package name="com.xnxi2.dao"/>
    </mappers>

注意

  • 接口和他的Mapper配置文件必须同名!
  • 接口和他的Mapper配置文件必须在同一个包下!

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值