zoukankan      html  css  js  c++  java
  • Mybatis基础入门 I

    作为ORM的重要框架,MyBatisiBatis的升级版。Mybatis完全将SQL语句交给编程人员掌控,这点和Hibernate的设计理念不同(至于Hibernate的理念,待我先学习学习)。

    下面的教程,是一个基于STS(也可以是eclipse,需要事先安装好maven)的一个入门级教程。下文分为两个部分,第一部门为简单版教程,第二部分是step-by-step教程。

       

    Part one

       

    简单教程:

    1. 新建maven工程。
    2. 添加mybatismysql包,以及log4j的包。
    3. 新建或者使用现存的数据库,并准备好若干语句。例如使用mysql的默认数据库world
    4. 新建mybatis-config.xml配置文件,作为mybaits的基础配置。
    5. 新建POJO,City。
    6. 新建mapper文件:city.xml,进行配置。
    7. 新建Interface,CityMapper,对应city.xml的方法。
    8. 新建Class: CityService,并implemente CityMapper,实现各种方法。
    9. 新建ClassMyBatisSqlSessionFactory,用户获取mybatissession
    10. 新建测试文件,进行测试。

    ----

       

    Part two

       

    这部分对第一部分进行细化,并配以图片说明:

    详细教程:

    1. 新建maven工程。
      • 选择新建工程,选择maven项目
      • 选择quickStart类型的maven
      • 输入Group Id和Artifact Id并完成工程:
    2. 添加mybatismysql包,以及log4j的包。
      • 编辑pom.xml文件,添加以下包:

        其中红框内的为必选,其余随意。

      其pom.xml文件如下:

          

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
    
      <groupId>jacob</groupId>
      <artifactId>mybatisdemo</artifactId>
      <version>0.0.1-SNAPSHOT</version>
      <packaging>jar</packaging>
    
      <name>mybatisdemo</name>
      <url>http://maven.apache.org</url>
    
      <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      </properties>
    
      <dependencies>
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>3.8.1</version>
          <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.2.3</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.27</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.5</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.7.5</version>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
            <scope>runtime</scope>
        </dependency>
      </dependencies>
    </project>

          

      •   整个工程的目录如下:

    1.   新建或者使用现存的数据库,并准备好若干语句。例如使用mysql的默认数据库world
      这是个现成的数据库(懒得新建一个),本教程只用到其中的一张表,表结构如下:

    2. 新建mybatis-config.xml配置文件,作为mybaits的基础配置。
      • 在src/main/resources中新建文件:mybatis-config.xml,文件内容如下:
      • <?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>
            <typeAliases>
                <typeAlias alias="City" type="jacob.domain.City" />
            </typeAliases>
            <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://localhost:3306/world" />
                        <property name="username" value="root" />
                        <property name="password" value="111111" />
                    </dataSource>
                </environment>
            </environments>
        
            <mappers>
                <mapper resource="jacob/mapper/city.xml" />
            </mappers>
        </configuration>
      • 逐一解释:

    3. 新建POJO,City。

      POJO的意思是:Plain Old Java Object,简单的说,就是一个普通的Java Bean。

      该Bean的内容对应于city表。

      文件如下:

       1 package jacob.domain;
       2 
       3 public class City {
       4     int id;
       5     String name;
       6     String countryCode;
       7     String district;
       8     int population;
       9 
      10     public int getId() {
      11         return id;
      12     }
      13 
      14     public void setId(int id) {
      15         this.id = id;
      16     }
      17 
      18     public String getName() {
      19         return name;
      20     }
      21 
      22     public void setName(String name) {
      23         this.name = name;
      24     }
      25 
      26     public String getCountryCode() {
      27         return countryCode;
      28     }
      29 
      30     public void setCountryCode(String countryCode) {
      31         this.countryCode = countryCode;
      32     }
      33 
      34     public String getDistrict() {
      35         return district;
      36     }
      37 
      38     public void setDistrict(String district) {
      39         this.district = district;
      40     }
      41 
      42     public int getPopulation() {
      43         return population;
      44     }
      45 
      46     public void setPopulation(int population) {
      47         this.population = population;
      48     }
      49 
      50 }
      View Code
    4. 新建mapper文件:city.xml,进行配置。
       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="jacob.mapper.CityMapper">
       6     <resultMap type="City" id="CityResult">
       7         <id property="id" column="ID" />
       8         <result property="name" column="name" />
       9         <result property="countryCode" column="CountryCode" />
      10         <result property="district" column="District" />
      11         <result property="population" column="Population" />
      12     </resultMap>
      13     <select id="selectCity" parameterType="int" resultMap="CityResult">
      14         select *
      15         from city where id = #{id}
      16     </select>
      17 
      18     <select id="selectAll" resultType="City">
      19         select * from city;
      20     </select>
      21 
      22 </mapper>
      View Code

      解释如下:

    5. 新建Interface,CityMapper,对应city.xml的方法。

      代码如下:

       1 package jacob.mapper;
       2 
       3 import java.util.List;
       4 
       5 import jacob.domain.City;
       6 
       7 public interface CityMapper {
       8     City selectCity(int id);
       9 
      10     List<City> selectAll();
      11 }
      View Code
    6. 新建Class: CityService,并implemente CityMapper,实现各种方法。

      代码如下:

       1 package jacob.services;
       2 
       3 import java.util.List;
       4 
       5 import jacob.domain.City;
       6 import jacob.mapper.CityMapper;
       7 import jacob.mybatisdemo.MyBatisSqlSessionFactory;
       8 
       9 import org.apache.ibatis.session.SqlSession;
      10 import org.slf4j.Logger;
      11 import org.slf4j.LoggerFactory;
      12 
      13 public class CityService implements CityMapper {
      14     private Logger logger = LoggerFactory.getLogger(getClass());
      15 
      16     public City selectCity(int id) {
      17         SqlSession sqlSession = MyBatisSqlSessionFactory.openSession();
      18 
      19         try {
      20             CityMapper cityMapper = sqlSession.getMapper(CityMapper.class);
      21             return cityMapper.selectCity(id);
      22         } finally {
      23             sqlSession.close();
      24         }
      25     }
      26 
      27     public List<City> selectAll() {
      28         SqlSession sqlSession = MyBatisSqlSessionFactory.openSession();
      29 
      30         try {
      31             CityMapper cityMapper = sqlSession.getMapper(CityMapper.class);
      32             return cityMapper.selectAll();
      33         } finally {
      34             sqlSession.close();
      35         }
      36     }
      37 }
      View Code
    7. 新建ClassMyBatisSqlSessionFactory,用户获取mybatissession
       1 package jacob.mybatisdemo;
       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 
      13     private static SqlSessionFactory sqlSessionFactory;
      14 
      15     public static SqlSessionFactory getSqlSessionFactory() {
      16         if (sqlSessionFactory == null) {
      17             InputStream inputStream;
      18             try {
      19                 inputStream = Resources
      20                         .getResourceAsStream("mybatis-config.xml");
      21                 sqlSessionFactory = new SqlSessionFactoryBuilder()
      22                         .build(inputStream);
      23             } catch (IOException e) {
      24                 e.printStackTrace();
      25             }
      26         }
      27         return sqlSessionFactory;
      28     }
      29     
      30     public static SqlSession openSession(){
      31         return getSqlSessionFactory().openSession();
      32     }
      33 
      34     public static void main(String[] args) {
      35         // TODO Auto-generated method stub
      36 
      37     }
      38 
      39 }
      View Code
    8. 新建测试文件,进行测试。
       1 package jacob.mybatisdemo;
       2 
       3 import java.util.List;
       4 
       5 import jacob.domain.City;
       6 import jacob.services.CityService;
       7 
       8 public class App {
       9     public static void main(String[] args) {
      10         CityService cityService = new CityService();
      11         City result = cityService.selectCity(2);
      12         System.out.println(result.getName());
      13 
      14         List<City> list = cityService.selectAll();
      15         for (City c : list) {
      16             System.out.println(c.getName());
      17         }
      18     }
      19 }
      View Code
    9. 输出结果:

    文章以贴代码为主。工程下载地址:https://www.dropbox.com/s/w3j5jhy3lc12hzt/mybatisdemo.zip,请继续关注。

    后续将整合spring,使用mybatis-generator来生成绝大多数的代码。

  • 相关阅读:
    Android内存优化5 了解java GC 垃圾回收机制3
    一起刑事案件法庭辩护 z
    辩护技巧总结——律师在刑事辩护中应注意的几个问题 z
    证据对抗、证据链标准 z
    里德九步审讯法 z
    WCF服务在高并发情况下报目标积极拒绝的异常处理 z
    C#EasyHook例子C# Hook 指定进程C#注入指定进程 z
    玄机论坛Socket类库源码 当前版本 2.6.3 更新日期:10-09/2015 z
    庭审全程文字实录 z
    庭审精彩语录整理 z
  • 原文地址:https://www.cnblogs.com/XuYankang/p/3446712.html
Copyright © 2011-2022 走看看