mybatis的快速入门
说明:
在这个部分,会写个简单的入门案例。
然后,会重新写一个,更加严格的程序案例。
一:案例一
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的快速入门的更多相关文章
- mybatis框架快速入门
通过快速入门示例,我们发现使用mybatis 是非常容易的一件事情,因为只需要编写 Dao 接口并且按照 mybatis要求编写两个配置文件,就可以实现功能.远比我们之前的jdbc方便多了.(我们使用 ...
- MyBatis(1)——快速入门
MyBatis 简介 MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为 ...
- (转) MyBatis(1)——快速入门
MyBatis 简介 MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为 ...
- spring3.0+mybatis+spring快速入门
一.首先奉上项目目录结构: 说明: dao,mapping,model包下的所有内容可以使用Generator工具自助生成. 具体用法,可以网上学习一下,比较简单,主要做以下工作: 1.提供相关的数据 ...
- MyBatis框架——快速入门
主流的ORM框架(帮助开发者实现数据持久化工作的框架): 1.MyBatis: 半自动化ORM框架,半自动:指框架只完成一部分功能,剩下的工作仍需开发者手动完成. MyBatis 框架没有实现 POJ ...
- Mybatis框架 的快速入门
MyBatis 简介 什么是 MyBatis? MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架.MyBatis 消除 了几乎所有的 JDBC 代码和参数的手工设置以及结果 ...
- MyBatis学习总结(一)——MyBatis快速入门
一.Mybatis介绍 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以 ...
- MyBatis快速入门
一.Mybatis介绍 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以 ...
- MyBatis学习总结(一)——MyBatis快速入门(转载)
本文转载自http://www.cnblogs.com/jpf-java/p/6013537.html MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了 ...
随机推荐
- 51nod1134——(最长上升子序列)
给出长度为N的数组,找出这个数组的最长递增子序列.(递增子序列是指,子序列的元素是递增的) 例如:5 1 6 8 2 4 5 10,最长递增子序列是1 2 4 5 10. Input 第1行:1个 ...
- activiti 用户手册中 10分钟 小例子 简单代码搭建 及 其中的 各种坑
看mossle的 5.16 用户手册中的 快速起步:10分钟教程 想自己跑一下,虽然官方文档已经写的非常详细了,但是实际操作中还是遇到各种坑,这里记录下来. 首先官网下载最新的 5版本 full G ...
- ubuntu 指定用户执行脚本
方法 创建可执行脚本 以下以脚本名称为superset.sh为例,具体的脚本内容大家可以自己发挥. cd ~ vi superset.sh # 脚本内容自己写好后保存 修改脚本权限 sudo chmo ...
- Scala进阶之路-Scala函数篇详解
Scala进阶之路-Scala函数篇详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.传值调用和传名调用 /* @author :yinzhengjie Blog:http: ...
- Swift学习笔记2
1.函数参数都有一个外部参数名(external parameter name)和一个局部参数名(local parameter name).外部参数名用于在函数调用时标注传递给函数的参数,局部参数名 ...
- SQL语句(十四)子查询
--1. 使用IN关键字 --例1 查询系别人数不足5人的系别中学生的学号.姓名和系别 --系别人数不足5人的系别 ==>选择条件 select Sdept from Student Group ...
- linux下编译make文件报错“/bin/bash^M: 坏的解释器,使用grep快速定位代码位置
一.linux下编译make文件报错“/bin/bash^M: 坏的解释器 参考文章:http://blog.csdn.net/liuqiyao_01/article/details/41542101 ...
- Spring RedisTemplate操作-哈希操作(3)
@Autowired @Resource(name="redisTemplate") private RedisTemplate<String, String> rt; ...
- [转载]Windows 8 VHD 概述与使用
http://www.cnblogs.com/tonycody/archive/2012/11/30/2796858.html
- CSS-3 box-shadow 的使用
box-shadow是给对象实现图层阴影效果的. 语法: E {box-shadow: <length> <length> <length>?<length& ...