飙血推荐
  • HTML教程
  • MySQL教程
  • JavaScript基础教程
  • php入门教程
  • JavaScript正则表达式运用
  • Excel函数教程
  • UEditor使用文档
  • AngularJS教程
  • ThinkPHP5.0教程

我的第一个mybatis程序

时间:2021-12-04  作者:1305536110-dym  

写在前面:

  最近开始了框架的学习,打算先从mybatis入手,下面是我的第一个mybatis程序。

编译环境:

  idea+jdk1.8+mysql+maven-3.6.3

首先需要在域名中添加依赖代码

<dependency>
  <groupId>域名tis</groupId>
  <artifactId>mybatis</artifactId>
  <version>x.x.x</version>
</dependency>
//这里我用的是3.5.2版本

创建mybatis的配置文件,包括获取数据库连接实例的数据源(DataSource)以及决定事务作用域和控制方式的事务管理器(TransactionManager)。

mybatis-域名:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
  PUBLIC "-//域名//DTD Config 3.0//EN"
  "http://域名/dtd/mybatis-3-域名">
<configuration>
  <environments default="development">
    <environment id="development">
      <transactionManager type="JDBC"/>
      <dataSource type="POOLED">
        <property name="driver" value="${driver}"/>    //jdbc驱动,我的是域名.Driver
        <property name="url" value="${url}"/>      
        <property name="username" value="${username}"/>
        <property name="password" value="${password}"/>
      </dataSource>
    </environment>
  </environments>
  <mappers>
  //每一个mapper都需要注册,这里和后面有关 <mapper resource="org/mybatis/example/域名"/> </mappers> </configuration>

我们以前都是通过jdbc来操作数据库,频繁的连接关闭不仅会消耗巨大的资源,并且如果要修改sql的话不利于整体的维护。

而mybatis的核心概念有Configuration 、 SqlSessionFactory 、 Session 、 Executor 、 MappedStatement 、StatementHandler、ResultSetHandler。我是首先了解了 SqlSessionFactory。

我们首先看官方文档是怎样定义的:

我们创建一个mybatisutil用来获取sqlsession对象

package utils;

import 域名域名urces;
import 域名域名ession;
import 域名域名essionFactory;
import 域名域名essionFactoryBuilder;

import 域名ception;
import 域名tStream;

//sqlSessionFactory对象
public class MybatisUtils {
    private static SqlSessionFactory sqlSessionFactory;

    static {

        try {
            String resource = "mybatis-域名";
            InputStream inputStream = null;
            inputStream = 域名esourceAsStream(resource);
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        } catch (IOException e) {
            域名tStackTrace();
        }
    }

    public static SqlSession getSqlSession(){
        SqlSession sqlSession = 域名Session();
        return  sqlSession;
    }



}

 同样我们再联系一下传统MVC设计模式的写法,我们会写一个DAO接口,然后创建一个实现类去继承它,如下:

 那么我们通过mybatis,不用在创建实现类了,而是在xml语句中定义映射,如下:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//域名//DTD Mapper 3.0//EN"
        "http://域名/dtd/mybatis-3-域名">
<!--namespace绑定一个Dao/Mapper接口-->
<mapper namespace="域名Dao">
    <select id="getCloud" resultType="域名d">
        select * from caijing
    </select>

</mapper>

在这里,namespace用来绑定一个Dao/Mapper接口,也就是说,这个xml就相当于我们之前创建的实现类,它们的作用是一样的,省去了jdbc一系列的操作,更加简单了。

现在我们回过头来再看一开始创建的mybatis-域名,大家有没有注意到:

 我在这里注释道每一个mapper都需要注册,这里它的resource需要改为"域名",一定要注意是每一个!!!我只创建了一个,所有这里就注册一个。

写到这,准备工作也就差不多了,下面我们开始测试:

package dao;

import 域名d;
import 域名域名ession;
import 域名;
import 域名tisUtils;

import 域名;

public class UserDaoTest {
    @Test
    public void test(){
        //1.获取sqlsession对象
        SqlSession sqlSession = 域名qlSession();
        //2.1执行sql
        UserDao mapper = 域名apper(域名s);
        List<Cloud> list = 域名loud();
        for (Cloud cloud : list) {
            域名tln(cloud);
        }
        //关闭sqlsession
        域名e();
    }
}

运行结果:

标签:编程
湘ICP备14001474号-3  投诉建议:234161800@qq.com   部分内容来源于网络,如有侵权,请联系删除。