Mybatis学习之道(一)
本例子为采用的mysql+maven+mybatis构建。
初步学习mybatis:
mybatis为一个半自动框架,相对于hibernate来说他更加轻巧,学习成本更低。
1.新建一个maven工程
2.在maven中配置依赖jar包
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.1</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.40</version>
</dependency>
</dependencies>
3.新建一个jdbc.properties文件
jdbc.driver=org.gjt.mm.mysql.Driver jdbc.url=jdbc:mysql://localhost:3306/mybatisStudy jdbc.username=root jdbc.password=123456
4.创建mybatis配置文件
propertis:导入配置文件
<?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>
<properties resource="jdbc.properties"></properties>
<!--设置一些配置信息-->
<settings>
<setting name="useGeneratedKeys" value="true"/>
</settings>
<!--设置别名-->
<typeAliases>
<typeAlias type="cn.lonecloud.d1.model.Blog" alias="Blog"></typeAlias>
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
<!--mapper对应的文件-->
<mappers>
<mapper resource="mapper/BlogMapper.xml"></mapper>
</mappers>
</configuration>
5创建数据库
SET NAMES utf8;
SET FOREIGN_KEY_CHECKS = 0; -- ----------------------------
-- Table structure for `blog`
-- ----------------------------
DROP TABLE IF EXISTS `blog`;
CREATE TABLE `blog` (
`id` varchar(32) NOT NULL DEFAULT '',
`name` varchar(255) DEFAULT '',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8; SET FOREIGN_KEY_CHECKS = 1;
6.创建POJO类
package cn.lonecloud.d1.model; /**
* Created by lonecloud on 17/3/17.
*/
public class Blog {
private String id; private String name; public String getId() {
return id;
} @Override
public String toString() {
return "Blog{" +
"id='" + id + '\'' +
", name='" + name + '\'' +
'}';
} public void setId(String id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
}
}
.7创建对应的接口类
由于mybatis是接口式编程,会将对应的接口通过映射的方式在其容器中通过代理方式创建出一个对象,所以不需要创建实现类
package cn.lonecloud.d1.dao; import cn.lonecloud.d1.model.Blog; /**
* Created by lonecloud on 17/3/17.
* mybatis接口式编程
*/
public interface BlogMapper {
Blog selectOne(String id);
}
8.编写对应的mapper文件
namespce:命名空间,为对这个mapper文件进行唯一性标示,最好使用对应的接口全类名
select:筛选语句相当于说明这是一个select查询 id标明为该类下面的某个方法,
resultType:返回数据类型,
#{id}:为传递过来的参数,最好是和参数名相同
<?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="cn.lonecloud.d1.dao.BlogMapper">
<select id="selectOne" resultType="Blog">
select * from Blog where id = #{id}
</select>
</mapper>
9.编写测试类:
package cn.lonecloud.d1; import cn.lonecloud.d1.dao.BlogMapper;
import cn.lonecloud.d1.model.Blog;
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 org.junit.Test; import java.io.IOException;
import java.io.InputStream; /**
* Created by lonecloud on 17/3/17.
*/
public class SessionTest { SqlSessionFactory sqlSessionFactory;
@Test
public void session() throws IOException {
String resource = "mybatis-config.xml";//配置文件
InputStream inputStream = Resources.getResourceAsStream(resource);//读取配置文件
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);//获取sqlSession 对象
System.out.println(sqlSessionFactory);
SqlSession session = sqlSessionFactory.openSession();//打开session
try{
BlogMapper blogMapper = session.getMapper(BlogMapper.class);
Blog blog = blogMapper.selectOne("sasa");
System.out.println(blog);
}finally {
session.close();
}
}
}
注意的是SqlSession位非线程安全的类,这个如果定义为类变量会导致线程安全性问题!!
本例子共享于gitOSChina中:链接
Mybatis学习之道(一)的更多相关文章
- (原创)mybatis学习二,spring和mybatis的融合
mybatis学习一夯实基础 上文介绍了mybatis的相关知识,这一节主要来介绍mybaits和spring的融合 一,环境搭建 1,jar包下载,下载路径为jar包 2,将包导入到java工程中 ...
- MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作(转载)
本文转载自:http://www.cnblogs.com/jpf-java/p/6013540.html 上一篇博文MyBatis学习总结(一)--MyBatis快速入门中我们讲了如何使用Mybati ...
- MyBatis学习总结(八)——Mybatis3.x与Spring4.x整合(转载)
孤傲苍狼 只为成功找方法,不为失败找借口! MyBatis学习总结(八)--Mybatis3.x与Spring4.x整合 一.搭建开发环境 1.1.使用Maven创建Web项目 执行如下命令: m ...
- MyBatis学习总结(七)——Mybatis缓存(转载)
孤傲苍狼 只为成功找方法,不为失败找借口! MyBatis学习总结(七)--Mybatis缓存 一.MyBatis缓存介绍 正如大多数持久层框架一样,MyBatis 同样提供了一级缓存和二级缓存的 ...
- (原创)mybatis学习一,夯实基础
一,what?(是什么) MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可 ...
- MyBatis学习--简单的增删改查
jdbc程序 在学习MyBatis的时候先简单了解下JDBC编程的方式,我们以一个简单的查询为例,使用JDBC编程,如下: Public static void main(String[] args) ...
- MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作
上一篇博文MyBatis学习总结(一)——MyBatis快速入门中我们讲了如何使用Mybatis查询users表中的数据,算是对MyBatis有一个初步的入门了,今天讲解一下如何使用MyBatis对u ...
- 【Todo】Mybatis学习-偏理论
之前写过好几篇Mybatis相关的文章: http://www.cnblogs.com/charlesblc/p/5906431.html <SSM(SpringMVC+Spring+Myba ...
- MyBatis学习系列三——结合Spring
目录 MyBatis学习系列一之环境搭建 MyBatis学习系列二——增删改查 MyBatis学习系列三——结合Spring MyBatis在项目中应用一般都要结合Spring,这一章主要把MyBat ...
随机推荐
- [知了堂学习笔记]_牵线Eclipse和Tomcat第一篇 —— 配置Java环境变量&&安装eclipse
一.先给他们提供一个"浪漫的"环境,比如传说中的"鹊桥"--java环境变量.哈哈! 配置java环境变量. 下载jdk,根据自己电脑的版本和操作位数选择不同的 ...
- 5dfda1332b67817b0f2d7839242021ce'Java数据结构和算法
1.return 一个空的集合,而不是 null 如果一个程序返回一个没有任何值的集合,请确保一个空集合返回,而不是空元素.这样你就不用去写一大堆 "if else" 判断null ...
- Shell中脚本变量的作用域
原文地址:http://blog.csdn.net/abc86319253/article/details/46341839 在shell中定义函数可以使代码模块化,便于复用代码.不过脚本本身的 ...
- 2017-06-21(rmdir mv ln)
rmdir rmdir 删除空目录 mv mv 剪切或修改命令 mv [原文件或目录] [目标文件] [原文件与目标文件在同一目录下视为修改,在不同目录下视为剪切] ln ln 链接命令[用于 ...
- 控制台调用天气API例子
第一步,新建控制台应用程序,然后新建类:WeatherReport: using System; using System.Collections.Generic; using System.Linq ...
- 02-Go语言数据类型与变量
Go基本类型 布尔型: bool - 长度: 1字节 - 取值范围: true,false - 注意事项: 不可以用数字代表true或false 整型: int/uint - 根据运行平台可能为32或 ...
- 模型和字段 -- Django从入门到精通系列教程
该系列教程系个人原创,并完整发布在个人官网刘江的博客和教程 所有转载本文者,需在顶部显著位置注明原作者及www.liujiangblog.com官网地址. Python及Django学习QQ群:453 ...
- linux的定时任务服务crond(crontab)服务
1,Crond: Crond是linux系统中用来定期执行命令或指定程序任务的一种服务或者软件.(Centos5以后默认存在) 当优化开机自启动的时候,第一个就是crond. Crond服务默认情况( ...
- linux makefile字符串操作函数 替换subst、模式替换patsubst、去首尾空格strip、查找字符串findstring、过滤filter、反过滤filter-out、排序函数sort、取单词word、取单词串wordlist、个数统计words
1.1 字符操作函数使用 在Makefile中可以使用函数来处理变量,从而让我们的命令或是规则更为的灵活和具有智能.make所支持的函数也不算很多,不过已经足够我们的操作了.函数调用后,函 ...
- 使用localhost可以访问,但使用本地ip+端口号无法访问
今天想使用ip访问本机的iview-admin项目,结果怎么配置都无法访问,根据iview工程执行的命令npm run dev了解到是webpack配置的问题,打开工程里的node_modules文件 ...