首先,来个项目全景预览,文章尾部附上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文件中,需要用转义为&amp;)

<?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&amp;characterEncoding=utf-8&amp;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入门(附源码压缩包下载)的更多相关文章

  1. wpf 模拟抖音很火的罗盘时钟,附源码,下载就能跑

    wpf 模拟抖音很火的罗盘时钟,附源码 前端时间突然发现,抖音火了个壁纸,就是黑底蕾丝~~~  错错错,黑底白字的罗盘时钟! 作为程序员的我,也觉得很新颖,所以想空了研究下,这不,空下来了就用wpf, ...

  2. CentOS6.6系统源代码安装mysql5.5.28教程(附源码包下载地址)+sysbench的安装

    mysql从5.5版本开始,不再使用./configure编译,而是使用cmake编译器,具体的cmake编译参数可以参考mysql官网文档(※ 非常重要) http://dev.mysql.com/ ...

  3. [小工具] Command-line CPU Killer(附源码及下载链接)

    博主有次在拆卸自己的笔记本电脑后,发现电脑如果静置时间长了有时会重启,但奇怪的是当我自己在电脑前工作的时候从来没有重启过.据此推测可能 CPU 完全空闲的时候风扇完全停转了,虽然 CPU 温度不高,但 ...

  4. SpringBoot整合Redis、mybatis实战,封装RedisUtils工具类,redis缓存mybatis数据 附源码

    创建SpringBoot项目 在线创建方式 网址:https://start.spring.io/ 然后创建Controller.Mapper.Service包 SpringBoot整合Redis 引 ...

  5. (附源码gitHub下载地址)spring boot -jta-atomikos分布式事务

    应用场景:双数据源,就是某些项目会涉及到两个数据源或者两个以上的数据源,这个多数据源的项目一般是数据同步,也就是把数据从另一个系统中,保存到另一个系统,两边的 数据库又不一样,比如一个Mysql.一个 ...

  6. arcgis api 3.x for js 入门开发系列批量叠加 zip 压缩 SHP 图层优化篇(附源码下载)

    前言 关于本篇功能实现用到的 api 涉及类看不懂的,请参照 esri 官网的 arcgis api 3.x for js:esri 官网 api,里面详细的介绍 arcgis api 3.x 各个类 ...

  7. openlayers4 入门开发系列之地图导航控件篇(附源码下载)

    前言 openlayers4 官网的 api 文档介绍地址 openlayers4 api,里面详细的介绍 openlayers4 各个类的介绍,还有就是在线例子:openlayers4 官网在线例子 ...

  8. openlayers4 入门开发系列结合 echarts4 实现散点图(附源码下载)

    前言 openlayers4 官网的 api 文档介绍地址 openlayers4 api,里面详细的介绍 openlayers4 各个类的介绍,还有就是在线例子:openlayers4 官网在线例子 ...

  9. openlayers5-webpack 入门开发系列结合 echarts4 实现散点图(附源码下载)

    前言 openlayers5-webpack 入门开发系列环境知识点了解: node 安装包下载webpack 打包管理工具需要依赖 node 环境,所以 node 安装包必须安装,上面链接是官网下载 ...

随机推荐

  1. levelDB SSTable-1

    创建sstable文件 了解了sstable文件的存储格式,以及Data Block的组织,下面就可以分析如何创建sstable文件了.相关代码在table_builder.h/.cc以及block_ ...

  2. SpringBoot(七) -- 嵌入式Servlet容器

    一.嵌入式Servlet容器 在传统的开发中,我们在完成开发后需要将项目打成war包,在外部配置好TomCat容器,而这个TomCat就是Servlet容器.在使用SpringBoot开发时,我们无需 ...

  3. Makefile project

    1 Makefile里出现IDF_PATH,所以要在工程属性里的environment环境变量添加IDF_PATH,对其解释,指出路径. 2  项目中用了shell文本,如果用Python 语言,要确 ...

  4. VS2010中解决Qt“Unable to find a Qt build“

    转自:http://blog.sina.com.cn/s/blog_687960370101d0eu.html 三种方法: 1.在QT菜单下单击OPTION,然后单击ADD,选择QT安装路径. 2.运 ...

  5. 13 个设计 REST API 的最佳实践

    原文 RESTful API Design: 13 Best Practices to Make Your Users Happy 写在前面 之所以翻译这篇文章,是因为自从成为一名前端码农之后,调接口 ...

  6. Oracle DBA_EXTENTS视图 与 DBA_SEGMENTS视图

    DBA_EXTENTS describes the extents comprising the segments in all tablespaces in the database.   Note ...

  7. TypeScript从入门到Vue项目迁移

    1. 前言 ES6的普及,大大简化了JavaScript的表达方式 大型项目中,js没有类型检查.表达方式灵活,多人协作代码调试和维护成本高 2. 定义 TypeScript 是 JavaScript ...

  8. ECarts 的初步使用

    ECharts,一个使用 JavaScript 实现的开源可视化库,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器(IE8/9/10/11,Chrome,Firefox,Safari等) ...

  9. 02-CSS简介和基本选择器

    # CSS为了让网页元素的样式更加丰富,也为了让网页的内容和样式能拆分开,CSS由此思想而诞生,CSS是 Cascading Style Sheets 的首字母缩写,意思是层叠样式表.有了CSS,ht ...

  10. 阿里P7前端需要哪些技能

    原谅我copy过来的,但是这个条理很清楚很有借鉴意义 前言 以下是从公众号的文章中获取到的一位阿里的前端架构师整理的前端架构p7的技能图谱,当然不是最完整.最系统的,所以之后我会一直维护更新这里的内容 ...