MyBatis学习-入门篇
一、MyBatis 介绍
MyBatis 是支持普通的 SQL 查询,存储过程和高级映射的优秀持久层框架,可以进行更为细致的 SQL 优化,减少查询字段。几乎消除了所有的 JDBC 代码和参数的手工设置以及对结果集的检索。MyBatis 可以使用简单的 XML 或注解用于配置和原始映射,将接口和 Java 的 POJO (Plain Old Java Objects,普通的 Java 对象) 映射成数据库中的记录。
二、如何使用 MyBatis
我这里使用的 maven,所有目录也是基于 maven 的目录结构来说的。
1. 所需的 JAR 包
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.38</version>
</dependency> <dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.3.0</version>
</dependency> <dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
2. 创建数据库表
CREATE TABLE person (
personId int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
nickName varchar(200) DEFAULT NULL COMMENT '姓名',
age int(11) DEFAULT NULL COMMENT '年龄',
sex int(11) DEFAULT NULL COMMENT '性别',
birthday timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '出生日期',
PRIMARY KEY (personId)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
3. 创建一个实体类 Person.java
package com.enh.bean;
import java.util.Date;
public class PersonBean {
private Integer personId;
private String nickName;
private Integer age;
private Integer sex;
private Date birthday;
public PersonBean() {
}
public PersonBean(String nickName, Integer age,
Integer sex, Date birthday) {
super();
this.nickName = nickName;
this.age = age;
this.sex = sex;
this.birthday = birthday;
}
public Integer getPersonId() {
return personId;
}
public void setPersonId(Integer personId) {
this.personId = personId;
}
... get() set() 方法
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
@Override
public String toString() {
return "PersonBean [personId=" + personId + ", nickName=" + nickName
+ ", age=" + age + ", sex=" + sex + ", birthday=" + birthday
+ "]";
}
}
4. 创建Dao层接口类 PersonMapper.java
package com.enh.mapper;
import com.enh.bean.PersonBean;
public interface PersonMapper {
/**
* @Description: 新增
* @Author:
* @CreateTime:
* @param personBean
* @return
* @throws Exception
*/
public Integer insert(PersonBean personBean) throws Exception;
}
5. 在 classpath 下创建 MyBatis 映射文件 com/enh/mapper/PersonMapper.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.enh.mapper.PersonMapper"> <insert id="insert" useGeneratedKeys="true" keyProperty="id" parameterType="personBean">
INSERT INTO
person (
nickName,
age,
sex,
birthday
) VALUES (
#{nickName},
#{age},
#{sex},
#{birthday}
)
</insert> </mapper>
6. 在classpath下创建 MyBatis 配置文件 mybatis-config.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> <!-- 引入外部文件 -->
<properties resource="application.properties"></properties> <!-- 为Java Bean起别名 -->
<typeAliases>
<typeAlias alias="personBean" type="com.enh.bean.PersonBean" />
</typeAliases> <!-- 配合MyBatis运行环境 -->
<environments default="cybatis">
<environment id="cybatis">
<!-- 使用JDBC的提交和回滚来管理事物 -->
<transactionManager type="JDBC"/> <!-- mybatis提供了三种数据源类型,分别是 POOLED UNPOOLED JNDI -->
<!-- POOLED 表示支持JDBC数据源连接池 -->
<!-- UNPOOLED 表示不支持数据源连接池 -->
<!-- JNDI 表示支持外部数据源连接池 -->
<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> <!-- 映射文件 -->
<mappers>
<mapper resource="com/enh/mapper/PersonMapper.xml" />
</mappers> </configuration>
7. 在 classpath 路径下创建参数集文件 application.properties
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/erim
jdbc.username=root
jdbc.password=root
8. 需要建立一个初始化 SqlSession 的工具类
package com.enh.common; 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 DBTools { public static SqlSessionFactory sessionFactory; static {
try {
// 使用MyBatis的Resources类加载配置文件
Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
// 构建SessionFactory实例
sessionFactory = new SqlSessionFactoryBuilder().build(reader);
} catch (Exception e) {
e.printStackTrace();
}
} public static SqlSession getSqlSession() {
return sessionFactory.openSession();
}
}
9. 测试
public static void main(String[] args) {
SqlSession sqlSession = null;
try {
// 获取sqlSession
sqlSession = DBTools.getSqlSession();
PersonMapper personMapper = sqlSession.getMapper(PersonMapper.class);
PersonBean personBean = new PersonBean("张三", 18, 1, new Date());
personMapper.insert(personBean);
System.out.println(personBean.toString());
} catch (Exception e) {
e.printStackTrace();
}
}
MyBatis学习-入门篇的更多相关文章
- Java基础-SSM之mybatis快速入门篇
Java基础-SSM之mybatis快速入门篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 其实你可能会问什么是SSM,简单的说就是spring mvc + Spring + m ...
- MyBatis 学习入门
mybatis 第一天 mybatis的基础知识 持久层的框架,对jdbc的封装 课程安排 第一天:基础知识(重点,内容量多) 最简单的jdbc程序 public class JdbcTest{ pu ...
- MyBatis学习-入门
eclipse + jdk 1.8 + mybatis 1.数据库准备 安装mysql数据库,建立数据库test,在test库下建立测试的表 CREATE TABLE `t_user` ( `id` ...
- Python学习 - 入门篇1
前言 学习渠道:慕课网:Python入门 记录原因:人总归要向记忆低头[微笑再见.gif] 记录目标:形成简洁的知识点查阅手册 变量和数据类型 变量 赋值 在Python中,可以把任意数据类型赋值给变 ...
- 一起学MyBatis之入门篇(2)
概述 本文主要讲解MyBatis中类型转换的功能,其实在MyBatis中,提供了默认的数据类型之间的转换,但只是基本数据类型的转换,如果跨类型进行转换,则需要自定义转换类,如java中是boolean ...
- 一起学MyBatis之入门篇
概述 本文以一个简单的小例子,简述在Java项目开发中MyBatis的基本用法,属于入门级文章,仅供学习分享使用,如有不足之处,还请指正. 什么是MyBatis? MyBatis 是一款优秀的持久层框 ...
- TensorFlow学习——入门篇
本文主要通过一个简单的 Demo 介绍 TensorFlow 初级 API 的使用方法,因为自己也是初学者,因此本文的目的主要是引导刚接触 TensorFlow 或者 机器学习的同学,能够从第一步开始 ...
- 深度学习入门篇--手把手教你用 TensorFlow 训练模型
欢迎大家前往腾讯云技术社区,获取更多腾讯海量技术实践干货哦~ 作者:付越 导语 Tensorflow在更新1.0版本之后多了很多新功能,其中放出了很多用tf框架写的深度网络结构(https://git ...
- spring boot 学习入门篇【spring boot项目的搭建以及如何加载jsp界面】
[ 前言] Spring Boot 简介:Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置, ...
随机推荐
- java 线程池简介
线程池简介 通过前面的章节我们了解到如何去创建线程,但是如果我们每一次多去创建线程.我们是否回去想,既然是创建线程我们为什么不能像连接池一样呢.做到线程之间的复用呢,减少资源之间的让费呢? jdk为我 ...
- 配置supervisor 让laraver的队列实现守护进程
1,安装: #brew install supervisor 默认会安装在/usr/local/Cellar/supervisor目录 2,在etc下面新建supervisor.conf 文件,复制下 ...
- 分享php工作中遇到的一些探究和技巧【2】
1 如何定义linux和window通用的文件分隔符号 DIRECTORY_SEPARATOR : 目录分隔符,是定义php的内置常量.在调试机器上,在windows我们习惯性的使用"\& ...
- floor()函数 向下取整 ceil()函数向上取整
floor(x) is the largest integer not greater than x , 也就是,floor(x) 返回的是小于等于x的所有整数中最大的整数,简单的说,就是去掉x的小 ...
- Kattis -Bus Numbers
Bus Numbers Your favourite public transport company LS (we cannot use their real name here, so we pe ...
- CentOS Gnome 识别 NTFS-3G
安装完NTFS-3G后,使用命令行已经可以正常挂载NTFS分区了 但如果是源码编译安装(epel yum 库也有),还需要添加一个软链接,才能点击Gnome的左边栏进行挂载,因为Gnome挂载NTFS ...
- JS 用角度换东南西北
最近因为业务,正好需要用设备回传的角度值转成用户读得懂的文字形式 function toDirStr(num){ var num=parseInt(num) var N='北'; var E='东'; ...
- 安装hadoop-eclipse-plugin插件报错解决办法
安装myecplise的hadoop-eclipse-plugin-2.2.0插件的时候, 把插件放到这个文件夹里 打开myeclipse windows-->preferences 点击 H ...
- YUM变量
有一个简单的python命令可以看到yum的 releaserver.arch.basearch的值 /usr/bin/python -c 'import yum, pprint; yb = yum. ...
- Signalr 实现心跳包
项目分析: 一个实时的IM坐席系统,客户端和坐席使用IM通信,客户端使用android和ios的app,坐席使用web. web端可以保留自己的登录状态,但为防止意外情况的发生(如浏览器异常关闭,断网 ...