>  기사  >  Java  >  Mybatis 시리즈 심층 설명 (1)---Mybatis 시작하기

Mybatis 시리즈 심층 설명 (1)---Mybatis 시작하기

黄舟
黄舟원래의
2017-03-02 10:30:121138검색

지난 2년 동안 springmvc + mybatis 조합이 꽤 인기가 있었는데, 원본 포스터의 경우 요즘은 시간이 나면 mybatis를 실제로 배워본 적이 없습니다. 이번에는 나의 학습 진행 상황을 바탕으로 마이바티스에 대한 일련의 튜토리얼을 만들고, 나의 학습 과정을 기록하며, 아직 마이바티스를 접하지 못한 친구들을 위해 탐색해 볼 계획입니다. 이 튜토리얼 시리즈는 얕은(사용) 것부터 깊은 것(mybatis 소스 코드 구현 분석)으로 진행하기 위한 것이므로 업데이트를 완료하는 데 며칠이 걸릴 수 있습니다. 자, mybatis 학습 여정을 시작하겠습니다. 이것은 첫 번째 튜토리얼입니다. 간단히 데모를 작성하고 함께 mybatis에 대해 알아봅시다. ​

편의상 maven을 사용하는데, 사용법에 대해서는 소개하지 않겠습니다. Maven을 사용해 본 적이 없다면 읽기에 영향을 미치지 않습니다.

1. Mybatis 환경 설정 및 간단한 예제

1. 새 웹 프로젝트를 생성하고 종속성 패키지를 추가합니다: mybatis 패키지, 데이터베이스 드라이버 패키지(저는 mysql을 사용합니다) 로그 패키지(저는 log4j를 사용합니다). 저는 maven 프로젝트이기 때문에 종속성 패키지를 추가하는 것은 간단합니다. pom.xml에 직접 종속성을 추가하기만 하면 됩니다.

pom.xml:

<dependencies>
      <!-- 添加junit -->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
    
    <!-- 添加log4j -->
    <dependency>
        <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
        <version>1.2.16</version>
    </dependency>
    
    <!-- 添加mybatis -->
    <dependency>
        <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
        <version>3.2.6</version>
    </dependency>
    
    <!-- 添加mysql驱动 -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.12</version>
    </dependency>
    
  </dependencies>


2. log4j 구성, mybatis 구성

클래스 경로 log4j에 log4j 구성을 위한 구성 파일을 생성합니다. .properties를 선택한 다음 Mybatis를 구성하기 위한 구성 파일 구성.xml을 만듭니다(파일 이름은 임의로 지정할 수 있음). log4j의 구성에 대해서는 많이 언급하지 않겠습니다. 여기서는 주로configuration.xml:

configuration.xml:

 1 <?xml version="1.0" encoding="UTF-8" ?> 
 2 <!DOCTYPE configuration 
 3   PUBLIC "-//mybatis.org//DTD Config 3.0//EN" 
 4   "http://mybatis.org/dtd/mybatis-3-config.dtd"> 
 5 <configuration> 
 6  
 7   <!-- 指定properties配置文件, 我这里面配置的是数据库相关 --> 
 8   <properties resource="dbConfig.properties"></properties> 
 9   
 10   <!-- 指定Mybatis使用log4j -->
 11   <settings>
 12      <setting name="logImpl" value="LOG4J"/>
 13   </settings>
 14       
 15   <environments default="development">
 16     <environment id="development">
 17       <transactionManager type="JDBC"/>
 18       <dataSource type="POOLED">
 19           <!--
 20           如果上面没有指定数据库配置的properties文件,那么此处可以这样直接配置 
21         <property name="driver" value="com.mysql.jdbc.Driver"/>
22         <property name="url" value="jdbc:mysql://localhost:3306/test1"/>
23         <property name="username" value="root"/>
24         <property name="password" value="root"/>
25          -->
26          
27          <!-- 上面指定了数据库配置文件, 配置文件里面也是对应的这四个属性 -->
28          <property name="driver" value="${driver}"/>
29          <property name="url" value="${url}"/>
30          <property name="username" value="${username}"/>
31          <property name="password" value="${password}"/>
32          
33       </dataSource>
34     </environment>
35   </environments>
36   
37   <!-- 映射文件,mybatis精髓, 后面才会细讲 -->
38   <mappers>
39     <mapper resource="com/dy/dao/userDao-mapping.xml"/>
40   </mappers>
41   
42 </configuration>


3. Demo 작성 시작

먼저 mysql 데이터베이스 test1

에 user:

테이블을 생성한 다음 Java 코드 작성을 시작합니다.

내 프로젝트 구조를 보세요:

 

먼저 엔터티 클래스를 작성합니다. User: User 클래스는 User 클래스에 해당합니다. 테이블 .

사용자:

 1 package com.dy.entity; 
 2  
 3 public class User { 
 4  
 5     private int id; 
 6     private String name; 
 7     private String password; 
 8     private int age; 
 9     private int deleteFlag;
 10     
 11     public int getId() {
 12         return id;
 13     }
 14     public void setId(int id) {
 15         this.id = id;
 16     }
 17     public String getName() {
 18         return name;
 19     }
 20     public void setName(String name) {
 21         this.name = name;
 22     }
 23     public String getPassword() {
 24         return password;
 25     }
 26     public void setPassword(String password) {
 27         this.password = password;
 28     }
 29     public int getAge() {
 30         return age;
 31     }
 32     public void setAge(int age) {
 33         this.age = age;
 34     }
 35     public int getDeleteFlag() {
 36         return deleteFlag;
 37     }
 38     public void setDeleteFlag(int deleteFlag) {
 39         this.deleteFlag = deleteFlag;
 40     }
 41     
 42 }


다른 UserDao 인터페이스 작성:

UserDao:

 1 package com.dy.dao; 
 2  
 3 import java.util.List; 
 4  
 5 import com.dy.entity.User; 
 6  
 7 public interface UserDao { 
 8  
 9     public void insert(User user);
 10     
 11     public User findUserById (int userId);
 12     
 13     public List<User> findAllUsers();
 14     
 15 }

다른 userDao-mapping.xml을 작성하세요(원하는 이름으로 지정할 수 있습니다):

userDao-mapping.xml:

 1 <?xml version="1.0" encoding="UTF-8" ?>   
 2 <!DOCTYPE mapper   
 3 PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"  
 4 "http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd"> 
 5 <mapper namespace="com.dy.dao.UserDao"> 
 6  
 7    <select id="findUserById" resultType="com.dy.entity.User" > 
 8       select * from user where id = #{id} 
 9    </select>
 10 
 11 </mapper>


userDao-mapping.xml相当于是UserDao的实现, 同时也将User实体类与数据表User成功关联起来。

4. 下面编写junit测试代码UserDaoTest:

 UserDaoTest:

 1 public class UserDaoTest { 
 2  
 3     @Test 
 4     public void findUserById() { 
 5         SqlSession sqlSession = getSessionFactory().openSession();  
 6         UserDao userMapper = sqlSession.getMapper(UserDao.class);  
 7         User user = userMapper.findUserById(2);  
 8         Assert.assertNotNull("没找到数据", user); 
 9     }
 10     
 11     //Mybatis 通过SqlSessionFactory获取SqlSession, 然后才能通过SqlSession与数据库进行交互12     private static SqlSessionFactory getSessionFactory() {  
13         SqlSessionFactory sessionFactory = null;  
14         String resource = "configuration.xml";  
15         try {  
16             sessionFactory = new SqlSessionFactoryBuilder().build(Resources  
17                     .getResourceAsReader(resource));
18         } catch (IOException e) {  
19             e.printStackTrace();  
20         }  
21         return sessionFactory;  
22     }  
23     
24 }


好啦,这样一个简单的mybatis 的demo就能成功运行啦。通过这个demo, 应该你就也能初步看出mybatis的运行机制,如果不清楚,也没关系。从下一篇文章开始,才开始正式讲解mybatis。

 以上就是深入浅出Mybatis系列(一)---Mybatis入门 的内容,更多相关内容请关注PHP中文网(www.php.cn)!


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.