간단히 말하면 MyBatis는 JDBC 개발을 단순화하기 위한 탁월한 지속성 계층 프레임워크입니다
. MyBatis 자체는 Apache의 오픈 소스 프로젝트로, 원래는 iBatis라고 불렸으며 2010년에 프로젝트가 Google Code로 이동되어 MyBatista로 이름이 변경되었습니다. 2013년에 프로젝트가 GitHub로 이전되었습니다. MyBatis是一款优秀的持久层框架,用于简化JDBC开发
。MyBatis本身是Apache的一个开源项目,期初叫做iBatis,2010年这个项目前移到google code,并改名为MyBatista。在2013年该项目迁移到GitHub。
概念中的持久层怎么理解?指将数据保存到数据库的那一层代码。在海量的代码中,为了保证每一块代码的职责单一,把同数据库操作的代码叫做持久层
。同时,JavaEE三层架构中,表现层
负责页面的展示,业务层
负责逻辑的处理,而持久层就是负责将数据存储到数据库中。
什么是框架?框架是指一个半成品的软件
,是一套可重用的,通用的,软件基础代码模型,同时,在框架基础之上进行开发大量的节省了成本,而且更加的规范,通用且扩展性较强。
既然我们使用MyBatis来简化JDBC开发,那么JDBC究竟存在什么缺点呢?
首先在注册驱动,获取链接的时候,字符串信息如果发生变动,例如密码,此时需要手动修改。其次,在定义sql语句时候,使用字符串同样使得代码的维护性变差。
当我们手动设置参数和手动设置结果集时,存在着操作繁琐的问题。
下面JDBC使用的一段代码做展示:
既然JDBC开发存在硬编码,操作繁琐的缺点,那么怎么解决这些问题呢?首先我们把字符串写到单独的配置文件中,解决JDBC硬编码的问题,其次,可以采用一种方法来自动完成JDBC操作繁琐的代码。于是,我们使用MyBatis来简化JDBC开发。MyBatis免除了几乎所有的JDBC代码以及设置参数和获取结果集的工作。
퍼시스턴스 레이어 개념을 어떻게 이해하나요
? 데이터베이스에 데이터를 저장하는 코드 레이어를 말합니다. 대규모 코드에서는 각 코드 조각이 단일 책임을 갖도록 하기 위해 동일한 데이터베이스에서 작동하는 코드를지속성 계층
이라고 합니다. 동시에 JavaEE 3계층 아키텍처에서는 프리젠테이션 계층
이 페이지 표시를 담당하고 비즈니스 계층
이 논리 처리를 담당하며 지속성 계층이 데이터베이스에 데이터를 저장하는 일을 담당합니다.
MyBatis를 사용하여 JDBC 개발을 단순화하는데, JDBC의 단점은 무엇인가요?
MyBatis는 거의 모든 JDBC 코드와 매개변수 설정 작업, 결과 세트 획득 작업을 제거합니다.
<environment id="test"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <!--数据库连接信息--> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql:///mybatis?useSSL=false"/> <property name="username" value="root"/> <property name="password" value="1234"/> </dataSource> </environment> </environments>
SQL 매핑 파일 작성, SQL 문 통합 관리, 코딩 문제 해결
코드 작성 시 다음 단계를 따르세요.
POJO 클래스 정의
핵심 구성 파일을 로드하고 sqlSessionFactory 개체 가져오기
sqlSession 개체 가져오기 및 sql 문 실행Release resources전체 프로젝트 구조 표시:
다음 데모에서는 자세한 데모를 사용하여 빠르게 시작합니다. MyBatis:
사용자 테이블 생성, 데이터 추가:
create database mybatis; use mybatis; drop table if exists tb_user; create table tb_user( id int primary key auto_increment, username varchar(20), password varchar(20), gender char(1), addr varchar(30) ); INSERT INTO tb_user VALUES (1, '小张', 'abc', '男', '北京'); INSERT INTO tb_user VALUES (2, '小李', '123', '女', '天津'); INSERT INTO tb_user VALUES (3, '小美', '456', '女', '上海');
여기에서는 MySQL 데이터베이스가 사용되며, 데이터베이스 시각화 도구로 navicat이 사용됩니다.
idea에서 모듈 생성 및 좌표 가져오기:
idea에서 새 프로젝트를 클릭하고 빌드 시스템으로 Maven을 선택한 다음 프로젝트 이름을 입력하고(여기서는 MyBatis-demo가 사용됨) 그룹 ID와 아티팩트 ID를 설정합니다. 그리고 만들기를 클릭하세요. 그런 다음 종속성을 가져오고 다음 종속성 코드를 pom.xml 파일에 배치합니다.<dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>x.x.x</version> </dependency>
<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13</version> <scope>test</scope> </dependency> <!-- 添加slf4j日志api --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.20</version> </dependency> <!-- 添加logback-classic依赖 --> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.2.3</version> </dependency> <!-- 添加logback-core依赖 --> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-core</artifactId> <version>1.2.3</version> </dependency>
<?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="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql:///mybatis?useSSL=false"/> <property name="username" value="root"/> <property name="password" value="abc123"/> </dataSource> </environment> </environments> <mappers> <!--加载sql的映射文件--> <mapper resource="UerMapper.xml"/> </mappers> </configuration>
<?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="test"> <select id="selectAll" resultType="com.example.pojo.User"> select * from tb_user; </select> </mapper>
<mappers> <!--加载sql的映射文件--> <mapper resource="UserMapper.xml"/> </mappers>
package com.example.pojo; public class User { private Integer id; private String username; private String password; private String gender; private String addr; public Integer getId() { return id; } public String getUsername() { return username; } public String getPassword() { return password; } public String getGender() { return gender; } public String getAddr() { return addr; } @Override public String toString() { return "User{" + "id=" + id + ", username='" + username + '\'' + ", gender='" + gender + '\'' + ", addr='" + addr + '\'' + '}'; } }
public class MyBatisDemo { public static void main(String[] args) throws IOException { //加载MyBatis核心配置文件 String resource = "mybatis.config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); } }
获取sqlSession对象,执行sql语句:
//获取SqlSession对象,用它来执行sql SqlSession sqlSession=sqlSessionFactory.openSession(); //执行sql List<User> users = sqlSession.selectList("test.selectALL"); System.out.println(users); //释放资源 sqlSession.close();
到这里我们就完成了整个项目的构建,接下来我们运行程序,可以看到,我们成功的查询到tb_user
中的数据!
위 내용은 Java에서 MyBatis의 빠른 시작 예제 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!