Java学习——Mybatis框架

Mybatis简介

MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录。

相比起传统的JDBC,使用Mybatis可以减少代码量,使开发效率更加高效

Mybatis配置

1.导入mybatis的相关jar包

ant-launcher-1.10.3.jar
ant-1.10.3.jar
cglib-3.2.10.jar
asm-7.0.jar
commons-logging-1.2.jar
javassist-3.24.1-GA.jar
log4j-api-2.11.2.jar
log4j-1.2.17.jar
log4j-core-2.11.2.jar
mybatis-3.5.2.jar
mysql-connector-java-8.0.17.jar
ognl-3.2.10.jar
slf4j-api-1.7.26.jar
slf4j-log4j12-1.7.26.jar

下载地址:https://github.com/mybatis/mybatis-3/releases

导入了这些jar包并添加到环境变量后就可以开始使用Mybatis了

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

<dependency>
  <groupId>org.mybatis</groupId>
  <artifactId>mybatis</artifactId>
  <version>x.x.x</version>
</dependency>

2.编写Mybatis的配置文件

Mybatis的配置文件为xml文件格式
XML 配置文件中包含了对 MyBatis 系统的核心设置,包含获取数据库连接实例的数据源(DataSource)和决定事务作用域和控制方式的事务管理器(TransactionManager)
下面是一个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>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC" />
            <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>
    <mappers>
        <mapper resource="entity/peo.mapper.xml" />
    </mappers>
</configuration>

代码中间那四个property对应的就是数据库的相关配置,将自己的配置信息填入value就行了
下面的mapper属性指的是sql语句的映射文件,后面会讲到

3.构建 SqlSessionFactory并中获取 SqlSession

每个基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为核心的。SqlSessionFactory 的实例可以通过 SqlSessionFactoryBuilder 获得。

public class MybatisUtil {
    public static SqlSessionFactory getSqlSessionFactory() throws IOException {
        String resource = "Mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        return sqlSessionFactory;
    }

当构建好了SqlSessionFactory,就可以从SqlSessionFactory中获取到SqlSession

public static SqlSession getSession() throws IOException {
    SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
    SqlSession session = sqlSessionFactory.openSession();
    return session;
}

SqlSession 完全包含了面向数据库执行 SQL 命令所需的所有方法。你可以通过 SqlSession 实例来直接执行已映射的 SQL 语句。

4.编写实体类

这个很简单就自己去写好了,记得要去数据库创建好相对应的数据表,表中的属性和实体类中的成员变量需要有对应
比如:

public class Peo {
    private int id;
    private String name;
}

对应的mysql数据库:
在这里插入图片描述

5.编写sql语句的映射文件

SQL 映射文件也是xml文件格式
SQL 映射文件主要的顶级元素为:
insert – 映射插入语句
delete – 映射删除语句
select – 映射查询语句
update – 映射更新语句
对应就是增删查改
下面是一个例子:

<?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="entity.PeoMapper">
    <select id="selectAll" resultType="entity.Peo">
		select * from peo
	</select>
    <select id="selectPeo" resultType="entity.Peo">
		select * from peo where id = #{id}
	</select>
    <insert id="addPeo" parameterType="entity.Peo" useGeneratedKeys="true">
		insert into peo(name) value(#{name})
	</insert>
    <update id="updatePeo" parameterType="entity.Peo">
		update peo set name = #{name} where id = #{id}
	</update>
    <delete id="deletePeo">
		delete from peo where id=#{id}
	</delete>
</mapper>

6.创建dao层

在dao层里,将对数据库的操作进行封装,便后续的使用。

	public List<Peo> selectAll() throws IOException {
        SqlSession session = MybatisUtil.getSession();
        List<Peo> list = session.selectList("entity.PeoMapper.selectAll");
        session.close();
        return list;
    }
	public Peo getById(int id) throws IOException {

        Peo p = new Peo();
        SqlSession session = MybatisUtil.getSession();
        p = session.selectOne("entity.PeoMapper.selectPeo", id);
        session.close();
        return p;
    }

    public int add(Peo p) throws IOException {
        SqlSession session = MybatisUtil.getSession();
        int result = session.insert("entity.PeoMapper.addPeo", p);
        session.commit();
        session.close();
        return result;
    }

    public int update(Peo p) throws IOException {
        SqlSession session = MybatisUtil.getSession();
        int result = session.update("entity.PeoMapper.updatePeo", p);
        session.commit();
        session.close();
        return result;
    }

    public int delete(int id) throws IOException {
        SqlSession session = MybatisUtil.getSession();
        int result = session.delete("entity.PeoMapper.deletePeo", id);
        session.commit();
        session.close();
        return result;
    }

对于每一个方法,基本就是先获取session,也就是连接数据库,然后再进行对数据库的操作,因为session里面包含了面向数据库执行 SQL 命令所需的所有方法,所以可以很方便的直接调用。
注意:一定要记得写上session.commit();这一句,不然操作是不会执行的,最后还需要执行session.close();来关闭连接与数据库的连接,这里涉及到很多安全上的问题,可以去了解一下

7.测试

当完成了以上的操作,就可以对mybatis进行测试了。

public class Test {
    public static void main(String[] args) throws IOException {
        PeoDao peodao = new PeoDao();
        List<Peo> list = new ArrayList<Peo>();
        list = peodao.selectAll();
        for (Peo peo : list) {
            System.out.println(peo);
        }
    }
}

我这里执行的是查询方法,可以见到命令行上已经将数据库的所有信息打印了出来:
在这里插入图片描述

总结

本文讲述了mybatis的简单搭建和使用方法,mybatis的功能不仅仅只有文章中所展示的这些,还有非常多强大的功能,建议多看看mybatis的官方文档,在日后会继续学习mybatis的其他功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值