Mybatis的入门之路

mybatis的基础教程,内容主要来源于官网的document。介绍一些如何创建一个mybatis。

(ps.这里只给出mybatis下载链接,对应的sql驱动库请自行下载,这里我用的Mysql

先上这个工程图:

再建mybatis的核心配置文件 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>
    <!-- 加载配置文件。这里踩过一个坑,他这个label的顺序有要求的: Content Model : (properties?, settings?, 
        typeAliases?, typeHandlers?, objectFactory?, objectWrapperFactory?, reflectorFactory?, 
        plugins?, environments?, databaseIdProvider?, mappers?) 起初properties和typeAliases的位置调转了然后就报错了。感觉不太人性化啊。╮(╯▽╰)╭ -->
    <properties resource="dbinfo.properties">
    </properties>

    <!-- 就是Aliase,alias => type 内部转换 -->
    <typeAliases>
        <typeAlias type="com.denny.dao.course" alias="course" />
    </typeAliases>

    <!--  环境配置,加载驱动 -->
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC" />
            <dataSource type="POOLED">
                <property name="driver" value="${driver}" />
                <property name="url" value="${url}" />
                <property name="username" value="${username}" />
                <property name="password" value="${password}" />
            </dataSource>
        </environment>

    </environments>

    <!-- 这里的mappers就是对应多个不同的SQL CURD语句吧,可以多条。。 -->
    <mappers>
        <mapper resource="jdbc1Mapper.xml" />
    </mappers>


</configuration>

 

建个数据库dbinfo.properties的一些信息,给mybatis-config.xml核心配置文件读取:

url =  jdbc:mysql://localhost/jdbc1?autoReconnect=true&useSSL=false
driver = com.mysql.jdbc.Driver
username = mysql
password = mysql

 

再来就是要创建一个mapper,对应的sql语句了jdbc1Mapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  <!--  namespace就是指的那个接口包,用接口给定语句描述查询是mybatis的新特性,后面有介绍,course指的是在核心配置中用Aliase替代了 -->
<mapper namespace="com.denny.mapper.courseMapper">
  <select id="selectCourse" resultType="course">
    select * from course where C = #{id}
  </select>
</mapper>

 

配置的内容搞定了,接下来就是写java 代码了。码数不多,仅仅几行就搞定了,比起jbdc那叫一个方便introduction.java

 

package com.denny.intro;

import java.io.IOException;
import java.io.InputStream;

import javax.annotation.Resource;
import javax.annotation.Resources;
import javax.xml.transform.Source;

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import com.denny.dao.course;
import com.denny.mapper.courseMapper;

public class introduction {

    public introduction() {
        // TODO Auto-generated constructor stub
    }
    
    //这里是采用读取xml的方式去构建SqlSessionFactory,直接从java程序中构建的话,感觉不太便利就不讲了。
    public void loadMybatis(){
        
        String srouce = "mybatis-config.xml";        //mybatis的核心配置文件的uri
        
        SqlSessionFactory factory = null;             //暂时理解成一个工厂,能生产出许多可执行的CURD
        
        //加载工厂
        try {
            InputStream iStream = org.apache.ibatis.io.Resources.getResourceAsStream(srouce);
            factory = new SqlSessionFactoryBuilder().build(iStream);
            
        } catch (IOException e) {
            // TODO Auto-generated catch block
            
            e.printStackTrace();
            System.out.println(e.getMessage().toString());
            
        }
        
        //SqlSession就是可以执行Sql语句的方法;官方点的介绍:
        //SqlSession 完全包含了面向数据库执行 SQL 命令所需的所有方法。
        SqlSession session = factory.openSession();
        course c = null;
        try {
            /*
            *得到了session这样的对象后,要执行sql的任意操作都可以了。
            *这里有两种方法,一种通过session.selectOne去操作,还有一种用接口方式操作,这里选用后者。
            *理由在文档中有介绍:
            *"使用对于给定语句能够合理描述参数和返回值的接口(比如说BlogMapper.class),
            * 你现在不但可以执行更清晰和类型安全的代码,而且还不用担心易错的字符串字面值以及强制类型转换"
            */
            
            courseMapper cm = session.getMapper(courseMapper.class);
            c = cm.selectCourse(1);     //给出要查询的ID
        } catch (Exception e) {
            // TODO: handle exception
            System.out.println(e.getMessage().toString());
        }

        System.out.println(c.getCName());
    }

    public static void main(String[] args) {
        new introduction().loadMybatis();
        System.out.println("Test");
    }

}

 

接下来就是一些DAO和接口类了。就写个概要吧:

package com.denny.dao;

public class course {
    int C;
    String CName;
    int T;
        //...........省略了这些属性的get和set方法  
}

package com.denny.mapper;

import com.denny.dao.course;


public interface courseMapper {
    course selectCourse(int id);
}

 数据库表(course)就是有3列C(int),Cname(String),T(int)。不细讲了;

 

如果成功的话应该就可以找出对应C等于1的列数了。

 

刚刚看完Mybatis的入门内容,就先整理整理。有不足的欢迎拍砖。撤~~

 

posted @ 2017-03-28 12:23  DennyZ  阅读(529)  评论(1编辑  收藏  举报