项目模型:

一、创建一个web项目ssm001

1、1准备数据

在数据创建表并添加数据

user表:

dept表:

/*
Navicat MySQL Data Transfer

Source Server         : ybt
Source Server Version : 50137
Source Host           : 127.0.0.1:3306
Source Database       : ssm001

Target Server Type    : MYSQL
Target Server Version : 50137
File Encoding         : 65001

Date: 2016-11-16 22:35:47
*/

;

-- ----------------------------
-- Table structure for dept
-- ----------------------------
DROP TABLE IF EXISTS `dept`;
CREATE TABLE `dept` (
  `DEPTNO` ,) DEFAULT NULL,
  `DNAME` ) DEFAULT NULL,
  `LOC` ) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of dept
-- ----------------------------
', 'ACCOUNTING', 'NEW YORK');
', 'RESEARCH', 'DALLAS');
', 'SALES', 'CHICAGO');
', 'OPERATIONS', 'BOSTON');

emp表:

/*
Navicat MySQL Data Transfer

Source Server         : ybt
Source Server Version : 50137
Source Host           : 127.0.0.1:3306
Source Database       : ssm001

Target Server Type    : MYSQL
Target Server Version : 50137
File Encoding         : 65001

Date: 2016-11-16 22:36:14
*/

;

-- ----------------------------
-- Table structure for emp
-- ----------------------------
DROP TABLE IF EXISTS `emp`;
CREATE TABLE `emp` (
  `EMPNO` ,) NOT NULL,
  `ENAME` ) DEFAULT NULL,
  `JOB` ) DEFAULT NULL,
  `MGR` ,) DEFAULT NULL,
  `HIREDATE` date DEFAULT NULL,
  `SAL` ,) DEFAULT NULL,
  `COMM` ,) DEFAULT NULL,
  `DEPNO` ,) DEFAULT NULL,
  PRIMARY KEY (`EMPNO`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of emp
-- ----------------------------
');
');
');
');
');
');
');
');
');
');
');
');
', 'KING', null, null, null, null, null, null);

1、2在web-INF下lib加入mybatis所需jar包:

1、3在项目src下配置mybatis配置文件config.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://www.mybatis.org/dtd/mybatis-3-config.dtd">
<!--    configuration根标签             -->
<configuration>
    <!--    二、(1)定义实体bean名和数据库列名相对应  type:实体的路径   alias:实体的别名         -->
    <typeAliases>
        <typeAlias type="com.ckx.entity.User" alias="User" />
    </typeAliases>

    <!--    一、    配置环境信息          -->
    <environments default="development">
        <environment id="development">
            <!--    指定事务管理机制          -->
            <transactionManager type="JDBC"></transactionManager>
            <!--    配置数据源   POOLED: 连接池         -->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver" />
                <property name="url" value="jdbc:mysql://localhost:3306/ssm001?useUnicode=true&amp;characterEncoding=utf8" />
                <property name="username" value="root" />
                <property name="password" value="123456" />
            </dataSource>
        </environment>
    </environments>
    <!--     二、 (2)引入关系映射文件!!!这里有严格顺序!不能放在数据源配置前    -->
    <mappers>
        <mapper resource="com/ckx/entityMapper/User.xml" />
    </mappers>

</configuration>

请注意注释  “二、 (2)引入关系映射文件!!!这里有严格顺序!不能放在数据源配置前 ”,lz当时人为一个映射地址放在那里斗舞所谓,

结果报错,莫名其妙的找了好久的错,关于原因请参考:http://www.cnblogs.com/ckxlovejava/p/6059960.html

二、创建实体与映射文件:

2、1创建和数据库对应的实体user类,注意变量和数据库字段的对应

package com.ckx.entity;

public class User {
    private int userId;
    private String userName;
    private String passWord;

    public int getUserId() {
        return userId;
    }
    public void setUserId(int userId) {
        this.userId = userId;
    }
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
    public String getPassWord() {
        return passWord;
    }
    public void setPassWord(String passWord) {
        this.passWord = passWord;
    }

}

2.2配置与实体相对的映射文件用于存放sql语句(user.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">
<mapper namespace="com.ckx.entityMapper.User">

    <select id="selectRoolByuserId" parameterType="int" resultType="User">
        select * from ckx_user where UserId=#{UserId}
    </select>

</mapper>

三、测试

3.1创建测试类UserlTest.java:

package com.ckx.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.ckx.entity.User;

public class UserlTest {
    //获取org.apache.ibatis.session.SqlSessionFactory很重要
    static SqlSessionFactory sessionFactory;
    static Reader reader;
    public User user;

    static{
        try {
            //获取org.apache.ibatis.io.Resources从config.xml的读入流
            reader= Resources.getResourceAsReader("config.xml");
            sessionFactory = new SqlSessionFactoryBuilder().build(reader);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    //从数据库读取一条信息
    private void selectRoolByuserId() {
        SqlSession session = sessionFactory.openSession();
        user= session.selectOne("com.ckx.entityMapper.User.selectRoolByuserId",1 );
        System.out.println(user.getUserName());
    }

    public static void main(String[] args) {
        UserlTest ut = new UserlTest();
        ut.selectRoolByuserId();

    }

}

运行:ckx

综合说明:

3.2查询一个结果集,例如:查询一个部门下的所有员工:

在emp表配置:

<!--    定义结果集 type:指定数据类型 id:标识结果集  -->
    <resultMap type="Emp" id="empList">
        <!--        column:数据库字段别名  property:实体bean属性名称-->
        <result column="EMPNO" property="empno" />
        <result column="ENAME" property="ename" />
        <result column="JOB" property="job" />
        <result column="MGR" property="mgr" />
        <result column="HIREDATE" property="hiredate" />
        <result column="SAL" property="sal" />
        <result column="COMM" property="comm" />
        <result column="DEPNO" property="depno" />
    </resultMap>

    <!--通过部门编号查询该部门的员工信息 这里返回的是一个结果集-->
    <select id="selectEmps" parameterType="int" resultMap ="empList">
        select * from emp where depno=#{depno}
    </select>

因为我们查询的是一个部门下的所有人,因此查询返回结果我们用一个emplist,但是程勋不知道这个emplist是什么?这时候我们就要对他进行定义,

定义一个返回resultMap,并把sql查询的返回结果emplist赋给resultMap做ID,当然resultMap里放的数据肯定是实体emp,在resultMap里我们在对

数据库和实体进行一一指定,column:数据库字段别名 property:实体bean属性名称。

定义一个测试类进行测试:

package com.ckx.test;

import java.io.IOException;
import java.io.Reader;
import java.util.Iterator;
import java.util.List;

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.ckx.entity.Emp;
import com.ckx.entity.User;

public class Emptest {
    //获取org.apache.ibatis.session.SqlSessionFactory很重要
    static SqlSessionFactory sessionFactory;
    static Reader reader;

    static{
        try {
            //获取org.apache.ibatis.io.Resources从config.xml的读入流
            reader= Resources.getResourceAsReader("config.xml");
            sessionFactory = new SqlSessionFactoryBuilder().build(reader);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }//从数据库读取一个list集合
    public void selectEmps(){
        SqlSession session = sessionFactory.openSession();
        List<Emp> emps = session.selectList("com.ckx.entityMapper.Emp.selectEmps", 20);
        //迭代器遍历
        Iterator it = emps.iterator();
        while (it.hasNext()) {
            Emp e= (Emp) it.next();
            System.out.println(e.getEname());;
        }
        //FOREACH循环迭代
        for (Emp emp : emps) {
            System.out.println(emp.getEname());
        }
    }public static void main(String[] args) {
        Emptest et = new Emptest();
        et.selectEmps();
    }

}

测试结果(文中用了两种遍历方式):

SMITH
JONES
FORD
SMITH
JONES
FORD

完成。

mybatis(一)环境的搭建的更多相关文章

  1. Spring+SpringMVC+MyBatis深入学习及搭建(三)——MyBatis全局配置文件解析

    转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/6874672.html 前面有写到Spring+SpringMVC+MyBatis深入学习及搭建(二)——My ...

  2. Spring+SpringMVC+MyBatis深入学习及搭建(八)——MyBatis查询缓存

    转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/6956206.html 前面讲到:Spring+SpringMVC+MyBatis深入学习及搭建(七)——My ...

  3. Spring+SpringMVC+MyBatis深入学习及搭建(九)——MyBatis和Spring整合

    转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/6964162.html 前面讲到:Spring+SpringMVC+MyBatis深入学习及搭建(八)--My ...

  4. Spring+SpringMVC+MyBatis深入学习及搭建(十二)——SpringMVC入门程序(一)

    转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/6999743.html 前面讲到:Spring+SpringMVC+MyBatis深入学习及搭建(十一)——S ...

  5. Spring+SpringMVC+MyBatis深入学习及搭建(十二)——SpringMVC入门程序

    转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/6999743.html 前面讲到:Spring+SpringMVC+MyBatis深入学习及搭建(十一)--S ...

  6. Spring+SpringMVC+MyBatis深入学习及搭建(十四)——SpringMVC和MyBatis整合

    转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/7010363.html 前面讲到:Spring+SpringMVC+MyBatis深入学习及搭建(十三)--S ...

  7. Spring+SpringMVC+MyBatis深入学习及搭建(十六)——SpringMVC注解开发(高级篇)

    转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/7085268.html 前面讲到:Spring+SpringMVC+MyBatis深入学习及搭建(十五)——S ...

  8. 总结:Mac前端开发环境的搭建(配置)

    新年新气象,在2016年的第一天,我入手了人生中第一台自己的电脑(大一时好友赠送的电脑在一次无意中烧坏了主板,此后便不断借用别人的或者网站的).macbook air,身上已无分文...接下来半年的房 ...

  9. CentOS7 + mono +Jexus 环境的搭建

    CentOS7的安装和配置 1,从http://www.centos.org/下载CentOS7的镜像,并在VMWare中创建该镜像的虚拟机,为方便操作,把虚拟机的网络连接设置为桥接模式:在安装过程中 ...

  10. ubuntu14.04安装及web环境的搭建

    在进行接下来的工作之前首先得准备一个Ubuntu的启动U盘以及腾出一个至少50G的系统盘(在网上看到有人用20G的,不知道效果怎么样).关于Ubuntu启动U盘大家可以参考这个帖子 http://ti ...

随机推荐

  1. FAT32 FAT区__FAT表解析

    一. FAT 表概述 位置: 紧跟在文件系统的“保留区”之后 : 有两个数据结构完全相同的FAT(FAT,File Allocation Tbale 文件分配表)组成. 作用: FAT表项,描述文件系 ...

  2. rgb转16进制 简单实现

    function rgbToHex(r, g, b) { return ((r << 16) | (g << 8) | b).toString(16); }

  3. Spring的xml文件配置方式实现AOP

    配置文件与注解方式的有很大不同,多了很多配置项. beans2.xml <?xml version="1.0" encoding="UTF-8"?> ...

  4. sql语句查询最近七天 三十天 数据

    几个小时内的数据 DATE_SUB(NOW(), INTERVAL 5 HOUR) 今天 select * from 表名 where to_days(时间字段名) = to_days(now()); ...

  5. shell学习--grep2

    grep相关的练习,解释下面grep表达式的含义: grep '\<Tom\>' file 打印file中包含单词 Tom的行 grep 'Tome Savage' file 打印file ...

  6. mysql命令行基本操作

    开启:打开电脑的“开始”菜单栏,找到“运行”,在运行框中直接输入:net start mysql.再 登录:Mysql  -P 端口号  -h  mysql主机名\ip -u root (用户)  - ...

  7. 基本套接字编程(3) -- select篇

    1. I/O复用 我们学习了I/o复用的基本知识,了解到目前支持I/O复用的系统调用有select.pselect.poll.epoll.而epoll技术以其独特的优势被越来越多的应用到各大企业服务器 ...

  8. Unity 2D Touch Movement

    Demo试玩(Kongregate既然也有广告时间了 --!)http://www.kongregate.com/games/zhaoqingqing/2d-touch-movement 操作步骤 1 ...

  9. (DP6.1.4.2)POJ 1088 滑雪

    其实下面用到的是搜索.(呜呜,DP写的过了测试用例但是却总是AC不了,所以改用搜索来做了) /* * POJ_1088.cpp * * Created on: 2013年10月13日 * Author ...

  10. bzoj列表2

    之前发过一次了,这里的题较水,没什么好讲的 bzoj1088 直接穷举前两位即可,话说程序员的扫雷是白玩的? bzoj1083 裸的最小生成树(最小生成树=最小瓶颈树),SCOI大丈夫(话说网上二分是 ...