Hello Mybatis 01 第一个CRUD
What's the Mybatis?
MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO).
自己使用mybatis有大半年了,相比较厚重的hibernate和其他orm框架,mybatis更加的灵活轻巧,可以更好的配合数据库和sql语句来开发项目。
这篇开始,我希望可以写一个关于mybatis的快速教程,除了mybatis,中间还会贯穿一些mysql的资料和mybatis与其他框架的配置,这个系列也算是自己这段时间对使用mybatis框架的一个总结。
环境搭建
我使用的环境有
mysql:mysql5.5.37
jdk:openjdk1.7
eclipse:java ee-Kepler Service Release 2
我们还需要在mysql数据库中建立一个名字叫做blog的schema,并建立一个user表
CREATE TABLE `blog`.`user` (
`id` INT NOT NULL AUTO_INCREMENT,
`name` VARCHAR(45) NULL,
`age` INT NULL,
PRIMARY KEY (`id`));
还要记得给这个表加几条数据哟
INSERT INTO `blog`.`user` (`name`, `age`) VALUES ('Mybatis', '');
INSERT INTO `blog`.`user` (`name`, `age`) VALUES ('struts2', '');
INSERT INTO `blog`.`user` (`name`, `age`) VALUES ('hibernate', '');
接着我们在eclipse中新建一个web项目。
将jdbc的驱动包mysql-connector-java-5.1.30-bin.jar放置到web-inf下的lib文件夹中去。
再到mybatis在github的主页上下载mybatis的jar包.
https://github.com/mybatis/mybatis-3/releases
我使用的版本是3.2.3(最新的版本是3.2.7)
当然,你也可以使用maven来管理mybatis的包,只需要在项目的pom.xml中添加.
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.2.3</version>
</dependency>
第一个CRUD
我们在pro.app下新建一个model包,新建一个user类与数据库相对应的vo类。
package pro.app.model; public class User {
private int id;
private String name;
private int age;
public User(){}
public User(String name, int age) {
this.name = name;
this.age = age;
}
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;
}
}
在pro.app.inter下建立UserDAO接口,在这个接口中定义一个根据id找到User的方法selectOne()。
package pro.app.inter;
import org.apache.ibatis.annotations.Param; import pro.app.model.User; public interface UserDAO {
public User selectOne(@Param("id")Integer id);
}
在pro.app.mapper下建立UserMapper.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="pro.app.inter.UserDAO">
<select id="selectOne" parameterType="int" resultType="User">
select * from user where id = #{id,jdbcType=INTEGER}
</select>
</mapper>
<select></select>标签对来定义对应UserDAO中的selectOne()方法需要执行的sql语句。这也是mybatis的核心功能。
现在我们还需要在src源目录下放置一个Configuration.xml文件用于mybatis的配置。
<?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>
<typeAliases>
<typeAlias alias="User" type="pro.app.model.User"/>
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/blog?useUnicode=true&characterEncoding=utf-8"/>
<property name="username" value="mybatis"/>
<property name="password" value="mybatis"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="pro/app/mapper/UserMapper.xml"/>
</mappers>
</configuration>
在配置文件中通过定义现在的environment , 来指定目前的开发状态,用jdbc作为事务和连接池的配置与mysql数据库相链接。
在mappers下写入需要用到的mybatis 需要用到的mapper文件。
现在我们可以建立一个类测试mybatis是不是工作了,在pro.test下建立一个userTest类。
package pro.app.test; 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 pro.app.inter.UserDAO;
import pro.app.model.User; public class UserTest {
private static SqlSessionFactory sqlSessionFactory;
private static Reader reader;
static{
try{
reader= Resources.getResourceAsReader("Configuration.xml");
sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
}catch(Exception e){
e.printStackTrace();
}
}
public static SqlSessionFactory getSession(){
return sqlSessionFactory;
}
public static void main(String[] args) {
SqlSession session = sqlSessionFactory.openSession();
try {
UserDAO userDao = session.getMapper(UserDAO.class);
User user = userDao.selectOne(1);
System.out.println("name : "+user.getName());
System.out.println("age : "+user.getAge());
} finally {
session.close();
}
}
}
在这个程序中,我们通过io类库中的Reader类来读取mybatis的相关配置文件,并且使用mybatis里的 SqlSessionFactoryBuilder类构建一个SqlSessionFactory。
这个SqlSessionFactory就相当与mybatis配置文件的化生了,对应各种被操作的类而言,它就是整个项目中的上帝了,上帝不能老是出现吧,所以一般在一个项目中指挥有一个SqlSessionFactory出现。接着我们的程序又通过SqlSessionFactory来获得一个SqlSession,SqlSession 对象完全包含以数据库为背景的所有执行 SQL 操作的方法。通过这个SqlSession的实例化对象,可以获得UserDAO接口的一个实例,接下来就可以执行相应的方法了。
来运行这个程序啦,控制台输出了以下内容
name : mybatis
age :
bingo!我们如愿通过mybatis获得了数据库的数据。
接下来我们可以在UserDAO和UserMapper中添加其他的配置完成CRUD的任务。
UserMapper.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="pro.app.inter.UserDAO">
<select id="selectOne" parameterType="int" resultType="User">
select * from user where id = #{id,jdbcType=INTEGER}
</select>
<insert id="insertOne" parameterType="User">
insert into user (name,age)
values(
#{name,jdbcType=VARCHAR},
#{age,jdbcType=INTEGER}
)
</insert>
<delete id="deleteOne" parameterType="java.lang.Integer" >
delete from user
where id = #{id,jdbcType=INTEGER}
</delete>
<update id="updateOne" parameterType="User">
update user
set name=#{name,jdbcType=VARCHAR},
age=#{age,jdbcType=INTEGER}
where id= #{id,jdbcType=INTEGER}
</update>
</mapper>
UserDAO.java
package pro.app.inter;
import org.apache.ibatis.annotations.Param; import pro.app.model.User; public interface UserDAO {
public User selectOne(@Param("id")Integer id); public void insertOne(User user); public void deleteOne(@Param("id")Integer id); public void updateOne(User user);
}
和select方法一样,通过update,delete,insert标签分别对updateOne()、deleteOne(),insertOne()方法,并编写相应的接口方法来实现对应的CRUD任务。
总结
通过一个简单的CRUD例子熟悉mybatis的基本实现。
Hello Mybatis 01 第一个CRUD的更多相关文章
- SSM框架之Mybatis(2)CRUD操作
Mybatis(2)CRUD 1.基于代理Dao实现CRUD操作 使用要求: 1.持久层接口(src\main\java\dao\IUserDao.java)和持久层接口的映射配置(src\main\ ...
- mybatis升级案例之CRUD操作
mybatis升级案例之CRUD操作 一.准备工作 1.新建maven工程,和入门案例一样 主要步骤如下,可参考mybatis入门实例 a.配置pom.xml文件 b.新建实例类User.DAO接口类 ...
- Mybatis入门及第一个Mybatis程序
Mybatis笔记整理 所需要的基础知识 JDBC Mysql Java基础 Maven Junit 框架:是有配置文件的.最好的方式:看官网文档 1.简介 1.1.什么是MyBatis 简介 什么是 ...
- Mybatis实现简单的CRUD(增删改查)原理及实例分析
Mybatis实现简单的CRUD(增删改查) 用到的数据库: CREATE DATABASE `mybatis`; USE `mybatis`; DROP TABLE IF EXISTS `user` ...
- 瞧一瞧,看一看呐,用MVC+EF快速弄出一个CRUD,一行代码都不用写,真的一行代码都不用写!!!!
瞧一瞧,看一看呐用MVC+EF快速弄出一个CRUD,一行代码都不用写,真的一行代码都不用写!!!! 现在要写的呢就是,用MVC和EF弄出一个CRUD四个页面和一个列表页面的一个快速DEMO,当然是在不 ...
- 用MVC+EF快速弄出一个CRUD
瞧一瞧,看一看呐,用MVC+EF快速弄出一个CRUD,一行代码都不用写,真的一行代码都不用写!!!! 现在要写的呢就是,用MVC和EF弄出一个CRUD四个页面和一个列表页面的一个快速DEMO,当然是在 ...
- 使用ASP.NET Core MVC 和 Entity Framework Core 开发一个CRUD(增删改查)的应用程序
使用ASP.NET Core MVC 和 Entity Framework Core 开发一个CRUD(增删改查)的应用程序 不定时更新翻译系列,此系列更新毫无时间规律,文笔菜翻译菜求各位看官老爷们轻 ...
- 使用ssm(spring+springMVC+mybatis)创建一个简单的查询实例(三)(错误整理篇)
使用ssm(spring+springMVC+mybatis)创建一个简单的查询实例(一) 使用ssm(spring+springMVC+mybatis)创建一个简单的查询实例(二) 以上两篇已经把流 ...
- 使用ssm(spring+springMVC+mybatis)创建一个简单的查询实例(二)(代码篇)
这篇是上一篇的延续: 用ssm(spring+springMVC+mybatis)创建一个简单的查询实例(一) 源代码在github上可以下载,地址:https://github.com/guoxia ...
随机推荐
- OpenVPN 通过服务器上网
在Windows环境中架设OpenVPN服务相对比较简单,网上这方面的教程也比较丰富,照葫芦画瓢即可.但是大部分教程都只讲了如何将client与Server通过VPN管道连接起来,使client可以正 ...
- 【Java】:压缩成多个压缩卷
Java自带的库不支持压缩成多个压缩卷,找到了一个开源库 zip4j ,发现更好用 so easy package com.jws.common.mail; import java.io.File; ...
- 【环境配置】php5.5 + apache2.4 安装配置【转+修改】
转自 http://my.oschina.net/lilinzero/blog/180509 [转+修改][环境配置]php5.5.10 + apache2.4 安装配置 根据自己的实践所得,稍微修改 ...
- iOS emoji表情转码 或者判断
如果项目中有评论或者信息恢复的地方,往往会用到emoji,有时候如后台不支持emoji,就会显示乱码错误,我们可以把emoji转成unicode编码或者utf8编码格式传给服务器.当然如果后台服务器接 ...
- Mysql监控、优化
一.查询语句的生命周期 1.MYSQL服务器监听3306端口 2.验证访问用户 3.创建MySQL线程 4.检查内存(Qcache),当查询命中缓存,MYSQL立刻返回结果,跳过解析.优化.执行阶段. ...
- configure: error: no acceptable C compiler found in $PAT 的解决方案
configure: error: no acceptable C compiler found in $PATH See `config.log' for more details.你的机器里没有安 ...
- 如何在CentOS 5/6上安装EPEL 源
EPEL 是什么? EPEL (Extra Packages for Enterprise Linux,企业版Linux的额外软件包) 是Fedora小组维护的一个软件仓库项目,为RHEL/CentO ...
- Oracle sql语句练习
--1.选择在部门 30 中员工的所有信息 ; --2.列出职位为(MANAGER)的员工的编号,姓名 select EMPNO, ENAME from emp where job='MANAGER' ...
- [UCSD白板题] Binary Search
Problem Introduction In this problem, you will implemented the binary search algorithm that allows s ...
- [收集]在iPhone桌面的应用程序图标右上角显示数字
能够在ios桌面的程序icon右上角显示数字(badge number)的方法 在ViewController中的viewDidLoad方法中添加如下代码即可 - (void)viewDidLoad ...