Mybatis的使用

MyBatis是一个支持普通SQL查询存储过程高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装。MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。

一 .mybatis jar包的导入

     【mybatis】

         mybatis-3.1.1.jar

  【MYSQL驱动包】
    mysql-connector-java-5.1.7-bin.jar

 

二.准备一个数据表  users

1 create database mybatis;
2 use mybatis;
3 CREATE TABLE users(id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(20), age INT);
4 INSERT INTO users(NAME, age) VALUES('张三', 27);
5 INSERT INTO users(NAME, age) VALUES('李四', 30);

三.创建一个conf.xml文件

<!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="123456" />

            </dataSource>

        </environment>

    </environments>

    

    <mappers>

        <!-- 注册userMapper.xml文件, 

         userMapper.xml位于me.gacl.mapping这个包下,所以resource写成me/gacl/mapping/userMapper.xml-->

         <mapper resource="userMapper.xml"/>

     </mappers>

    

</configuration>

四.定义一个实体类 User ,实体类的属性和表的字段名称一一对应
省略。

五.创建sql映射文件。
创建一个mapping包,专门用于存放sql映射文件,在包中创建一个userMapper.xml文件。

<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<!-- 为这个mapper指定一个唯一的namespace,namespace的值习惯上设置成包名+sql映射文件名,这样就能够保证namespace的值是唯一的

例如namespace="me.gacl.mapping.userMapper"就是me.gacl.mapping(包名)+userMapper(userMapper.xml文件去除后缀)

 -->

<mapper namespace="me.gacl.mapping.userMapper">

    <!-- 在select标签中编写查询的SQL语句, 设置select标签的id属性为getUser,id属性值必须是唯一的,不能够重复

    使用parameterType属性指明查询时使用的参数类型,resultType属性指明查询返回的结果集类型

    resultType="me.gacl.domain.User"就表示将查询结果封装成一个User类的对象返回

    User类就是users表所对应的实体类

    -->

    <!-- 

        根据id查询得到一个user对象

     -->

    <select id="getUser" parameterType="int" 

        resultType="com.menchao.mybatis.User">

        select * from users where id=#{id}

    </select>

</mapper>

 

六.在conf.xml文件中注册userMapper.xml文件

   <mappers>

        <!-- 注册userMapper.xml文件, 

         userMapper.xml位于me.gacl.mapping这个包下,所以resource写成me/gacl/mapping/userMapper.xml  如果没有就不需要-->

         <mapper resource="userMapper.xml"/>

     </mappers>

 

七.代码执行,获取数据库

public static void main(String[] args) throws IOException {

String resource = "conf.xml";

 System.out.println(TestMyBatis.class.getResource("conf.xml"));

        System.out.println(TestMyBatis.class.getResource("/"));

 

        System.out.println(TestMyBatis.class.getClassLoader());

          

        

        //使用类加载器加载mybatis的配置文件(它也加载关联的映射文件)

        java.io.InputStream is = (java.io.InputStream) TestMyBatis.class.getResourceAsStream("conf.xml");

        

        SqlSessionFactory sessionFactory = null;

        sessionFactory = new SqlSessionFactoryBuilder().build(is);

      

        //使用MyBatis提供的Resources类加载mybatis的配置文件(它也加载关联的映射文件)

        //Reader reader = Resources.getResourceAsReader(resource); 

        //构建sqlSession的工厂

        //SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);

        //创建能执行映射文件中sql的sqlSession

        SqlSession session = sessionFactory.openSession();

        /**

         * 映射sql的标识字符串,

         * me.gacl.mapping.userMapper是userMapper.xml文件中mapper标签的namespace属性的值,

         * getUser是select标签的id属性值,通过select标签的id属性值就可以找到要执行的SQL  

         */

        String statement = "me.gacl.mapping.userMapper.getUser";//映射sql的标识字符串

        //执行查询返回一个唯一user对象的sql

        User user = session.selectOne(statement, 1);

        System.out.println(user);

 

}

 

输出结果  

User [id=1, name=zhang, age=20]

 

posted @ 2016-10-28 15:21  行藏在我  阅读(329)  评论(0编辑  收藏  举报