Mybatis基础学习

写在最前的话

第一次写博客,讲一下关于Mybatis的知识,也是对自己的总结。如果有所错误,欢迎帮忙改正错误

Mybatis的基础(一)

什么是mybatis:

mybatis是一个优秀的基于java的持久层框架,它内部封装了jdbc,使开发者只需要关注sql语句本身,而不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。

上面的对于初学者来说也是易于理解的:简单的来说Mybatis几乎代替了JDBC的功能,是一款用于操作数据库的框架。和Mybatis类似的还有hibernate但各有各自的优缺点。

MyBatis的核心组件

SqlSessionFactoryBuiler(构造器)

它会根据xml配置或者代码来生成SqlSessionFactory,采用的是分步构建的Builer模式。

SqlSessionFactory(工厂接口)

依靠它来生成SqlSession,采用工厂模式

SqlSession(会话)

一个即可以发送SQL执行返回结果,也可以获取Mapper的接口。在现有的技术中,一般我们会让其在业务逻辑代码中“消失”,而使用的是myBatis提供的

SQL Mapper(映射器)

MyBatis新设计存在的组件,它由一个java接口和XML文件(或注解)构成,需要给出对应的SQL和映射规则。它负责发送SQl去执行,并返回结果。

注意,无论是映射器还是SqlSession都可以发送SQL到数据库执行。

Mybatis的应用

每个基于Mybatis的应用都是以一个SqlSessionFactory的实例为中心的,而SqlSessionFactory唯一的作用就是生产MyBatis的核心接口对象SqlSession,所以它的责任是唯一的。我们往往会采用单例模式处理它。

首先,在MyBatis中的XML文件分为两类,一类是基础配置文件,通常只有一个,主要是配置一些最基本的上下参数和运行环境;另一类是映射文件,它可以配置映射关系、SQL、参数等信息。

下面来看一下最基本的使用。

导入实体类entity(domin)

要导入的实体类要满足以下的条件:

  1. 基本类型与数据当中一致。
  2. 满足javabean规范:即有get与set方法。 满足javabean规范:即有get与set方法。

例如:
在这里插入图片描述
entity代码:

package cn.java.entity;

public class User {
    private Integer id;

    private String name;

    private Integer age;

    public Integer getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

Mybatis的基础配置文件

下面为mybatis的基础配置文件的主要配置

<?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">
<configuration>
	<!-- 配置数据库连接环境:driver、url、username、password -->
	<environments default="mysql">
		<!-- 开始配置mysql -->
		<environment id="mysql">
			<!--配置事务  -->
			<transactionManager type="JDBC"></transactionManager>
			<!-- 配置数据源 -->
			<dataSource type="POOLED">
				<property name="driver" value="com.mysql.jdbc.Driver"/>
				<property name="url" value="jdbc:mysql://localhost:3306/数据名"/>
				<property name="username" value="账号"/>
				<property name="password" value="密码"/>
			</dataSource>
		</environment>
	</environments>

	<!-- 关联局部配置文件 -->
	<mappers>
		<mapper resource="cn/java/mapper/UserMapper.xml"/>
	</mappers>
</configuration>
  1. 首先是配置头
<?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基础配置文件的头部,随着版本的更新而改变

  1. 根标签<configuration></configuration>
    包含所有的标签,是必不可少的。

  2. <environments default="mysql">配置数据库连接环境
    这里描述的是数据库。它里面的
    <transactionManager type="JDBC"></transactionManager>
    元素是配置事务管理器,这里采用的是mybatis的JDBC管理器方式。

  3. <mappers></mappers>关联映射配置文件
    元素表示引用的那些映射器。

用xml文件和简短的代码生成SqlSessionFactory

有了基础配置文件,就可以用一段简短的代码来生成SqlSessionFactory

        SqlSessionFactoryBuilder sqlsessionfactorybuilder = new SqlSessionFactoryBuilder();
        //将mybatis.xml文件变成流
        InputStream inputStream = null;
        try {
            inputStream = Resources.getResourceAsStream("mybatis.xml");
        } catch (IOException e) {
            e.printStackTrace();
        }
        SqlSessionFactory sqlsessionfactory = sqlsessionfactorybuilder.build(inputStream);
  

首先读取mybatis.xml,然后通过SqlSessionFactoryBuilder的Builder方法去创建SqlSessionFactory。整个过程比较简单,而里面的步骤还是比较繁琐的,只是研发者为大家隐藏了细节。这样一个SqlSessionFactory就被创建出来了。

书写映射配置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.java.mapper.UserMapper(一般书写为映射文件java的路径)">
    <select id="selectById" parameterType="long" resultType="cn.java.entity.User">
    //只写了一个用Id查询的sql语句,可以自行添加SQL语句
  	SELECT * FROM User where id=#{id}
    </select>
</mapper>

与映射配置文件同名的java文件

        //1.启动mybatis框架
//需要 SqlSession--->SqlSessionFactory---->SqlSessionFactoryBuilder
        SqlSessionFactoryBuilder sfb = new SqlSessionFactoryBuilder();
//将mybatis.xml文件变成流
        InputStream ins = null;
        try {
            ins = Resources.getResourceAsStream("mybatis.xml");
        } catch (IOException e) {
            e.printStackTrace();
        }
        SqlSessionFactory ssf = sfb.build(ins);
        SqlSession session = ssf.openSession();
        //2.调用局部配置文件中的sql语句
        int id=1;
        Map<String, Object> usersMap = session.selectOne("cn.java.mapper.UserMapper.selectById", id);
        System.out.println(usersMap);
    }

这样一个利用SqlSession传达SQL语句的基本mybatis框架就完成了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值