项目模型:

一、创建一个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
*/ SET FOREIGN_KEY_CHECKS=0; -- ----------------------------
-- Table structure for dept
-- ----------------------------
DROP TABLE IF EXISTS `dept`;
CREATE TABLE `dept` (
`DEPTNO` decimal(4,0) DEFAULT NULL,
`DNAME` varchar(14) DEFAULT NULL,
`LOC` varchar(13) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- ----------------------------
-- Records of dept
-- ----------------------------
INSERT INTO `dept` VALUES ('', 'ACCOUNTING', 'NEW YORK');
INSERT INTO `dept` VALUES ('', 'RESEARCH', 'DALLAS');
INSERT INTO `dept` VALUES ('', 'SALES', 'CHICAGO');
INSERT INTO `dept` VALUES ('', '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
*/ SET FOREIGN_KEY_CHECKS=0; -- ----------------------------
-- Table structure for emp
-- ----------------------------
DROP TABLE IF EXISTS `emp`;
CREATE TABLE `emp` (
`EMPNO` decimal(4,0) NOT NULL,
`ENAME` varchar(10) DEFAULT NULL,
`JOB` varchar(9) DEFAULT NULL,
`MGR` decimal(4,0) DEFAULT NULL,
`HIREDATE` date DEFAULT NULL,
`SAL` decimal(7,2) DEFAULT NULL,
`COMM` decimal(7,2) DEFAULT NULL,
`DEPNO` decimal(4,0) DEFAULT NULL,
PRIMARY KEY (`EMPNO`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- ----------------------------
-- Records of emp
-- ----------------------------
INSERT INTO `emp` VALUES ('', 'SMITH', 'CLERK', '', '1980-12-17', '1800.00', null, '');
INSERT INTO `emp` VALUES ('', 'ALLEN', 'SALESMAN', '', '1981-02-20', '1600.00', '300.00', '');
INSERT INTO `emp` VALUES ('', 'WARD', 'SALESMAN', '', '1981-02-22', '1250.00', '500.00', '');
INSERT INTO `emp` VALUES ('', 'JONES', 'MANAGER', '', '1981-04-02', '2975.00', null, '');
INSERT INTO `emp` VALUES ('', 'MARTIN', 'SALESMAN', '', '1981-09-28', '1250.00', '1400.00', '');
INSERT INTO `emp` VALUES ('', 'BLAKE', 'MANAGER', '', '1981-05-01', '2850.00', null, '');
INSERT INTO `emp` VALUES ('', 'CLARK', 'MANAGER', '', '1981-06-09', '2450.00', null, '');
INSERT INTO `emp` VALUES ('', 'KING', 'PRESIDENT', null, '1981-11-17', '5000.00', null, '');
INSERT INTO `emp` VALUES ('', 'TURNER', 'SALESMAN', '', '1981-09-08', '1500.00', '0.00', '');
INSERT INTO `emp` VALUES ('', 'JAMES', 'CLERK', '', '1981-12-03', '950.00', null, '');
INSERT INTO `emp` VALUES ('', 'FORD', 'ANALYST', '', '1981-12-03', '3000.00', null, '');
INSERT INTO `emp` VALUES ('', 'MILLER', 'CLERK', '', '1982-01-23', '1300.00', null, '');
INSERT INTO `emp` VALUES ('', '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. SSM(Spring+SpringMVC+Mybatis)框架环境搭建(整合步骤)(一)

    1. 前言 最近在写毕设过程中,重新梳理了一遍SSM框架,特此记录一下. 附上源码:https://gitee.com/niceyoo/jeenotes-ssm 2. 概述 在写代码之前我们先了解一下 ...

  2. 基于Maven的Spring + Spring MVC + Mybatis的环境搭建

    基于Maven的Spring + Spring MVC + Mybatis的环境搭建项目开发,先将环境先搭建起来.上次做了一个Spring + Spring MVC + Mybatis + Log4J ...

  3. 阶段3 1.Mybatis_05.使用Mybatis完成CRUD_1 回顾Mybatis的环境搭建-实现查询所有功能

    先回顾Mybits的环境搭建,. 直接next 直接点击finish 创建好的项目. 所有东西都自己写不现实,约束文件的头部还是拷贝过来 导入依赖坐标,Mybits mysql的驱动 log4j 单元 ...

  4. mybatis学习:mybatis的环境搭建与入门

    一.mybatis的概述: mybatis是一个持久层框架,用java编写 它封装了jdbc操作的很多细节,使开发者只需要关注sql语句本身,而无需关注注册驱动,创建连接登繁杂过程 它使用了ORM思想 ...

  5. 搭建MyBatis开发环境及基本的CURD

    目录 一.MyBatis概述 1. MyBatis 解决的主要问题 二.快速开始一个 MyBatis 1. 创建mysql数据库和表 2. 创建maven工程 3. 在pom.xml文件中添加信息 4 ...

  6. 阶段3 1.Mybatis_01.Mybatis课程介绍及环境搭建_06.mybatis的环境搭建

    创建实体类,实现Serializable接口 属性名和数据库的字段名保持一致 Date字段需要导入包 生成gettter和setter,再生成一个ToString的方法 创建持久层Dao 创建接口 里 ...

  7. 搭建mybatis开发环境

    1.创建工程 <groupId>com.hope</groupId>     <artifactId>day01_eesy_01mybatis</artifa ...

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

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

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

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

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

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

随机推荐

  1. win10 64bits信捷触摸屏download usb口驱动程序的安装

    [问题描述] win10 64bits,信捷触摸屏开发软件,下载的时候需要安装驱动程序. 用的以前的win7 64bits的驱动程序,直接双击安装,显示无法操作注册表,需要管理员模式. 使用管理员权限 ...

  2. Nginx-Lua重定向系列

    Ningx Lua模块官方文档: 在Nginx中实现重定向可以通过rewrite指令,具体可参考<Nginx学习--http_rewrite_module的rewrite指令> 通过Lua ...

  3. 【C】 04 - 表达式和语句

    程序的生命力体现在它千变万化的行为,而再复杂的系统都是由最基本的语句组成的.C语句形式简单自由,但功能强大.从规范的角度学习C语法,一切显得简单而透彻,无需困扰于各种奇怪的语法. 1. 表达式(exp ...

  4. 50 道 Java 线程面试题(转载自牛客网)

    下面是 Java 线程相关的热门面试题,你可以用它来好好准备面试. 1) 什么是线程? 线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位.程序员可以通过它进行多处理 ...

  5. 【python】模块作用域

    作用域 在一个模块中,我们可能会定义很多函数和变量,但有的函数和变量我们希望给别人使用,有的函数和变量我们希望仅仅在模块内部使用.在Python中,是通过_前缀来实现的. 类似_xxx和__xxx这样 ...

  6. bzoj3745: [Coci2015]Norma

    Description Input 第1行,一个整数N: 第2~n+1行,每行一个整数表示序列a. Output 输出答案对10^9取模后的结果. 预处理每个位置的数作为最小/大值向左延伸的最大距离, ...

  7. 学习SQL的点点滴滴(二)删除临时表

    select into 创建的表属于临时表,判断是否存在的方法 select c_adno,c_con_no into #temp from tb_contract IF OBJECT_ID( 'te ...

  8. TMS320C54x系列DSP指令和编程指南——第1章 汇编语言工具概述

    第1章 汇编语言工具概述 TMS320C54x DSP的汇编语言开发工具包括: ■  Assembler      ■  Archiver      ■  Linker      ■  Absolut ...

  9. ASP.NET MVC IOC 之AutoFac攻略

    一.为什么使用AutoFac? 之前介绍了Unity和Ninject两个IOC容器,但是发现园子里用AutoFac的貌似更为普遍,于是捯饬了两天,发现这个东东确实是个高大上的IOC容器~ Autofa ...

  10. Xamarin.Forms介绍

    On May 28, 2014, Xamarin introduced Xamarin.Forms, which allows you to write user-interface code tha ...