初探MyBatis

来源:互联网 发布:安卓锁机软件生成器 编辑:程序博客网 时间:2024/05/30 23:49

先来介绍一下Mybatis的背景:

MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO)(以上语句来自百度)


对于刚初探Mybatis的我来说,它相比于JDBC有很多优点:

1)不用硬性的去修改SQL语句,Mybatis中SQL语句都封装在XML文件中

2)资源得到充分的利用,JDBC在每次操作完成后都要关闭连接,而Mybatis有一个连接池,随时随用

3)能将SQL查询的结果映射成对象

说完这些优点,下面我们就来进行实战吧!

1)新建一个java项目,在项目lib目录下加入以下jar
是Mybatis的文件目录
首先加入Mybatis的核心jar: mybatis-3.2.1.jar
然后是lib文件的Mybatis的依赖jar包 (文件下所有的jar都要添加)
最后是mysql的驱动包:mysql-connector-java-5.1.7-bin.jar
Mybatis下载地址: http://download.csdn.net/detail/jolingogo/5220163
mysql驱动包下载地址:  http://www.pc6.com/softview/SoftView_99415.html



 2)建立一个本地数据库,在数据库中新建一个表名为:User

可以使用SQLyog软件(破解版)来打开数据库
CREATE TABLE User(id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(20), age INT);


3)在工程中新建一个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>
    <!-- 配置数据库运行的环境 -->
    <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/mybatis" />
                <property name="username" value="root" />
                <property name="password" value="XDP" />
            </dataSource>
        </environment>
    </environments>
    
    <mappers>
        <!-- 注册userMapper.xml文件-->
        <mapper resource="com.sp.mybatis.mapper/UserMapper.xml"/>
    </mappers>
    
</configuration>

4)在包com.sp.mybatis.domain下新建一个User类

/**
 * 
 */
package com.sp.mybatis.domain;


/**
 * 类说明
 * 
 * @author saipeng
 * @since 2015年10月15日
 */
public class User {


private int id;


private String name;


private int age;


public int getId() {
return id;
}


public void setId(int id) {
this.id = id;
}


public String getName() {
return name;
}


public void setName(String name) {
this.name = name;
}


public int getAge() {
return age;
}


public void setAge(int age) {
this.age = age;
}


@Override
public String toString() {
return "User [id=" + id + ", name=" + name + ", age=" + age + "]";
}


}

5)在包com.sp.mybatis.mapper下新建一个UserMapper.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:命名空间,一般情况下可以随便起一个名字,但要是用mapper
接口动态代理对象的时候要用到mapper的权限定名,格式如:该文件所在的报名+文件名称-->


<mapper namespace="text">
   
   <!--查询用户信息
    select:将select标签内容称为statement
    id:userMapper中唯一的标示,statement的id
    parameterType:指定向SQL中传入参数的类型
    resultType:将SQL查询结果映射成java对象的类型
    #{}是占位符
     -->
    <select id="getUserByName" parameterType="String" 
        resultType="com.sp.mybatis.domain.User">
        select * from users where id=#{name}
    </select>
</mapper>

6)在包com.sp.mybatis.mapper下新建一个UserMapper.java

/**
 * 
 */
package com.sp.mybatis.mapper;


import com.sp.mybatis.domain.User;


/**
 * 类说明
 * @author saipeng
 * @since 2015年10月15日
 */
public interface UserMapper {
/**

* 方法说明:方法名称一定要和UserMapper.xml中select的id是一样的
* 参数类型和返回值的类型也得一样
* @author saipeng
* @since 2015年10月15日
* @param name
* @return
* @throws Exception
*/
public User getUserByName(String name) throws Exception;

}

7)编写一个测试类

package me.gacl.test;


import java.io.IOException;
import java.io.InputStream;
import java.io.Reader;
import com.sp.mybatis.domain.User;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;


public class Test1 {


    public static void main(String[] args) throws IOException {
        //mybatis的配置文件
        String resource = "conf.xml";
        //使用Mybatis提供的Resource类来加载配置文件
        InputStream is = Resource.getResourceAsStream(resource);
        //拿到sqlSession会话工厂
        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);
        //创建能执行映射文件中sql的sqlSession
        SqlSession session = sessionFactory.openSession();
        /**
         * 映射sql的标识字符串,
         *text是UserMapper.xml文件中mapper标签的namespace属性的值,
         * getUser是select标签的id属性值,通过select标签的id属性值就可以找到要执行的SQL
         */
        String statement = "text.getUser";//映射sql的标识字符串
        //执行查询返回一个唯一user对象的sql
        User user = session.selectOne(statement, 1);
        System.out.println(user);
    }
}

   到此结束初探Mybatis的任务,第一次写blog,望多多包涵!!!



0 0
原创粉丝点击