首页 > 其他分享 >【spring笔记】Mybaties入门

【spring笔记】Mybaties入门

时间:2023-02-28 11:11:48浏览次数:51  
标签:Mybaties xml SqlSessionFactory 入门 spring session import mybatis org

1、官方文档

https://mybatis.org/mybatis-3/zh/getting-started.html

2、搭建一个Mybatis实例

2.1 首先看配置文件mybatis-config.xml

这里面包括获取数据库连接实例的数据源(DataSource)以及决定事务作用域和控制方式的事务管理器(TransactionManager)(这里只是一个简单的事例)

<?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="org/mybatis/example/BlogMapper.xml"/>
  </mappers>
</configuration>

注意 XML 头部的声明,它用来验证 XML 文档的正确性。environment 元素体中包含了事务管理和连接池的配置。mappers 元素则包含了一组映射器(mapper),这些映射器的 XML 映射文件包含了 SQL 代码和映射定义信息。

2.2 SqlSessionFactory

每个基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为核心的。SqlSessionFactory 的实例可以通过 SqlSessionFactoryBuilder 获得。而 SqlSessionFactoryBuilder 则可以从 XML 配置文件或一个预先配置的 Configuration 实例来构建出 SqlSessionFactory 实例。通过SqlSessionFactory 实例就可以完成增删改查操作,mybatis框架通过对mapper的映射配置,直接调用接口的方法就可以实现。

利用配置文件构造SqlSessionFactory

String resource = "org/mybatis/example/mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

写成工具类如下:

package com.wcy.utils;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.IOException;
import java.io.InputStream;


public class MybatisUtils {

    private static SqlSessionFactory sqlSessionFactory;

    static {
        try {
            //获取sqlSessionFactory对象
            String resource = "mybatis-config.xml";
            InputStream inputStream = Resources.getResourceAsStream(resource);
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static SqlSession getSqlSession() {
        return sqlSessionFactory.openSession();
    }
}

2.3、 Mapper映射

StudentMapper接口

package com.wcy.mapper;

import com.wcy.pojo.Student;

import java.util.List;

public interface StudentMapper {
    List<Student> getStudentList();
}
StudentMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--绑定对应的mapper-->
<mapper namespace="com.wcy.mapper.StudentMapper">
    <select id="getStudentList" resultType="com.wcy.pojo.Student">
        select * from test.student;
    </select>
</mapper>

2.4、 Test

import com.wcy.mapper.StudentMapper;
import com.wcy.pojo.Student;
import com.wcy.utils.MybatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;

import java.util.List;

public class MyTest {
    @Test
    public void test() {
        //获取session对象
        SqlSession sqlSession = MybatisUtils.getSqlSession();

        //方式一:获取mapper
        StudentMapper studentMapper = sqlSession.getMapper(StudentMapper.class);
        List<Student> studentList = studentMapper.getStudentList();
        for (Student stu : studentList) {
            System.out.println(stu.toString());
        }
        //关闭session
        sqlSession.close();
    }
}

注意事项:由于maven项目默认配置文件是在resources里面的,所以如果配置文件放到java下面就需要设置静态过滤


pom.xml下添加

<build>
    <resources>
        <resource>
            <directory>src/main/java</directory>
            <includes>
                <include>**/*.properties</include>
                <include>**/*.xml</include>
            </includes>
            <filtering>true</filtering>
        </resource>
        <resource>
            <directory>src/main/resources</directory>
            <includes>
                <include>**/*.properties</include>
                <include>**/*.xml</include>
            </includes>
            <filtering>true</filtering>
        </resource>
    </resources>
</build>

标签:Mybaties,xml,SqlSessionFactory,入门,spring,session,import,mybatis,org
From: https://www.cnblogs.com/wcyblogs/p/17163296.html

相关文章

  • springboot处理乱码问题原理
    我们在用spring-springmvc时,需要配置一个过滤器 CharacterEncodingFilterCharacterEncodingFilterfilter=newOrderedCharacterEncodingFilter();filter.setEncodin......
  • (原创)【B4A】一步一步入门05:控件、公有属性、水平锚定、垂直锚定(控件篇01)
    一、前言前面的教程,已经完整讲述了用B4A开发安卓APP从新建项目到编译发布的完整流程。从本篇开始,我们将会从B4A的细节处着手,一步一步掌握B4A。从本篇开始的子系列为“控......
  • 学习springCloud的配置之Swagger的配置
    文章来源于:https://www.bbsmax.com/A/1O5E3VP4z7/本文仅做学习记录用途SpringCloud配置中心采用数据库存储配置内容转自:SpringCloudConfig采用数据库存储配置内容【......
  • springboot集成easyexcel(阿里)
    poi比较占用内存。easyexcel性能优化不少,值得一看。pom.xml中添加:<dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>2.1.6</......
  • springboot中json参数映射
    文章目录​​json映射不到实体上​​​​问题分析​​​​解决方案​​​​json映射到String查不到数据​​​​问题分析​​​​解决方案​​​​自动映射入参可以多吗,可以......
  • open3D快速入门
      Corefeatures核心功能Simpleinstallationviacondaandpip 通过conda和pip简单安装3Ddatastructures  三维数据结构3Ddataprocessingalgorithms ......
  • 转载:pageOffice插件 springboot实现服务器上Word文档在线打开编辑保存
    pageOffice插件springboot实现服务器上Word文档在线打开编辑保存需求:在oa系统上,想实现在线,服务器上doc,docx文档,在web打开,编辑。编辑后,可以再同步保存到服务器端。......
  • Spring不同版本的AOP
    1、Spring4、SpringBoot11.1代码实现publicinterfaceCalculator{intdiv(inta,intb);}@ComponentpublicclassCalculatorImplimplementsCalcul......
  • Golang入门第四天
    面向对象编程匿名字段匿名字段初始化方法值语义与引用语义封装,继承,多态方法值,方法表达式接口接口继承,接口转换空接口通过if实现类型断言通过switch实现类型断......
  • Go语言入门学习
    一.Go语言介绍Go是一个开源的编程语言,它能让构造简单、可靠且高效的软件变得容易。Go是从2007年末由RobertGriesemer,RobPike,KenThompson主持开发,后来还加入了Ian......