> Java > java지도 시간 > 마이바티스란 무엇인가요? 마이바티스 관련 콘텐츠 소개

마이바티스란 무엇인가요? 마이바티스 관련 콘텐츠 소개

不言
풀어 주다: 2018-10-12 14:44:05
앞으로
3020명이 탐색했습니다.

이 기사에서는 Mybatis가 무엇인지 소개합니다. 마이바티스 관련 콘텐츠 소개에는 참고할만한 가치가 있습니다. 도움이 필요한 친구들이 참고하시면 좋겠습니다.

MyBatis 소개

MyBatis는 원래 Apache iBatis의 오픈 소스 프로젝트였으며 이 프로젝트는 Apache에서 마이그레이션되었습니다. 소프트웨어 기반을 Google 코드로 변경하고 이름을 MyBatis로 변경했습니다. 2013년 11월 Github로 이전되었습니다.

MyBatis는 맞춤형 SQL, 저장 프로시저 및 고급 매핑을 지원하는 탁월한 지속성 계층 프레임워크입니다. MyBatis는 거의 모든 JDBC 코드와 매개변수 수동 설정 및 결과 세트 검색을 방지합니다. MyBatis는 인터페이스와 Java POJO(Plain Old Java Objects, 일반 Java 객체)를 데이터베이스의 레코드에 매핑하기 위해 구성 및 기본 맵에 간단한 XML 또는 주석을 사용할 수 있습니다.

MyBatis 참조 공식 홈페이지

http://www.mybatis.org/mybatis-3/zh/index.html

MyBatis 다운로드 주소

https://github.com/mybatis/mybatis-3

MyBatis의 장점

    #🎜 🎜 #
  • 오픈소스 우수한 지속성 레이어 프레임워크

  • SQL 문과 코드 분리

  • 구성 지향 프로그래밍

  • 복잡한 데이터 매핑에 대한 우수한 지원

  • 동적 SQL

    #🎜🎜 #

MyBatis 개발 단계

1 필수 jar 패키지를 추가합니다.
#🎜🎜 #1) mybatis-3.3.0 코어 패키지(로그 작업이 필요한 경우 종속 패키지를 가져올 수 있음)
2) 데이터베이스 드라이버(mysql-connector-java-5.1.22-bin) #🎜 🎜#

2. 데이터베이스 생성 및 테스트 데이터 추가

create table `tal_employee` (
    `id` int (11),
    `last_name` varchar (360),
    `email` varchar (300),
    `gender` char (9)
);
로그인 후 복사
INSERT INTO `tal_employee` (`id`, `last_name`, `email`, `gender`) VALUES('1','韩信','hanxin@gemail.com','男');
INSERT INTO `tal_employee` (`id`, `last_name`, `email`, `gender`) VALUES('2','LiBaihH','libai@gemail.com','男');
INSERT INTO `tal_employee` (`id`, `last_name`, `email`, `gender`) VALUES('3','孙尚香','sunshangxiang@gemail.com','女');
INSERT INTO `tal_employee` (`id`, `last_name`, `email`, `gender`) VALUES('4','安琪拉','anqila@gemail.com','女');
INSERT INTO `tal_employee` (`id`, `last_name`, `email`, `gender`) VALUES('5','Hello','Hello@gemail.com','男');
INSERT INTO `tal_employee` (`id`, `last_name`, `email`, `gender`) VALUES('6','Miya','Miya@gemail.com','男');
로그인 후 복사

3 엔터티 클래스 생성

public class Employee {
    private Integer id;
    private String lastName;
    private String email;
    private String gender;
    //此处省略get set toString。。。
}
로그인 후 복사
#🎜🎜 #
4. 엔터티 클래스 매핑 구성 파일 만들기
<?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="EmployeeMapper">
    <!-- 定义一个查询方法  resultType 返回值类型-->
    <select id="findAll" resultType="com.simple.mybatis.entitys.Employee">
        select * from tal_employee
    </select>
</mapper>
로그인 후 복사
5 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>
    <!-- 配置环境  default默认使用环境名字-->
    <environments default="development">
        <!-- 配置一个环境 -->
        <environment id="development">
            <!-- 使用事务JDBC事务管理器 -->
            <transactionManager type="JDBC" />
            <!-- 配置数据库连接 -->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver" />
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis" />
                <property name="username" value="root" />
                <property name="password" value="root" />
            </dataSource>
        </environment>
    </environments>
    <!-- 加载映射 -->
    <mappers>
        <mapper resource="com/simple/mybatis/entitys/EmployeeMapper.xml" />
    </mappers>
</configuration>
로그인 후 복사
SqlSessionFactory 개체 가져오기
private SqlSessionFactory sqlSessionFactory;
    @Before
    public void init() throws IOException{
        //读取mybatis主配置文件
        InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
        /**
         * 实例化SqlSessionFactory
         * 如果没有指定默认环境,可以在这里指定使用的环境ID,比如我先在有个DEV环境
         * sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream,"DEV");
         * 我这里已经使用了默认环境所以我就不用这种方式创建了
         */
        sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
    }
로그인 후 복사

데이터베이스에 액세스

SqlSession 개체 가져오기, 데이터베이스와의 대화에 사용됩니다. 데이터베이스와의 대화에서

SqlSession session = sqlSessionFactory.openSession();
로그인 후 복사
모든 직원 기록 가져오기

EmployeeMapper는 엔터티 클래스 매핑 파일의 네임스페이스이고 findAll은 선택 태그의 ID

List<Employee> employees = session.selectList("EmployeeMapper.findAll");
        for (Employee employee : employees) {
            System.out.println(employee);
        }
로그인 후 복사

액세스 결과:

Employee [id=1, lastName=null, email=hanxin@gemail.com, gender=男]
Employee [id=2, lastName=null, email=libai@gemail.com, gender=男]
Employee [id=3, lastName=null, email=sunshangxiang@gemail.com, gender=女]
Employee [id=4, lastName=null, email=anqila@gemail.com, gender=女]
Employee [id=5, lastName=null, email=Hello@gemail.com, gender=男]
Employee [id=6, lastName=null, email=Miya@gemail.com, gender=男]
로그인 후 복사

여기에서 데이터베이스에 액세스하는 것이 정상입니다. 왜 lastName이 비어 있나요?

테이블 필드와 클래스 속성 이름 간의 불일치에 대한 솔루션

이유: 여기서 엔터티 클래스의 속성은 lastName이라고 하며 데이터베이스는 컬럼 last_name 이름이 일치하지 않아 얻은 값이 비어있습니다.

해결책 1: 엔터티 클래스 매핑 파일에서 select 태그에 별칭을 지정합니다.

<select id="findAll" resultType="com.simple.mybatis.entitys.Employee">
        select id,last_name AS lastName,email,gender from tal_employee
</select>
로그인 후 복사

해결책 2: 에 mybatis 메인 구성 파일에 카멜 케이스 이름 지정을 먼저 구성해야 합니다. 그렇지 않으면 XML 오류가 보고됩니다.

먼저 mybatis 종속성 패키지를 추가해야 합니다. . 잠깐

MyBatis 구성 파일

이전의 간단한 MyBatis 사례를 통해 누구나 MyBatis에 대해 알아야 합니다. 기본 Hibernate와 같은 프레임워크의 구조에는 MyBatis에는 핵심 구성 파일과 매핑 파일이 포함되어 있습니다.

핵심 구성 파일(mybatis-config.xml): 연결 풀 정보, 트랜잭션, 매핑 파일 로드, 매개변수 설정 및 기타 구성을 포함한 Mybatis의 핵심 구성이 포함되어 있습니다. .

매핑 파일(EmployeeMapper.xml): 주로 데이터베이스, 연결, Sql 문 등에 대한 엔터티 개체 매핑을 구현합니다.

    핵심 프로필
  • tag

    설명# 🎜 🎜#

구성 환경# 🎜 🎜#

环境配置

  1. Mybatis可以通过

    配置多种环境,比如开发环境、测试环境和生产环境等。

  2. 不过要记住,尽管可以配置多个环境,但是SqlSessionFactory对象只能加载一个。如果你需要同时连接多个数据库,需要创建多个SqlSessionFactory实例。

事务管理

在 MyBatis来进行事务的设置,其中有两种类型的事务管理器。

  1. JDBC:这个配置就是直接使用了 JDBC 的提交和回滚设置,它依赖于从数据源得到的连接来管理事务范围。

  2. MANAGED:这个配置几乎没做什么。它从来不提交或回滚一个连接,而是让容器来管理事务的整个生命周期(比如 JEE 应用服务器的上下文)。 默认情况下它会关闭连接,然而一些容器并不希望这样,因此需要将 closeConnection 属性设置为 false 来阻止它默认的关闭行为。

<transactionManager type="MANAGED">
    <property name="closeConnection" value="false"/>
</transactionManager>
로그인 후 복사

如果你正在使用 Spring + MyBatis,则没有必要配置事务管理器, 因为 Spring 模块会使用自带的管理器来覆盖前面的配置。

数据源

使用标准的 JDBC 数据源接口来配置 JDBC 连接对象的资源。有三种数据源类型

  1. UNPOOLED:这个数据源的实现只是每次被请求时打开和关闭连接。

  2. POOLED:这种数据源的实现利用“池”的概念将 JDBC 连接对象组织起来, 避免了创建新的连接实例时所必需的初始化和认证时间。

  3. JNDI:使用JNDI在外部配置数据源。

properties标签

properties为外部属性,比如数据库连接信息可以配置到一个单独的properties文件中,然后在xml中进行引入。

添加一个db.properties文件

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/test
username=root
password=root
로그인 후 복사

在mybatis主配置文件中引用

<properties resource="db.properties" />
<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>
로그인 후 복사

映射器

通常MyBatis中将映射关系(非必须)和SQL语句写入到映射文件中,在配置文件中需要手动进行加载映射文件。加载映射文件使用进行加载。Mybatis中有4种加载方式。

1.使用resource,加载classpath路径进行加载。

<mappers>
    <mapper resource="com/simple/mybatis/entitys/EmployeeMapper.xml"/>
</mappers>
로그인 후 복사

2.使用url路径进行加载。

<mappers>
    <mapper url="file:///var/mappers/AuthorMapper.xml"/>
</mappers>
로그인 후 복사

3.使用calss进行加载,注解方式。

<!– 加载class类-->
<mappers>
    <mapper class="使用注解的全类名"/>
</mappers>
로그인 후 복사

4.使用package进行加载,注解方式。

<!– 加载某个包下的所有class文件-->
<mappers>
    <package name="com.simple.mybatis.entitys"/>
</mappers>
로그인 후 복사

别名的使用

之前,我们在sql映射xml文件中的引用实体类时,resultType需要写上实体类的全类名(包名+类名),如下:

<select id="findAll" resultType="com.simple.mybatis.entitys.Employee">
        select id,last_name AS lastName,email,gender from tal_employee
</select>
로그인 후 복사

在mybatis主配置文件中加入

<typeAliases>
    <typeAlias type=“com.simple.mybatis.entitys.Employee" alias="Employee"/>
</typeAliases>
로그인 후 복사

这样在resultType中就可以直接使用Employee类型了。这个别名是不区分大小写的。

위 내용은 마이바티스란 무엇인가요? 마이바티스 관련 콘텐츠 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:cnblogs.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
일부 외부 속성, 이러한 속성은 대체될 ​​수 있습니다. 🎜#Mybatis의 매우 중요한 조정 설정은 Mybatis의 기본 동작을 변경합니다.

xml 구성에만 관련된 Java 유형의 별칭을 설정합니다.

Mapper, MyBatis 매핑 파일을 로드합니다.

플러그인인 Mybatis를 사용하면 사용자가 매핑의 특정 지점에서 가로챌 수 있습니다.