Mybatis入门(上)

关于Mybatis的入门教学

关于mybatis使用的初步介绍,包含ORM框架的概念,项目配置,更换数据源,多表查询,动态sql等操作。

1.ORM框架的概念

  • ORM(Object Relational Mapping)对象关系映射,将程序中的一个对象与表中的一行数据一一对应。
  • ORM框架提供了持久化类与表的映射关系,在运行时参照映射文件的信息,把对象持久化到数据库中。

提到ORM框架就不得不提两个框架,SSM和SSH,其中的H是指Hibernate,M是指Mybatis,二者都是常用的ORM框架,但Mybatis更偏向于轻量级,Hibernate则对数据库结构提供了完整的封装,属于偏大型的框架。

2.Mybatis的使用配置

2.1 添加maven依赖
//添加mybaits的依赖
  <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.4</version>
    </dependency>
2.2 创建db.properties配置文件

在resources目录下创建db.properties

//jdbc的注册
jdbc.url=jdbc:mysql://localhost:3306/java2002?serverTimezone=Asia/Shanghai
jdbc.username=root
jdbc.password=root
//数据库驱动版本较高的话需要添加这个cj,低版本可以去掉
jdbc.driver=com.mysql.cj.jdbc.Driver
2.3 创建mybatis-config.xml配置文件

在resources目录下创建并配置mybatis-config.xml(这个名字好像不是固定的,但一般都是叫这个)
注:Mapper注册参考本文3.3部分

<?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的主配置文件 -->
<configuration>
    <!-- 配置外部文件 -->
    <properties resource="db.properties"></properties>
    <!-- 配置别名 -->
    <typeAliases>
    //可以对每一个javabean进行配置,也能对这个包直接配置
    //那么别名为首字母小写,如User别名user
<!--        <typeAlias type="com.it.entity.User" alias="user"></typeAlias>-->
        <package name="com.it.entity"/>
    </typeAliases>
    <!-- 配置环境 -->
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <!-- 配置数据源(连接池) -->
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driver}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
            </dataSource>
        </environment>
    </environments>

<!-- 指定映射配置文件的位置,映射配置文件指的是每个dao独立的配置文件 -->
<mappers>
//三种配置方法,第一种不要求mapper和dao层方法接口的名字一致
//剩下两种要求完全一致,否则会出现无效绑定
    <!--<mapper resource="com/it/dao/UserDao.xml"/>-->
    <!--<mapper class="com.it.dao.UserDao"/>-->
    <package name="com.it.dao"/>
</mappers>
</configuration>

3.Mybatis的入门使用

3.1 创建实体类

定义所需CURD操作的实体类

package com.it.entity;

import lombok.Data;

import java.io.Serializable;

//@Data可以自动生成getset还有构造方法,需要引入jar包和插件
@Data
public class User implements Serializable {

    private Integer id;
    private String name;
    private String password;

}
3.2 定义DAO接口

根据所需DAO定义接口、以及方法

package com.it.dao;

import com.it.entity.User;

public interface UserDao {
    
    public List<User> findAll();

}
3.3 编写Mapper.xml

在resources目录中下创建与Dao对应的路径和Mapper.xml文件
例dao接口在com.it.dao下,那么也在resources下创建相同的路径,将mapper文件放入。
注:如果不是使用 mapper resource="com/it/dao/UserDao.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">

<!--namespace = 所需实现的接口全限定名-->
<mapper namespace="com.it.dao.UserDao">

    <!--配置查询所有-->
    <!--id = 所需重写的接口抽象方法名,resultType = 查询后所需返回的对象类型-->
    <select id="findAll" resultType="user">
        select * from t_user
    </select>

</mapper>
3.4 测试

在\src\test\java目录下创建测试类进行测试

   @Test
    public void testfindAll()throws Exception {
        //1.读取配置文件
        InputStream in = Resources.getResourceAsStream("mybatis-config.xml");
        //2.创建SqlSessionFactory工厂
        SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
        SqlSessionFactory factory = builder.build(in);
        //3.使用工厂生产SqlSession对象
        SqlSession session = factory.openSession();
        //4.使用SqlSession创建Dao接口的代理对象
        UserDao userDao = session.getMapper(UserDao.class);
        
        //5.使用代理对象执行方法
        List<User> users = userDao.findAll();
        for(User user : users){
            System.out.println(user);
        }
        
        //6.释放资源
        session.close();
        in.close();
    }

总结:

1. Mapper.xml文件与DAO接口文件的名称要一致,否则映射容易报错。
2.ORM框架的思想本质就是对数据库直接使用对象进行操作。

补充:

1.Mybaits曾经叫iBatis。
2.关于更换Mybatis数据源问题

2.1 创建DruidDataSourceFactory

package com.it.utils;

import com.alibaba.druid.pool.DruidDataSource;
import org.apache.ibatis.datasource.pooled.PooledDataSourceFactory;

public class MyDruidDataSourceFactory extends PooledDataSourceFactory {
    public MyDruidDataSourceFactory() {
        this.dataSource = new DruidDataSource();//替换数据源
    }
}

2.2 修改mybatis-config.xml

<!--连接池-->
<dataSource type="com.it.utils.MyDruidDataSourceFactory">
    <property name="driverClass" value="${jdbc.driver}"/>
    <property name="jdbcUrl" value="${jdbc.url}"/>
    <property name="username" value="${jdbc.username}"/>
    <property name="password" value="${jdbc.password}"/>
</dataSource>

注意:< property name=“属性名” />属性名必须与com.alibaba.druid.pool.DruidAbstractDataSource中一致。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值