zoukankan      html  css  js  c++  java
  • MyBatis3入门

    这里对mybatis的入门介绍以官方最新MyBatis3.4.1为准,具体文档及jar包请访问:https://github.com/mybatis/mybatis-3/releases

    以前经常都在使用mybatis,但通常都是和Spring结合起来用,在配置的时候往往都是在网上或者东配置西配置然后就能用了,但是一直没有仔细的对mybatis有一个系统而全面的配置。哪怕就是单独写一个mybatis的demo都写不出来,前段时间刚好发现mybatis的一篇官方用户手册,所以想从头对mybatis有一个系统而全面的认识。同样对官方用户手册的全篇翻译也是近期的一个小目标。

    为了方便对mybatis完全不了解,不知道从何入手的新手做一个简单的讲解。想要写一个mybatis的demo不用去创建一个Java EE的Web工程,这是我以前很大很大的一个误区,以为对此类框架的使用我必须要去创建一个Web工程,创建好了一个Web工程,我又要得去写html,写一个servlet交互等等等等,一想到这儿,我就不想写了。其实大可不必,只需要创建一个普通Java工程即可写出一个mybatis的demo。

    我们首先来看看工程的包结构。mapper包是什么呢,我不知道怎么形容,映射,或者可以是dao层——对数据库的操作。pojo即是java实体类。util提供一些工具类。Main即客户端测试代码。mybatis-config.xml为mybatis的配置文件。

    我们还需要为工程引入两个jar包。

    我们首先要理解清楚mybatis的核心是什么,官方用户手册中说,每个MyBatis应用都以一个SqlSessionFactory为核心。一个SqlSessionFactory实例能够通过SqlSessionFactoryBuilder获得。SqlSessionFactoryBuilder能够从XML配置文件或者从配置类构建一个SqlSessionFactory实例。(Every MyBatis application centers around an instance of SqlSessionFactory. A SqlSessionFactory instance can be acquired by using the SqlSessionFactoryBuilder. SqlSessionFactoryBuilder can build a SqlSessionFactory instance from an XML configuration file, or from a custom prepared instance of the Configuration class.)

    我们对SqlSessionFactory的获取采用从XML配置文件的方式获取。首先来实现SessionFactory类。

     1 package day_8_mybatis.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 /**
    12  * 获取SqlSession实例
    13  * @author turbo
    14  *
    15  * 2016年9月11日
    16  */
    17 public class SessionFactory {
    18     public static SqlSession getSqlSession(String resource) throws IOException{
    19         InputStream inputStream = Resources.getResourceAsStream(resource);
    20         SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
    21         SqlSession sqlSession = sqlSessionFactory.openSession();
    22         
    23         return sqlSession;
    24     }
    25 }

    接着开始写mybatis-config.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     <properties>
     7         <property name="driver" value="com.mysql.jdbc.Driver"/>
     8         <property name="url" value="jdbc:mysql://localhost:3306/test"/>    
     9         <property name="username" value="root"/>
    10         <property name="password" value="0000"/>
    11     </properties>
    12     <environments default="development">
    13         <environment id="development">
    14             <transactionManager type="JDBC" />
    15             <dataSource type="POOLED">
    16                 <property name="driver" value="${driver}"/>
    17                 <property name="url" value="${url}"/>
    18                 <property name="username" value="${username}"/>
    19                 <property name="password" value="${password}"/>
    20             </dataSource>            
    21         </environment>
    22     </environments> 
    23     
    24     <mappers>
    25         <mapper resource="day_8_mybatis/mapper/UserMapper.xml"/>
    26     </mappers>    
    27 </configuration>
    28  

    配置文件中的properties也可以采用外部引用的方式,及将6-11行修改为:

    1 driver=com.mysql.jdbc.Driver
    2 url=jdbc:mysql://localhost:3306/mybatis
    3 name=root
    4 password=XDP

    注:此篇MyBatis3入门不讲详细原理及各参数是什么意思,主要是对mybatis的一个demo入门程序。

    下面新建一个User pojo类,其中的变量对应数据库中user表的字段(当然这也不是必须的)。

     1 package day_8_mybatis.pojo;
     2 
     3 /**
     4  * User实体类
     5  * @author turbo
     6  *
     7  * 2016年9月11日
     8  */
     9 public class User {
    10     private int id;
    11     private String name;
    12     private String age;
    13     private String sex;
    14     public int getId() {
    15         return id;
    16     }
    17     public void setId(int id) {
    18         this.id = id;
    19     }
    20     public String getName() {
    21         return name;
    22     }
    23     public void setName(String name) {
    24         this.name = name;
    25     }
    26     public String getAge() {
    27         return age;
    28     }
    29     public void setAge(String age) {
    30         this.age = age;
    31     }
    32     public String getSex() {
    33         return sex;
    34     }
    35     public void setSex(String sex) {
    36         this.sex = sex;
    37     }
    38 }

    现在开始构建mapper包里的UserMapper.java和UserMapper.xml

    UserMapper.java就是一个对数据库的访问接口,不用去实现,因为mybatis已经为我们完成了这件事。

     1 package day_8_mybatis.mapper;
     2 
     3 import day_8_mybatis.pojo.User;
     4 
     5 /**
     6  * mapper数据库访问接口
     7  * @author turbo
     8  *
     9  * 2016年9月11日
    10  */
    11 public interface UserMapper {
    12     User getUserById(int id);
    13 }

    UserMapper.xml即是对数据库的具体的sql操作。

    1 <?xml version="1.0" encoding="UTF-8"?>
    2 <!DOCTYPE mapper  
    3   PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"  
    4   "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 
    5 <mapper namespace="day_8_mybatis.mapper.UserMapper">
    6     <select id="getUserById" resultType="day_8_mybatis.pojo.User">
    7         select * from user where id = #{id}
    8     </select>
    9 </mapper> 

    需要注意的地方是,第5行的namespace必须是此mapper.xml文件对应的mapper接口。第6行的id必须是mapper接口的方法名称,resultType在这里必须是User类的绝对路径(因为此处查询的是一个User类),当然你也可以以别名的方式。第7行#{id}的“id”必须是mapper接口中getUserById方法的参数名称。

    下面我们就可以写客户端类进行测试了。

     1 package day_8_mybatis;
     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 import day_8_mybatis.mapper.UserMapper;
    12 import day_8_mybatis.pojo.User;
    13 import day_8_mybatis.util.SessionFactory;
    14 
    15 /**
    16  * 客户端
    17  * @author turbo
    18  *
    19  * 2016年9月11日
    20  */
    21 public class Main {
    22 
    23     /**
    24      * @param args
    25      * @throws IOException 
    26      */
    27     public static void main(String[] args) throws Exception {
    28         String resource = "day_8_mybatis/mybatis-config.xml";        //获取mybatis配置文件路径
    29         SqlSession sqlSession = SessionFactory.getSqlSession(resource);    //通过SessionFactory工具类(此工具类为自己构造即util包中的SessionFactory)构造SqlSession
    30         
    31         UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
    32         User user = userMapper.getUserById(1);
    33         
    34         System.out.println(user.getAge());
    35     }
    36 
    37 }

    至于数据库就是简单的几个字段,根据如图创建即可。

    这样我们就完成了一个mybatis的一个入门demo程序。

  • 相关阅读:
    虚函数和纯虚函数
    MS CRM 2011中PartyList类型字段的实例化
    MS CRM 2011的自定义与开发(12)——表单脚本扩展开发(4)
    MS CRM 2011的自定义与开发(12)——表单脚本扩展开发(2)
    MS CRM 2011的自定义和开发(10)——CRM web服务介绍(第二部分)——IOrganizationService(二)
    MS CRM 2011 SDK 5.08已经发布
    MS CRM 2011 Q2的一些更新
    最近很忙
    Microsoft Dynamics CRM 2011最近的一些更新
    补一篇,Update Rollup 12 终于发布了
  • 原文地址:https://www.cnblogs.com/yulinfeng/p/5862303.html
Copyright © 2011-2022 走看看