array(2) { ["docs"]=> array(10) { [0]=> array(10) { ["id"]=> string(3) "428" ["text"]=> string(77) "Visual Studio 2017 单独启动MSDN帮助(Microsoft Help Viewer)的方法" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(8) "DonetRen" ["tagsname"]=> string(55) "Visual Studio 2017|MSDN帮助|C#程序|.NET|Help Viewer" ["tagsid"]=> string(23) "[401,402,403,"300",404]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400964" ["_id"]=> string(3) "428" } [1]=> array(10) { ["id"]=> string(3) "427" ["text"]=> string(42) "npm -v;报错 cannot find module "wrapp"" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "zzty" ["tagsname"]=> string(50) "node.js|npm|cannot find module "wrapp“|node" ["tagsid"]=> string(19) "[398,"239",399,400]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400760" ["_id"]=> string(3) "427" } [2]=> array(10) { ["id"]=> string(3) "426" ["text"]=> string(54) "说说css中pt、px、em、rem都扮演了什么角色" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(12) "zhengqiaoyin" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400640" ["_id"]=> string(3) "426" } [3]=> array(10) { ["id"]=> string(3) "425" ["text"]=> string(83) "深入学习JS执行--创建执行上下文(变量对象,作用域链,this)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "Ry-yuan" ["tagsname"]=> string(33) "Javascript|Javascript执行过程" ["tagsid"]=> string(13) "["169","191"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511399901" ["_id"]=> string(3) "425" } [4]=> array(10) { ["id"]=> string(3) "424" ["text"]=> string(30) "C# 排序技术研究与对比" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "vveiliang" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(8) ".Net Dev" ["catesid"]=> string(5) "[199]" ["createtime"]=> string(10) "1511399150" ["_id"]=> string(3) "424" } [5]=> array(10) { ["id"]=> string(3) "423" ["text"]=> string(72) "【算法】小白的算法笔记:快速排序算法的编码和优化" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "penghuwan" ["tagsname"]=> string(6) "算法" ["tagsid"]=> string(7) "["344"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511398109" ["_id"]=> string(3) "423" } [6]=> array(10) { ["id"]=> string(3) "422" ["text"]=> string(64) "JavaScript数据可视化编程学习(二)Flotr2,雷达图" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "chengxs" ["tagsname"]=> string(28) "数据可视化|前端学习" ["tagsid"]=> string(9) "[396,397]" ["catesname"]=> string(18) "前端基本知识" ["catesid"]=> string(5) "[198]" ["createtime"]=> string(10) "1511397800" ["_id"]=> string(3) "422" } [7]=> array(10) { ["id"]=> string(3) "421" ["text"]=> string(36) "C#表达式目录树(Expression)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "wwym" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(4) ".NET" ["catesid"]=> string(7) "["119"]" ["createtime"]=> string(10) "1511397474" ["_id"]=> string(3) "421" } [8]=> array(10) { ["id"]=> string(3) "420" ["text"]=> string(47) "数据结构 队列_队列实例:事件处理" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "idreamo" ["tagsname"]=> string(40) "C语言|数据结构|队列|事件处理" ["tagsid"]=> string(23) "["246","247","248",395]" ["catesname"]=> string(12) "数据结构" ["catesid"]=> string(7) "["133"]" ["createtime"]=> string(10) "1511397279" ["_id"]=> string(3) "420" } [9]=> array(10) { ["id"]=> string(3) "419" ["text"]=> string(47) "久等了,博客园官方Android客户端发布" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(3) "cmt" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511396549" ["_id"]=> string(3) "419" } } ["count"]=> int(200) } 222 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
      Mybatis基础入门 I
    • 输入Group Id和Artifact Id并完成工程:
      Mybatis基础入门 I
  2. 添加mybatismysql包,以及log4j的包。
    • 编辑pom.xml文件,添加以下包:
      Mybatis基础入门 I
      其中红框内的为必选,其余随意。

    其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>

 

 

 

      

    •   整个工程的目录如下:

      Mybatis基础入门 I

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

    Mybatis基础入门 I
  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>

       

    • 逐一解释:

      Mybatis基础入门 I

  3. 新建POJO,City。

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

    该Bean的内容对应于city表。

    文件如下:

    Mybatis基础入门 IMybatis基础入门 I
     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,进行配置。
    Mybatis基础入门 IMybatis基础入门 I
     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

     


    解释如下: Mybatis基础入门 I

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

    代码如下:

    Mybatis基础入门 IMybatis基础入门 I
     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,实现各种方法。

    代码如下:

    Mybatis基础入门 IMybatis基础入门 I
     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
    Mybatis基础入门 IMybatis基础入门 I
     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. 新建测试文件,进行测试。
    Mybatis基础入门 IMybatis基础入门 I
     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. 输出结果:

    Mybatis基础入门 I

 

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

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

相关文章: