如何使用mybatis《一》

mybatis作为ORM轻量级框架一出现就吸引了无数人的眼球,比hibernate要简单且入门较容易,下面开始我的第一个mybatis程序。

一、下载mybatis的包

我们知道任何一个框架都会有其包,我们从其官方网站下载其包,官网网址为:http://www.mybatis.org/mybatis-3/,我这里使用的版本为3.3.0。下载完成之后解压可看到如下的目录结构:

mybatis-3.3.0.jar是其包,lib目录下是其依赖包,我们把这些包放到我们的项目中。我这里创建的是javaweb项目,方便以后做web测试,编写的程序是普通的java程序。

二、配置环境

把mybatis的包放到项目的lib目录下之后,接下来时配置mybatis的环境,我们知道mybatis做为ORM框架,属于开发中的DAO层,是和数据库打交道的,所以我们必须有数据,这里以mysql数据为例,具体的建库和建表这里不阐述。

在src目录下创建mybatis的配置文件,文件名称为:configuratin.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="Message" type="com.cn.imooc.entity.Message"/>
    </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://127.0.0.1:3306/weixin?useUnicode=true&characterEncoding=UTF-8" />
             <property name="username" value="root"/>
             <property name="password" value="123456"/>
             </dataSource>
         </environment>
     </environments>
<!--映射文件-->    <mappers>
         <mapper resource="com/cn/mappers/message.xml"/>
     </mappers>
 </configuration>

在mybatis配置文件中还有很多的配置项这里仅仅使用了这几个,

<typeAliases>  别名配置,即把实体类做个别名,目的在于在映射文件中使用实体类时不使用全限类名,而是使用别名,起到简单的作用

<environments>  配置了一些环境 比如数据配置,这里我们配置了数据源

<mappers> 配置映射文件,这里配置了com.cn.mappers包下的message.xml映射文件

下面对Message实体类进行说明,此实体类里是一些属性,如下,

package com.cn.imooc.entity;

public class Message {
    private String id;
    private String command;
    private String description;
    private String comment;
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getCommand() {
        return command;
    }
    public void setCommand(String command) {
        this.command = command;
    }
    public String getDescription() {
        return description;
    }
    public void setDescription(String description) {
        this.description = description;
    }
    public String getComment() {
        return comment;
    }
    public void setComment(String comment) {
        this.comment = comment;
    }
    @Override
    public String toString() {
        return "Message [id=" + id + ", command=" + command + ", description="
                + description + ", comment=" + comment + "]";
    }

}

提供了getXXX和setXXX方法,其中setXXX方法很关键,我这里的属性和数据库的字段名是一致,可以方便使用mybatis查询出结果之后反射到实体类中,当然也可以和数据库表字段名不一致,后续会进行说明。

message.xml映射文件如下,

<mapper namespace="com.cn.inter.IMessageOperation">
     <select id="selectUserByID" parameterType="int" resultType="com.cn.imooc.entity.Message">
         select * from `message` where id = #{id}
     </select>

     <select id="selectMessages"  resultType="Message">
         select id,
                command,
                description,
                comment
                from message;

     </select>
</mapper>

这是我的mapper映射文件,里边有两个方法,一个是:selectUserById 根据id查询,另一个是selectMessages 查询所有

好了,到此为止,我们的mybatis的环境搭建完成,下面可以进行测试了。

三、测试

下面是测试代码,

package com.cn.test;

import java.io.IOException;
import java.io.Reader;

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

import com.cn.imooc.entity.Message;

public class MyTest {

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        Reader reader;
        SqlSession sqlSession=null;
        try {
            //1、获得sqlSessionFactory
            reader = Resources.getResourceAsReader("Configuration.xml");
            SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(reader);
            //2、获得sqlSession
             sqlSession=sqlSessionFactory.openSession();
            //3、查询
            Message message=sqlSession.selectOne("com.cn.inter.IMessageOperation.selectUserByID", 1);
            System.out.println(message);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        finally{
            sqlSession.close();
        }

    }

}

从上面可以看出,首先需要一个SqlSessionFactory,然后由sqlSessionFactory获得sqlSession,由sqlSession执行查询,使用了selectOne方法,第一个参数是映射文件中的nameSpace+“.”方法名,第二个参数是查询参数。

至此,一个mybatis程序就写完了,后续还会介绍别的版本。

有不当之处欢迎指正

谢谢

时间: 2024-10-28 21:17:26

如何使用mybatis《一》的相关文章

Mybatis(二) 全局配置文件详解

这节来说说全局配置文件的东西,非常简单.看一遍就懂了. --WH 一.全部配置内容 SqlMapConfig.xml的配置内容和顺序如下,顺序不能乱.现在来对这些属性的意思一一进行讲解. 二.properties 作用:引用java属性文件中的配置信息,比如,加载连接数据库的各种属性的配置文件. db.properties 1 <!-- 2 properties:引用java属性文件中的配置信息 3 比如加载连接数据库的帐号密码等信息的properties配置文件. 4 使用${}可以引用已经加

mybatis(二)执行CRUD操作的两种方式配置和注解

一.使用MyBatis对表执行CRUD操作——基于XML的实现 1.定义sql映射xml文件 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

框架学习笔记之Mybatis(二)

一.动态sql 通过mybatis提供的标签,实现sql语句的拼接. 1.where <select id="findUserList" parameterType="user" resultType="user"> select * from user <!--使用where可以自动处理第一个and--> <where> <if test="id!=null and id!=''"&

mybatis二(参数处理)

1.单个参数 mybatis不会做特殊处理. #{参数名/任意名}:取出参数值. 2.多个参数 mybatis会做特殊处理. 多个参数会被封装成 一个map. key:param1...paramN,或者参数的索引也可以. value:传入的参数值. #{}就是从map中获取指定的key的值: 多个参数传递的时候要使用命名参数的形式: 3.命名参数:明确指定封装参数时map的key:@Param("id") 多个参数会被封装成 一个map, key:使用@Param注解指定的值 val

mybatis(二):config配置

一.properties引入外部配置文件:resource:引入类路径下的资源. <properties resource="dbconfig.properties"></properties> 二.settings包含很多重要的设置项,可以设置是否开启缓存,延迟加载,驼峰命名规则等:name:设置项名:value:false或true. <settings> <setting name="mapUnderscoreToCamelCa

MyBatis(二) resultMap使用

1.问题引出: 在做映射时候,之前,按照表DDL的字段名,设置java对象的属性.但是,在实际应用无法完全保证表字段名与java类属性完全一致,而且java类应该保持驼峰格式的规范风格.对于类似字段user_id等的情况,不能较好的处理.这时,需要使用resultMap标签来将,DDL的字段名和java类属性名一一对应起来. 下面实现一个使用resultMap做映射的实例,来阐述其使用方法: 2.resultMap使用,resultMap和resultType的不同使用场景: 在表的Mapper

Spring整合MyBatis(二)源码分析

在Spring配置Mybatis的文件中我们可以看到如下代码: <!-- 扫描dao --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="org.tarena.note.dao"> </property> MapperScannerConfig

mybatis(二)

这次接着上次写增删改查吧. 现将上节的方法改造一下,改造测试类. package cn.my.test; import java.io.IOException; import java.io.InputStream; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; impor

Mybatis二

1 Mybatis的映射文件 1.1 #和$的区别? 1.1.1 #和$的相同点 都是可以从map中获取值或者pojo对象的值 1.1.2 #和$的不同点 #{}以预编译的形式,将参数设置到sql语句中. ${}取出的值直接拼接在sql语句中,但是可能会有SQL注入问题. 示例: EmployeeMapper.java package com.xuweiwei.mybatis.mapper; import com.xuweiwei.mybatis.pojo.Employee; import or

Mybatis(二)总结

1. 输入映射(就是映射文件中可以传入哪些参数类型) 1)基本类型 2)pojo类型 3)Vo类型2. 输出映射(返回的结果集可以有哪些类型) 1)基本类型 2)pojo类型 3)List类型3. 动态sql:动态的拼接sql语句,因为sql中where条件有可能多也有可能少 1)where:可以自动添加where关键字,还可以去掉第一个条件的and关键字 2)if:判断传入的参数是否为空 3)foreach:循环遍历传入的集合参数 4)sql:封装查询条件,以达到重用的目的 4. 对单个对象的