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 > ...
随机推荐
- 2019牛客多校第二场 A Eddy Walker(概率推公式)
2019牛客多校第二场 A Eddy Walker(概率推公式) 传送门:https://ac.nowcoder.com/acm/contest/882/A 题意: 给你一个长度为n的环,标号从0~n ...
- filter 应用
一.统一全站字符编码 通过配置参数charset指明使用何种字符编码,以处理Html Form请求参数的中文问题 1 package me.gacl.web.filter; 2 3 import ja ...
- python类型常用整理
# 一.数字 # int(..) # 二.字符串 # replace find join strip startswith split upper lower format # tempalte = ...
- 第三阶段:3.Web端产品设计:3.产品设计的层次
一般淘宝购物的五个流程:浏览对应表现层,搜索对应框架层,产品页面对应架构层,确认对应范围层,付款对应战略层. 从具象到抽象.但是我们做产品都是从抽象到具象,而用户使用产品是从具象到抽象. 各个层次之间 ...
- `docker数据持久化volume和bind mounts两种方式
将数据从宿主机到容器的三种方式: ,volumes:docker管理宿主机文件系统的一部分(/var/lib/docker/volumes)保存数据的最佳方式 ,bind mounts 将宿主机上的任 ...
- 曹工说Spring Boot源码(7)-- Spring解析xml文件,到底从中得到了什么(上)
写在前面的话 相关背景及资源: 曹工说Spring Boot源码(1)-- Bean Definition到底是什么,附spring思维导图分享 曹工说Spring Boot源码(2)-- Bean ...
- Go网络文件传输
流程分析 借助TCP完成文件的传输,基本思路如下: 发送方(客户端)向服务端发送文件名,服务端保存该文件名. 接收方(服务端)向客户端返回一个消息ok,确认文件名保存成功. 发送方(客户端)收到消息后 ...
- Activity启动过程源码分析(Android 8.0)
Activity启动过程源码分析 本文来Activity的启动流程,一般我们都是通过startActivity或startActivityForResult来启动目标activity,那么我们就由此出 ...
- 关于Springboot找不到mapper.xml问题
今天在写springboot项目时报错org.apache.ibatis.binding.BindingException: Invalid bound statement (not found),找 ...
- 关于Integer 和Double包装类创建对象时的底层解析
public void method1() { Integer i = new Integer(1); Integer j = new Integer(1); System.out.println(i ...