说明:

  在这个部分,会写个简单的入门案例。

  然后,会重新写一个,更加严格的程序案例。

一:案例一

1.最终的目录结构

  

2.新建一个普通的Java项目,并新建lib

  在项目名上右键,不是src。

  

3.导入需要的jar包,并加入到classpath中

  mybatis-3.4.5.jar
  mysql-connector-java-5.1.18-bin.jar

  

4.新建数据库与表

 CREATE DATABASE mybatis;
USE mybatis;
CREATE TABLE users(
ID INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(20),
AGE INT
);
INSERT INTO users(NAME,age) VALUES("TOM",12);
INSERT INTO users(NAME,AGE) VALUES("JACK",11);

5.新建bean--User.java

 package com.test;

 public class User {
private int id;
private String name;
private int age;
public User() {}
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 + "]";
} }

6.新建配置文件--Configuration.xml 

resource="users.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">
<property name="" value=""/>
</transactionManager>
<dataSource type="UNPOOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://127.0.0.1:3308/mybatis"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments> <mappers>
<mapper resource="users.xml"/>
</mappers> </configuration>

7.新建映射文件--users.xml

  在这个映射文件中,需要注意的是,需要写result Map,不然找不到返回值。

 <?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="quickFirst">
<resultMap type="com.test.User" id="User">
<id column="ID" jdbcType="INTEGER" property="id"/>
<result column="NAME" jdbcType="VARCHAR" property="name"/>
<result column="AGE" jdbcType="INTEGER" property="age"/>
</resultMap> <select id="selectUser" parameterType="int" resultMap="User">
SELECT * From users where id = #{id};
</select>
</mapper>

8.测试类--TestSelectById.java

  这个类中使用的是反射的形式来获取配置文件。

  需要注意的是:String resources="/Configuration.xml",这个需要增加/。

 package com.test;

 import java.io.InputStream;

 import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder; public class TestSelectById {
public static void main(String[] regs) {
String resources="/Configuration.xml";
InputStream is=TestSelectById.class.getResourceAsStream(resources);
SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(is);
SqlSession sqlSession=sqlSessionFactory.openSession();
String statement="quickFirst.selectUser";
User user=sqlSession.selectOne(statement, 1);
System.out.println(user);
}
}

9.效果图

  

二:案例二

1.程序最终目录

  

2.新建表

 DROP TABLE IF EXISTS `message`;
CREATE TABLE `message` (
`ID` int(20) AUTO_INCREMENT COMMENT '主键',
`COMMAND` varchar(16) DEFAULT NULL COMMENT '指令名称',
`DESCRIPTION` varchar(32) DEFAULT NULL COMMENT '描述',
`CONTENT` varchar(2048) DEFAULT NULL COMMENT '内容',
PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8; INSERT INTO `message` VALUES ('', '查看', '精彩内容', '精彩内容');
INSERT INTO `message` VALUES ('', '段子', '精彩段子', '如果你的月薪是3000块钱');
INSERT INTO `message` VALUES ('', '新闻', '今日头条', '7月17日,马来西亚一架载有298人');
INSERT INTO `message` VALUES ('', '娱乐', '娱乐新闻', '昨日,邓超在微博分享了自己和孙俪的书法。');
INSERT INTO `message` VALUES ('', '电影', '近日上映大片', '《忍者神龟》');

  

3.新建Message.java

 package com.cao.bean;
/**
* message��
* @author dell
*
*/
public class Message {
private int id;
private String command;
private String description;
private String content;
public Message() {}
public Message(int id, String command, String description, String content) {
super();
this.id = id;
this.command = command;
this.description = description;
this.content = content;
}
public int getId() {
return id;
}
public void setId(int 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 getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
} }

4.新建配置文件

 <?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">
<property name="" value=""/>
</transactionManager>
<dataSource type="UNPOOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://127.0.0.1:3308/mybatis"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments> <mappers>
<mapper resource="com/cao/config/Message.xml"/>
</mappers> </configuration>

5.新建映射文件

 <?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="Message"> <resultMap type="com.cao.bean.Message" id="MessageResult">
<id column="ID" jdbcType="INTEGER" property="id"/>
<result column="COMMAND" jdbcType="VARCHAR" property="command"/>
<result column="DESCRIPTION" jdbcType="VARCHAR" property="description"/>
<result column="CONTENT" jdbcType="VARCHAR" property="content"/>
</resultMap> <select id="queryMessageList" parameterType="com.cao.bean.Message" resultMap="MessageResult">
SELECT ID,COMMAND,DESCRIPTION,CONTENT FROM message WHERE 1=1
</select> </mapper>

6.新建DBAccess.java,链接数据库

 package com.cao.db;

 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; public class DBAccess {
public SqlSession getSqlSession() throws Exception {
//获取数据库的连接信息
Reader reader=Resources.getResourceAsReader("com/cao/config/Configuration.xml"); //
SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(reader); //
SqlSession sqlSession=sqlSessionFactory.openSession(); System.out.println(sqlSession);
return sqlSession;
}
}

7.新建Dao,操作数据库

 package com.cao.dao;

 import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List; import org.apache.ibatis.session.SqlSession; import com.cao.bean.Message;
import com.cao.db.DBAccess; /**
* 和message相关的dao
* @author dell
*
*/
public class MessageDao {
/**
* 查询以及包括条件查询
* @param command
* @param description
* @return
*/
public List<Message> queryMessageList() {
List<Message> messageList=new ArrayList<>();
SqlSession sqlSession=null;
/**
* MyBatis
*/
DBAccess dbAccess=new DBAccess();
try {
//封装,方便将参数传进到xml中
Message message=new Message();
sqlSession=dbAccess.getSqlSession();
messageList=sqlSession.selectList("Message.queryMessageList",message); } catch (Exception e) { e.printStackTrace();
}finally {
sqlSession.close();
} return messageList; }
}

8.新建service,数据处理层

 package com.cao.service;

 import java.util.List;

 import com.cao.bean.Message;
import com.cao.dao.MessageDao; /**
* 列表相关的业务功能
* @author dell
*
*/
public class ListService {
public List<Message> queryMessageList() {
MessageDao messageDao=new MessageDao();
return messageDao.queryMessageList();
}
}

9.测试类

 package com.cao.main;

 import java.util.Iterator;
import java.util.List; import com.cao.bean.Message;
import com.cao.service.ListService; public class TestSelectList {
public static void main(String[] args) {
ListService listService=new ListService();
List messageList=listService.queryMessageList();
Iterator it=messageList.iterator();
while(it.hasNext()) {
Message message=(Message)it.next();
String com=message.getCommand();
System.out.println(com);
}
}
}

10,结果

  

  

mybatis的快速入门的更多相关文章

  1. mybatis框架快速入门

    通过快速入门示例,我们发现使用mybatis 是非常容易的一件事情,因为只需要编写 Dao 接口并且按照 mybatis要求编写两个配置文件,就可以实现功能.远比我们之前的jdbc方便多了.(我们使用 ...

  2. MyBatis(1)——快速入门

    MyBatis 简介 MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为 ...

  3. (转) MyBatis(1)——快速入门

    MyBatis 简介 MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为 ...

  4. spring3.0+mybatis+spring快速入门

    一.首先奉上项目目录结构: 说明: dao,mapping,model包下的所有内容可以使用Generator工具自助生成. 具体用法,可以网上学习一下,比较简单,主要做以下工作: 1.提供相关的数据 ...

  5. MyBatis框架——快速入门

    主流的ORM框架(帮助开发者实现数据持久化工作的框架): 1.MyBatis: 半自动化ORM框架,半自动:指框架只完成一部分功能,剩下的工作仍需开发者手动完成. MyBatis 框架没有实现 POJ ...

  6. Mybatis框架 的快速入门

    MyBatis 简介 什么是 MyBatis? MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架.MyBatis 消除 了几乎所有的 JDBC 代码和参数的手工设置以及结果 ...

  7. MyBatis学习总结(一)——MyBatis快速入门

    一.Mybatis介绍 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以 ...

  8. MyBatis快速入门

    一.Mybatis介绍 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以 ...

  9. MyBatis学习总结(一)——MyBatis快速入门(转载)

    本文转载自http://www.cnblogs.com/jpf-java/p/6013537.html MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了 ...

随机推荐

  1. 【bzoj1758】 Wc2010—重建计划

    http://www.lydsy.com/JudgeOnline/problem.php?id=1758 (题目链接) 题意 给出一棵树,每条边有边权,问选出一条长度为$[L,U]$的路径,使得路径上 ...

  2. Appium+python自动化环境搭建(小白适用)

    写在前面: 没开始搭建前听好多人说,学习appium80%的人都死于环境搭建,所以一开始很紧张,在搭建环境中也确实遇到了好几个问题,由于之前本人使用app测试经验很少,所以相当于app小白,因此有的问 ...

  3. 内置函数zip()

    zip有拉链的意思,zip函数像拉链一样将0个或多个可迭代对象按相同位置组合成一个zip对象,该zip对象的每个元素是由每个可迭代对象的相同位置的元素组成的元祖. 如果zip中有多个序列,而各序列的长 ...

  4. spark性能调优(四) spark shuffle中JVM内存使用及配置内幕详情

    转载:http://www.cnblogs.com/jcchoiling/p/6494652.html 引言 Spark 从1.6.x 开始对 JVM 的内存使用作出了一种全新的改变,Spark 1. ...

  5. AIO + ByteBufferQueue + allocateDirect 终于可以与NIO的并发性能达到一致。

    看到这个标题,你可能会惊讶,相比NIO,AIO不就是为了在高并发的情况下代替NIO的吗? 是的,没错,但是在并发不高的情况下,AIO的性能表现很多时候还不如NIO. 在一台机子上用ab进行并发压力测试 ...

  6. 假装会python--爬取贴吧正文

    贴吧的老历史想存下来,强行python爬取一波 队友太强,躺好别动,偶尔做点副业 假装会python 基本流程: 1.爬取页面,获取页面的html源码 2.分析源码 通过正则表达式 匹配到想要的内容 ...

  7. Kubernetes HPA

    简介 通过手工执行 kubectl scale 命令或者通过修改deployment的replicas数量,可以实现 Pod 扩容或缩容.但如果仅止于此,显然不符合 Google 对 Kubernet ...

  8. OpenStack 网络服务 Neutron 私有网络构建(十九)

    本章内容基于之前提供者网络构建的基础上进行改动,之前文章参考如下: Openstack 网络服务 Neutron介绍和控制节点部署 (九) Openstack 网络服务 Neutron计算节点部署(十 ...

  9. Spark记录-Scala函数与闭包

    函数声明 Scala函数声明具有以下形式 - def functionName ([list of parameters]) : [return type] Scala 如果不使用等号和方法体,则隐式 ...

  10. Django中合并同一个model的多个QuerySet

    [1]相同modelarticles1 = Article.objects.order_by("autoid").filter(autoid__lt = 16).values('a ...