zoukankan      html  css  js  c++  java
  • Mybatis入门DEMO

    下面将通过以下步骤说明如何使用MyBatis开发一个简单的DEMO:

    步骤一:新建表STUDENTS

      字段有: Stu_Id、Stu_Name、Stu_Age、Stu_Birthday

     1 CREATE TABLE `student` (
     2 `Stu_Id`  bigint(20) NOT NULL AUTO_INCREMENT ,
     3 `Stu_Name`  varchar(30) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL ,
     4 `Stu_Age`  int(4) NULL DEFAULT NULL ,
     5 `Stu_Birthday`  timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ,
     6 PRIMARY KEY (`Stu_Id`)
     7 )
     8 ENGINE=InnoDB
     9 DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
    10 AUTO_INCREMENT=1
    11 ;

    步骤二:新建Maven项目,添加相关的依赖包

     1 <dependencies>
     2   <dependency>
     3     <groupId>org.mybatis</groupId>
     4     <artifactId>mybatis</artifactId>
     5     <version>3.2.2</version>
     6   </dependency>
     7   <dependency>
     8     <groupId>mysql</groupId>
     9     <artifactId>mysql-connector-java</artifactId>
    10     <version>5.1.22</version>
    11     <scope>runtime</scope>
    12   </dependency>
    13   <dependency>
    14     <groupId>org.slf4j</groupId>
    15     <artifactId>slf4j-api</artifactId>
    16     <version>1.7.5</version>
    17   </dependency>
    18   <dependency>
    19     <groupId>org.slf4j</groupId>
    20     <artifactId>slf4j-log4j12</artifactId>
    21     <version>1.7.5</version>
    22     <scope>runtime</scope>
    23   </dependency>
    24   <dependency>
    25     <groupId>log4j</groupId>
    26     <artifactId>log4j</artifactId>
    27     <version>1.2.17</version>
    28     <scope>runtime</scope>
    29   </dependency>
    30   <dependency>
    31     <groupId>junit</groupId>
    32     <artifactId>junit</artifactId>
    33     <version>4.11</version>
    34     <scope>test</scope>
    35   </dependency>
    36 </dependencies>

    步骤三:新建mybatis-config.xml 和映射器StudentMapper.xml配置文件

    mybatis-config.xml

     1 <?xml version="1.0" encoding="utf-8"?>
     2 <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
     3 "http://mybatis.org/dtd/mybatis-3-config.dtd">
     4 <configuration>
     5   <typeAliases>
     6     <typeAlias alias="Student" type="com.MyBatisDemo.domain.Student" />
     7   </typeAliases>
     8   <environments default="development">
     9     <environment id="development">
    10       <transactionManager type="JDBC" />
    11       <dataSource type="POOLED">
    12         <property name="driver" value="com.mysql.jdbc.Driver" />
    13         <property name="url" value="jdbc:mysql://localhost:3306/mybatisdemo" />
    14         <property name="username" value="root" />
    15         <property name="password" value="123123" />
    16       </dataSource>
    17     </environment>
    18   </environments>
    19   <mappers>
    20     <mapper resource="com/MyBatisDemo/mappers/StudentMapper.xml" />
    21   </mappers>
    22 </configuration>

    StudentMapper.xml

     1 <?xml version="1.0" encoding="utf-8"?>
     2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     3 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
     4 <mapper namespace="com.MyBatisDemo.mappers.StudentMapper">
     5   <resultMap type="Student" id="StudentResult">
     6     <id property="stuId" column="Stu_Id" />
     7     <result property="StuName" column="Stu_Name" />
     8     <result property="StuAge" column="Stu_Age" />
     9     <result property="StuBirthday" column="Stu_Birthday" />
    10   </resultMap>
    11  
    12   <select id="findStudentById" parameterType="int" resultType="Student">
    13      SELECT Stu_Id, Stu_Name, Stu_Age, Stu_Birthday 
    14          FROM STUDENT WHERE Stu_Id=#{Id}
    15   </select>
    16 </mapper>

    步骤四:新建建MyBatisSqlSessionFactory单例模式类

     1 package com.MyBatisDemo.util;
     2 
     3 import java.io.IOException;
     4 import java.io.InputStream;
     5 
     6 import org.apache.ibatis.io.Resources;
     7 import org.apache.ibatis.session.SqlSession;
     8 import org.apache.ibatis.session.SqlSessionFactory;
     9 import org.apache.ibatis.session.SqlSessionFactoryBuilder;
    10 
    11 public class MyBatisSqlSessionFactory {
    12     private static SqlSessionFactory sqlSessionFactory;
    13 
    14     public static SqlSessionFactory getSqlSessionFactory() {
    15         if (sqlSessionFactory == null) {
    16             InputStream inputStream;
    17             try {
    18                 inputStream = Resources.getResourceAsStream("mybatis-config.xml");
    19                 sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
    20             } catch (IOException e) {
    21                 e.printStackTrace();
    22                 throw new RuntimeException(e.getCause());
    23             }
    24         }
    25         return sqlSessionFactory;
    26     }
    27 
    28     public static SqlSession openSession() {
    29         return getSqlSessionFactory().openSession();
    30     }
    31 }

    步骤五:新建映射器StudentMapper 接口和 StudentService 类

    StudentMapper.java

    1 package com.MyBatisDemo.mappers;
    2 
    3 import com.MyBatisDemo.domain.Student;
    4 
    5 public interface StudentMapper {
    6     Student findStudentById(Integer id); 
    7 }

    StudentService.java

     1 package com.MyBatisDemo.service;
     2 import org.apache.ibatis.session.SqlSession;
     3 import org.slf4j.Logger;
     4 import org.slf4j.LoggerFactory;
     5 
     6 import com.MyBatisDemo.domain.Student;
     7 import com.MyBatisDemo.mappers.StudentMapper;
     8 import com.MyBatisDemo.util.MyBatisSqlSessionFactory;
     9 
    10 public class StudentService {
    11     private Logger logger = LoggerFactory.getLogger(getClass());
    12 
    13     public Student findStudentById(Integer studId)
    14     {
    15         SqlSession sqlSession = MyBatisSqlSessionFactory.openSession();
    16         try
    17         {
    18             StudentMapper studentMapper =
    19                 sqlSession.getMapper(StudentMapper.class);
    20             return studentMapper.findStudentById(studId);
    21         }
    22         finally
    23         {
    24             sqlSession.close();
    25         }
    26     }
    27 }

    步骤六:新建一个JUnit 测试类来测试 StudentService

     1 package com.MyBatisDemo;
     2 
     3 import org.junit.AfterClass;
     4 import org.junit.BeforeClass;
     5 import org.junit.Test;
     6 
     7 import com.MyBatisDemo.domain.Student;
     8 import com.MyBatisDemo.service.StudentService;
     9 public class StudentServiceTest
    10 {
    11     private static StudentService studentService;
    12     @BeforeClass
    13     public static void setup()
    14     {
    15         studentService = new StudentService();
    16     }
    17     @AfterClass
    18     public static void teardown()
    19     {
    20         studentService = null;
    21     }
    22 
    23     @Test
    24     public void testFindStudentById()
    25     {
    26         Student student = studentService.findStudentById(1);
    27         //Assert.assertNotNull(student);
    28         System.out.println(student);
    29     }
    30 }

     首先配置了MyBatis最主要的配置文件mybatis-config.xml,里面包含了JDBC连接参数;

     配置了映射器Mapper XML配置文件文件,里面包含了SQL语句的映射。

     使用mybatis-config.xml内的信息创建了SqlSessionFactory对象。每个数据库环境应该就一个SqlSessionFactory对象实例,所以使用了单例模式只创建一个SqlSessionFactory实例。

     创建了一个映射器Mapper接口StudentMapper,其定义的方法签名和在StudentMapper.xml中定义的完全一样(即映射器Mapper接口中的方法名跟StudentMapper.xml中的id的值相同)。注意StudentMapper.xml中namespace的值被设置成com.MyBatisDemo.mappers.StudentMapper,是StudentMapper接口的完全限定名。这使我们可以使用接口来调用映射的SQL语句。

     

  • 相关阅读:
    fiddler的详细分析
    在Linux中mysql的一些基本操作
    MySQL运行状态show status详解
    第1节-软件测试基本概念及分类
    HTML
    python 目录
    Web框架 Bottle 、Flask 、Tornado
    Query
    JavaScript基础篇
    DOM、BOM 操作
  • 原文地址:https://www.cnblogs.com/xinhuaxuan/p/6158546.html
Copyright © 2011-2022 走看看