Mybatis基础(一)
mybatis概述:
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
安装mybatis:
1.方式一:直接将mybatis-x.x.x.jar文件放置在classpath中,一般情况不用这种。
2.方式二:使用 Maven 来创建项目,将下面的 dependency 代码置于 pom.xml 文件中,该方法电脑要连接网络下载配置所需的文件(有时候maven会有点慢,等一下):
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>MybatisDemo_1</artifactId>
<version>1.0-SNAPSHOT</version>
<!-- 记得加下面这一行-->
<packaging>jar</packaging>
<dependencies>
<dependency>
<!-- 这个依赖是为了获取mybatis包-->
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>x.x.x</version>
</dependency>
<dependency>
<!-- 这个依赖是为了获取mysql数据库包-->
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.40</version>
</dependency>
<dependency>
<!-- 这个依赖是为了获取日志信息-->
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.12</version>
</dependency>
<!--一般必须配置的就是mybatis包,数据库包,其他项可以根据自己情况而配置 -->
</dependencies>
</project>
到这里maven的基本配置就结束了,接下来演示一个入门案例.
前期准备:创建数据库和数据表
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`id` int(11) NOT NULL auto_increment,
`username` varchar(32) NOT NULL COMMENT '用户名称',
`birthday` datetime default NULL COMMENT '生日',
`sex` char(1) default NULL COMMENT '性别',
`address` varchar(256) default NULL COMMENT '地址',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
insert into user(`id`,`username`,`birthday`,`sex`,`address`) values
(1,'小琼','2018-02-27 17:47:08','女','宣威'),
(2,'小琼琼','2018-03-02 15:09:37','女','南宁'),
(3,'大琼','2018-03-04 11:34:34','女','北海'),
(4,'琼琼','2018-03-04 12:04:06','女','云南'),
(5,'琼包','2018-03-07 17:37:26','男','广西'),
(6,'小杨','2018-03-08 11:44:00','女','贵州');
select * from USER;
一.mybatis环境配置:创建实体类和Dao接口
1.在src/main/java下面创建一个三层级的目录结构:com/Test/User和com/Test/Dao,其中在Test目录下面有两个文件夹User和Dao。

2.User.java中定义属性名和数据库中user表的字段名一致。
package com.Test.User;
import java.io.Serializable;
import java.util.Date;
public class User implements Serializable {
private Integer id;
private String username;
private Date birthday;
private String sex;
private String address;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return "User[" +
"id=" + id +
", username='" + username + '\'' +
", birthday=" + birthday +
", sex='" + sex + '\'' +
", address='" + address + '\'' +
']';
}
}
3.UserDao.java中提供查询数据库表中所有数据的方法,UserDao.java是一个接口。
package com.Test.Dao;
import com.Test.User.User;
import java.util.List;
/*
用户持久层接口
*/
public interface UserDao {
<!-- @Select("select * from user")如果这里使用注解来配置,那么SqlMapConfig.xml的mapper 就不一样 -->
List<User> findAll();
}
二.配置mybatis主文件 : SqlMapConfig.xml
SqlMapConfig.xml文件一开始是没有的,需要自己建,而且需要建在resources目录下:
<?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="mysql">
<!-- 配置mysql的环境 -->
<environment id="mysql">
<!-- 配置事物类型-->
<transactionManager type="JDBC"></transactionManager>
<!-- 配置连接池(数据源)-->
<dataSource type="POOLED">
<!-- 配置数据库的基本信息-->
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/数据库名"/>
<property name="username" value="数据库登录名"/>
<property name="password" value="数据库登录密码"/>
</dataSource>
</environment>
</environments>
<mappers >
<!--由于此处使用到了UserDao.xml文件,所以需要在resources目录下面创建 com/Test/Dao这样一个目录并且创建UserDao.xml文件,-->
<mapper resource="com/Test/Dao/UserDao.xml"></mapper>
<!--<mapper class="com.Test.Dao.UserDao"></mapper> 如果使用注解,那就这样设置-->
</mappers>
</configuration>
三.配置UserDao.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">
<!-- 这里的namespace必须写UserDao.xml对应文件UserDao的全路径-->
<mapper namespace="com.Test.Dao.UserDao">
<select id="findAll">
select * from user
</select>
</mapper>
mybatis的配置基本就完成了,下一篇讲实际操作。
2.User.java中定义属性名和数据库中user表的字段名一致。
package com.Test.User;
import java.io.Serializable;
import java.util.Date;
public class User implements Serializable {
private Integer id;
private String username;
private Date birthday;
private String sex;
private String address;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return "User[" +
"id=" + id +
", username='" + username + '\'' +
", birthday=" + birthday +
", sex='" + sex + '\'' +
", address='" + address + '\'' +
']';
}
}
3.UserDao.java中提供查询数据库表中所有数据的方法,UserDao.java是一个接口。
package com.Test.Dao;
import com.Test.User.User;
import java.util.List;
/*
用户持久层接口
*/
public interface UserDao {
<!-- @Select("select * from user")如果这里使用注解来配置,那么SqlMapConfig.xml的mapper 就不一样 -->
List<User> findAll();
}
二.配置mybatis主文件 : SqlMapConfig.xml
SqlMapConfig.xml文件一开始是没有的,需要自己建,而且需要建在resources目录下:
<?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="mysql">
<!-- 配置mysql的环境 -->
<environment id="mysql">
<!-- 配置事物类型-->
<transactionManager type="JDBC"></transactionManager>
<!-- 配置连接池(数据源)-->
<dataSource type="POOLED">
<!-- 配置数据库的基本信息-->
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/数据库名"/>
<property name="username" value="数据库登录名"/>
<property name="password" value="数据库登录密码"/>
</dataSource>
</environment>
</environments>
<mappers >
<!--由于此处使用到了UserDao.xml文件,所以需要在resources目录下面创建 com/Test/Dao这样一个目录并且创建UserDao.xml文件,-->
<mapper resource="com/Test/Dao/UserDao.xml"></mapper>
<!--<mapper class="com.Test.Dao.UserDao"></mapper> 如果使用注解,那就这样设置-->
</mappers>
</configuration>
三.配置UserDao.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">
<!-- 这里的namespace必须写UserDao.xml对应文件UserDao的全路径-->
<mapper namespace="com.Test.Dao.UserDao">
<select id="findAll">
select * from user
</select>
</mapper>
mybatis的配置基本就完成了,下一篇讲实际操作。
2.User.java中定义属性名和数据库中user表的字段名一致。
package com.Test.User;
import java.io.Serializable;
import java.util.Date;
public class User implements Serializable {
private Integer id;
private String username;
private Date birthday;
private String sex;
private String address;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return "User[" +
"id=" + id +
", username='" + username + '\'' +
", birthday=" + birthday +
", sex='" + sex + '\'' +
", address='" + address + '\'' +
']';
}
}
3.UserDao.java中提供查询数据库表中所有数据的方法,UserDao.java是一个接口。
package com.Test.Dao;
import com.Test.User.User;
import java.util.List;
/*
用户持久层接口
*/
public interface UserDao {
<!-- @Select("select * from user")如果这里使用注解来配置,那么SqlMapConfig.xml的mapper 就不一样 -->
List<User> findAll();
}
二.配置mybatis主文件 : SqlMapConfig.xml
SqlMapConfig.xml文件一开始是没有的,需要自己建,而且需要建在resources目录下:
<?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="mysql">
<!-- 配置mysql的环境 -->
<environment id="mysql">
<!-- 配置事物类型-->
<transactionManager type="JDBC"></transactionManager>
<!-- 配置连接池(数据源)-->
<dataSource type="POOLED">
<!-- 配置数据库的基本信息-->
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/数据库名"/>
<property name="username" value="数据库登录名"/>
<property name="password" value="数据库登录密码"/>
</dataSource>
</environment>
</environments>
<mappers >
<!--由于此处使用到了UserDao.xml文件,所以需要在resources目录下面创建 com/Test/Dao这样一个目录并且创建UserDao.xml文件,-->
<mapper resource="com/Test/Dao/UserDao.xml"></mapper>
<!--<mapper class="com.Test.Dao.UserDao"></mapper> 如果使用注解,那就这样设置-->
</mappers>
</configuration>
三.配置UserDao.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">
<!-- 这里的namespace必须写UserDao.xml对应文件UserDao的全路径-->
<mapper namespace="com.Test.Dao.UserDao">
<select id="findAll">
select * from user
</select>
</mapper>
mybatis的配置基本就完成了,下一篇讲实际操作。
Mybatis基础(一)的更多相关文章
- myBatis 基础测试 表关联关系配置 集合 测试
myBatis 基础测试 表关联关系配置 集合 测试 测试myelipse项目源码 sql 下载 http://download.csdn.net/detail/liangrui1988/599388 ...
- JAVA之Mybatis基础入门--框架搭建与简单查询
JAVA中,操作数据库有JDBC.hibernate.Mybatis等技术,今天整理了下,来讲一讲下Mybatis.也为自己整理下文档: hibernate是一个完全的ORM框架,是完全面向对象的.但 ...
- MyBatis基础入门《二十》动态SQL(foreach)
MyBatis基础入门<二十>动态SQL(foreach) 1. 迭代一个集合,通常用于in条件 2. 属性 > item > index > collection : ...
- mybatis基础系列(四)——关联查询、延迟加载、一级缓存与二级缓存
关本文是Mybatis基础系列的第四篇文章,点击下面链接可以查看前面的文章: mybatis基础系列(三)——动态sql mybatis基础系列(二)——基础语法.别名.输入映射.输出映射 mybat ...
- mybatis基础系列(三)——动态sql
本文是Mybatis基础系列的第三篇文章,点击下面链接可以查看前面的文章: mybatis基础系列(二)--基础语法.别名.输入映射.输出映射 mybatis基础系列(一)--mybatis入门 动态 ...
- mybatis基础系列(二)——基础语法、别名、输入映射、输出映射
增删改查 mapper根节点及其子节点 mybatis框架需要读取映射文件创建会话工厂,映射文件是以<mapper>作为根节点,在根节点中支持9个元素,分别为insert.update.d ...
- mybatis基础系列(一)——mybatis入门
好久不发博客了,写博文的一个好处是能让心静下来,整理下之前学习过的一些知识一起分享,大神路过~ mybatis简介 MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射. ...
- MyBatis基础入门《十九》动态SQL(set,trim)
MyBatis基础入门<十九>动态SQL(set,trim) 描述: 1. 问题 : 更新用户表数据时,若某个参数为null时,会导致更新错误 2. 分析: 正确结果: 若某个参数为nul ...
- MyBatis基础入门《十八》动态SQL(if-where)
MyBatis基础入门<十八>动态SQL(if-where) 描述: 代码是在<MyBatis基础入门<十七>动态SQL>基础上进行改造的,不再贴所有代码,仅贴改动 ...
- MyBatis基础入门《十七》动态SQL
MyBatis基础入门<十七>动态SQL 描述: >> 完成多条件查询等逻辑实现 >> 用于实现动态SQL的元素主要有: > if > trim > ...
随机推荐
- mysql5.7密码修改与报错分析
1.修改密码 修改密码: vim /etc/my.cnf 的mysqld字段加入skip-grant-tables 重启MySQL,service mysqld restart 终端输入 mysql ...
- Vsual Studio 2010可用的sqlite驱动程序(实体数据模型使用)
背景 昨天一个旧的项目(.net framework 4 + EF4 +sqlite + edmx db first),数据库结构有变更,要更新实体edmx模型 先是到官网下载最新的驱动,结果不能更新 ...
- nor flash之频率限制
背景 支持一款nor flash时,出于性能考虑,一般会查看其nor支持的最高频率以及主控端spi控制器的最高频率,以选择一个合适的运行频率. 对于一款主控支持多款flash的情况,还得考虑好兼容性等 ...
- 构建锁与同步组件的基石AQS:深入AQS的实现原理与源码分析
Java并发包(JUC)中提供了很多并发工具,这其中,很多我们耳熟能详的并发工具,譬如ReentrangLock.Semaphore,它们的实现都用到了一个共同的基类--AbstractQueuedS ...
- 003 ansible部署ceph集群
介绍:在上一次的deploy部署ceph,虽然出了结果,最后的结果并没有满足最初的目的,现在尝试使用ansible部署一遍,看是否会有问题 一.环境准备 ceph1充当部署节点,ceph2,ceph3 ...
- CPP 设计模式学习
源地址 https://www.ev0l.art/index.php/archives/20/ 备忘录模式 在一个类内部记录另一个类的快照状态的模式.可以再合适的时候跳回复用 设计备忘录的三大步骤: ...
- 初入webpack
为什么需要构建工具? 通过caniuse我们了解到 现代浏览器对es6特性的支持程度: 由于现代浏览器对es6特性的支持度并不能说太高,为了兼容所以需要进行 es6语法的转换,除了此,三大框架的语法特 ...
- Python for Data Analysis 学习心得(一) - numpy介绍
一.简介 Python for Data Analysis这本书的特点是将numpy和pandas这两个工具介绍的很详细,这两个工具是使用Python做数据分析非常重要的一环,numpy主要是做矩阵的 ...
- 量化投资学习笔记07——python知识补漏
看<量化投资:以python为工具>这本书,第一部分是python的基础知识.这一部分略读了,只看我还不知道或不熟的. 定义复数 x = complex(2, 5) #2+5j 也可以直接 ...
- AcWing 244. 谜一样的牛|树状数组
传送门 题目描述 有n头奶牛,已知它们的身高为 1~n 且各不相同,但不知道每头奶牛的具体身高. 现在这n头奶牛站成一列,已知第i头牛前面有Ai头牛比它低,求每头奶牛的身高. 输入格式 第1行:输入整 ...