Mybatis入门(附源码压缩包下载)
首先,来个项目全景预览,文章尾部附上Demo下载链接

【1】pom.xml配置(加入jar包)
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.zyq</groupId>
<artifactId>test</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>test Maven Webapp</name>
<url>http://maven.apache.org</url>
<dependencies>
<!-- https://mvnrepository.com/artifact/junit/junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.5</version>
</dependency>
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>6.0.6</version>
</dependency>
</dependencies>
<build>
<finalName>test</finalName>
</build>
</project>
【2】创建对象实体User.java
package com.zyq.entity;
public class User {
private int id;
private String name;
private String phone;
public int getId() {
return id;
}
public String getName() {
return name;
}
public String getPhone() {
return phone;
}
public void setId(int id) {
this.id = id;
}
public void setName(String name) {
this.name = name;
}
public void setPhone(String phone) {
this.phone = phone;
}
@Override
public String toString() {
return "User [id=" + id + ", name=" + name + ", phone=" + phone + "]";
}
}
【3】创建Dao层接口
package com.zyq.dao;
import java.util.List;
import com.zyq.entity.User;
public interface UserDao {
/**
* 获取所有用户
*/
List<User> getUserList();
/**
* 获取单个用户
*/
User getUserById(int id);
/**
* 添加用户
*/
void addUser(User user);
/**
* 更新用户
*/
void updateUser(User user);
/**
* 删除单个用户
*/
void deleteUserById(int id);
}
【4】mapper.xml配置(每个语句id与Dao层接口名称需要保持一致,parameterType="user" 中的user是取的别名,详见【5】)
<?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.zyq.dao.UserDao">
<!-- 查询用户 -->
<select id="getUserList" resultType="user">
SELECT * FROM user
</select>
<!-- 查询所有用户 -->
<select id="getUserById" parameterType="int" resultType="user">
SELECT * FROM user WHERE id = #{id}
</select>
<!-- 新增用户 -->
<insert id="addUser" parameterType="user">
INSERT INTO user (id, name, phone) VALUES (#{id}, #{name}, #{phone})
</insert>
<!-- 修改用户 -->
<update id="updateUser" parameterType="user">
UPDATE user SET name=#{name}, phone=#{phone} WHERE id=#{id}
</update>
<!-- 删除用户 -->
<delete id="deleteUserById" parameterType="int">
DELETE FROM user WHERE id=#{id}
</delete>
</mapper>
【5】mybatis-config.xml配置(主要用于加载数据源信息,特别说明:数据源中的url本来是用&链接,但在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>
<!-- 别名 -->
<typeAliases>
<typeAlias type="com.zyq.entity.User" alias="user"/>
</typeAliases>
<!-- 数据源 -->
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC"/>
<property name="username" value="root"/>
<property name="password" value="zyq123"/>
</dataSource>
</environment>
</environments>
<!-- 加载mapper文件 -->
<mappers>
<mapper resource="mapper.xml"/>
</mappers>
</configuration>
【6】MySessionFactory(创建session,与数据库发生交互)
package com.zyq.until; import java.io.InputStream; 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 MySessionFactory { private static String mybatisResource = "mybatis-config.xml";
private static SqlSessionFactory sqlSessionFactory; public static SqlSessionFactory getSqlSessionFactory() throws Exception{
if (sqlSessionFactory == null) {
InputStream inputStream = Resources.getResourceAsStream(mybatisResource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
}
return sqlSessionFactory;
} public static SqlSession getSession(){
try {
return getSqlSessionFactory().openSession();
} catch (Exception e) {
e.printStackTrace();
}
return null;
} }
【7】创建表
顺便表中首先插入几条数据用于测试

【8】MybatisTest(测试类。特别说明:这里事务由于回滚,并不会将修改后的数据保存在数据库中)
package test; import java.util.List; import org.apache.ibatis.session.SqlSession;
import org.junit.Before;
import org.junit.Test; import com.zyq.dao.UserDao;
import com.zyq.entity.User;
import com.zyq.until.MySessionFactory; public class MybatisTest { private SqlSession session;
private UserDao userDao; @Before
public void initSession() {
session = MySessionFactory.getSession();
userDao = session.getMapper(UserDao.class);
} /**
* 单元测试 :根据ID查询用户
*/
@Test
public void getUserByIdTest(){
int id = 1;
User user = userDao.getUserById(id);
if (user != null) {
System.out.println(user.toString());
} else {
System.out.println("不存在id=" + id + "的用户!");
}
} /**
* 单元测试 :获取所有用户
*/
@Test
public void getUserListTest(){
List<User> users = userDao.getUserList();
if (users != null && !users.isEmpty()) {
for (User user : users) {
System.out.println(user.toString());
}
} else {
System.out.println("当前数据库无用户!");
}
} /**
* 单元测试 :添加用户
*/
@Test
public void addUserTest(){
User user = new User();
user.setId(101);
user.setName("诸葛亮");
user.setPhone("13256565656");
userDao.addUser(user);
// 检测新增是否成功
User check = userDao.getUserById(user.getId());
session.commit(); // 这一句释放开会提交记录到数据库,注释则不会,下同
if (check != null) {
System.out.println("添加成功!");
} else {
System.out.println("添加失败!");
}
} /**
* 单元测试:根据ID修改用户信息
*/
@Test
public void updateUserTest(){
int id = 1;
User user = userDao.getUserById(id);
if (user != null) {
// 这里调用了String.format()方法,不明白的请自行百度
System.out.println(String.format("存在id=%s的用户:%s", id, user.toString()));
// 修改内容为在原数据后面加一个"_upd"
user.setName(user.getName() + "_upd");
user.setPhone(user.getPhone() + "_upd");
userDao.updateUser(user);
session.commit();
// 修改后查询对比
User check = userDao.getUserById(id);
System.out.println("修改后的用户:" + check.toString());
} else {
System.out.println(String.format("不存在id=%s的用户!", id));
}
} /**
* 单元测试:根据ID删除用户
*/
@Test
public void deleteUserByIdTest(){
int id = 1;
User user = userDao.getUserById(id);
if (user != null) {
System.out.println("已存在的用户:" + user.toString());
userDao.deleteUserById(id);
session.commit();
// 检测删除是否成功
User check = userDao.getUserById(id);
if (check == null) {
System.out.println("删除成功!");
} else {
System.out.println("删除失败!");
}
} else {
System.out.println("不存在id=" + id + "的用户!");
}
}
}
以上就是一个简单的Mybatis配置及使用过程,
下面附上项目源码下载地址:提取码【5m26】
https://pan.baidu.com/s/1YPWeqUZStArXTzy3cKj9gA
在下载项目导入后你需要注意2点,即可到测试类进行测试:
(1)到数据库中建立一个user表,并插入几条数据,详见【7】
(2)修改数据源,如果是本地的话,则只需要修改用户名(username)和密码(password),详见【5】
Mybatis入门(附源码压缩包下载)的更多相关文章
- wpf 模拟抖音很火的罗盘时钟,附源码,下载就能跑
wpf 模拟抖音很火的罗盘时钟,附源码 前端时间突然发现,抖音火了个壁纸,就是黑底蕾丝~~~ 错错错,黑底白字的罗盘时钟! 作为程序员的我,也觉得很新颖,所以想空了研究下,这不,空下来了就用wpf, ...
- CentOS6.6系统源代码安装mysql5.5.28教程(附源码包下载地址)+sysbench的安装
mysql从5.5版本开始,不再使用./configure编译,而是使用cmake编译器,具体的cmake编译参数可以参考mysql官网文档(※ 非常重要) http://dev.mysql.com/ ...
- [小工具] Command-line CPU Killer(附源码及下载链接)
博主有次在拆卸自己的笔记本电脑后,发现电脑如果静置时间长了有时会重启,但奇怪的是当我自己在电脑前工作的时候从来没有重启过.据此推测可能 CPU 完全空闲的时候风扇完全停转了,虽然 CPU 温度不高,但 ...
- SpringBoot整合Redis、mybatis实战,封装RedisUtils工具类,redis缓存mybatis数据 附源码
创建SpringBoot项目 在线创建方式 网址:https://start.spring.io/ 然后创建Controller.Mapper.Service包 SpringBoot整合Redis 引 ...
- (附源码gitHub下载地址)spring boot -jta-atomikos分布式事务
应用场景:双数据源,就是某些项目会涉及到两个数据源或者两个以上的数据源,这个多数据源的项目一般是数据同步,也就是把数据从另一个系统中,保存到另一个系统,两边的 数据库又不一样,比如一个Mysql.一个 ...
- arcgis api 3.x for js 入门开发系列批量叠加 zip 压缩 SHP 图层优化篇(附源码下载)
前言 关于本篇功能实现用到的 api 涉及类看不懂的,请参照 esri 官网的 arcgis api 3.x for js:esri 官网 api,里面详细的介绍 arcgis api 3.x 各个类 ...
- openlayers4 入门开发系列之地图导航控件篇(附源码下载)
前言 openlayers4 官网的 api 文档介绍地址 openlayers4 api,里面详细的介绍 openlayers4 各个类的介绍,还有就是在线例子:openlayers4 官网在线例子 ...
- openlayers4 入门开发系列结合 echarts4 实现散点图(附源码下载)
前言 openlayers4 官网的 api 文档介绍地址 openlayers4 api,里面详细的介绍 openlayers4 各个类的介绍,还有就是在线例子:openlayers4 官网在线例子 ...
- openlayers5-webpack 入门开发系列结合 echarts4 实现散点图(附源码下载)
前言 openlayers5-webpack 入门开发系列环境知识点了解: node 安装包下载webpack 打包管理工具需要依赖 node 环境,所以 node 安装包必须安装,上面链接是官网下载 ...
随机推荐
- raid10 五块硬盘/raid5(三块使用,两块备份)
raid 10五块硬盘 第一步:在虚拟机中在添加五块硬盘 第二步:使用mdadm命令创建RAID10,名称为“/dev/md0/” -C代表创建操作,-v显示创建过程,-a yes检查RAID名称,- ...
- javascript自定义Map对象
javascript定义map对象开发前端组件的重要性就不过多阐述了,直接参考以下案例即可 <script type=text/javascript charset=utf-8> func ...
- 使用Jest测试JavaScript (入门篇)
1 什么是 Jest? Jest是 Facebook 的一套开源的 JavaScript 测试框架, 它自动集成了断言.JSDom.覆盖率报告等开发者所需要的所有测试工具,是一款几乎零配置的测试框架. ...
- [环境搭建]-Web Api搭建到IIS服务器后PUT请求返回HTTP Error 405.0 - Method Not Allowed 解决方法 转摘:http://blog.csdn.net/qiujuer/article/details/23827531
尝试使用微软的Web Api,他的确是一个很有意思的东西. 让我体会到了许多的方便,但是我发现部署到IIS服务器上去了后PUT和Delete请求将返回405. 原因是IIS的默认处理程序默认情况下只允 ...
- ionic -v2版本项目结构
myApp │ config.xml //项目配置文件,包名.名称.minSdkVersion等都在此处配置 │ ionic.config.json │ package.json //项目依 ...
- 使用控制台搭建vue-cli脚手架
注意: 1.安装前您需要查看自己是否有node环境 检查:node - v 2.如果没有的话,需要先搭建好才能进行下一步操作 (参考:https://www.cnblogs.com/sylys/p/ ...
- nodejs http服务器简单搭建
var http = require('http') // 1. 创建 Server var server = http.createServer() // 2. 监听 request 请求事件,设置 ...
- CentOS安全防护实例
(1) 借助iptables的recent模块限制IP连接数 可以限制瞬间连接数过大的恶意IP(比如web应用防护,但不适用于LVS+Keepalived集群环境) 防护指令如下 # 允许一个客户端6 ...
- cp 复制文件或目录
1. 命令功能 cp --copy files and directories.复制文件或目录. 2. 语法格式 cp [option] source des cp [option] sour ...
- 1146. Topological Order (25)
This is a problem given in the Graduate Entrance Exam in 2018: Which of the following is NOT a topol ...