1.前言

MyBatis 是什么?

  • MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。
  • MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。
  • MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

本篇介绍如何在 IDEA 中使用 MyBatis 开发 Java 项目,并且使用 Maven 来管理和集成依赖库。

1.相关配置

1.1 Maven 配置

Maven 的优点在于可以方便的管理各种依赖包,我们可以使用 Maven 来管理 MyBatis 和 MySQL 的相关库的依赖。

新建的 Maven 项目目录关系入下:



最后,Maven 目录如下:



新建一个 Maven 工程后,在 pom.xml 中配置 MyBatis 和 mysql 依赖库。

<?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>net.libaoquan.learnssm.c3</groupId>
<artifactId>learnmybatis</artifactId>
<version>1.0-SNAPSHOT</version> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<mybatis.version>3.4.5</mybatis.version>
<mysql.version>8.0.11</mysql.version>
</properties> <dependencies><!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>${mybatis.version}</version>
</dependency><!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
</dependencies> </project>

1.2 MyBatis 配置

在 resources 文件夹下新建 mybatis-config.xml 文件,填入 MyBatis 配置信息。

其中:

  • typeAliases 项关联 POJO 类,并为这个类起了一个别名,这样,在其他的 Maven 相关配置中,可以使用这个别名代替这个 POJO 类。
  • mappers 项关联的是 XML 映射器,在这个映射器中实现 sql 逻辑。
<?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 alias="worker" type="net.libaoquan.learnssm.c3.learnmybatis.pojo.Worker"/>
</typeAliases > <!-- 数据库环境 -->
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/ssm"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<!-- 映射文件 -->
<mappers>
<mapper resource="mapper/workerMapper.xml"/>
</mappers>
</configuration>

2.创建数据库

创建数据库并填入数据。

create database ssm;
create table worker (
id int primary key auto_increment,
name varchar(255),
note varchar(255)
); alter table worker default character set utf8;
alter table worker change name name varchar(255) character set utf8;
alter table worker change note note varchar(255) character set utf8; insert into worker (name, note) values ('章三', '工程师');
insert into worker (name, note) values ('王如', '工程师');
insert into worker (name, note) values ('李斯', '工程师');
insert into worker (name, note) values ('赵翼', '设计师');
insert into worker (name, note) values ('孙起', '设计师');

3.创建 POJO 类

一个 POJO 类,简单来说就是与数据库中一张表相关联的一个 Java 类。

在这里,新建一个 POJO 类 Worker,与数据表 worker 相关联,可以使自动填充填写 setter 和 getter 方法。

package net.libaoquan.learnssm.c3.learnmybatis.pojo;

public class Worker {
private Integer id;
private String name;
private String note; public Worker() {
this.id = 0;
this.name = "";
this.note = "";
}
public Worker(Integer id, String name, String note) {
this.id = id;
this.name = name;
this.note = note;
} public Integer getId() {
return id;
} public void setId(Integer id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String getNote() {
return note;
} public void setNote(String note) {
this.note = note;
} @Override
public String toString() {
return "Worker{" +
"id=" + id +
", name='" + name + '\'' +
", note='" + note + '\'' +
'}';
}
}

4.创建 xml 映射器

一个 xml 映射器用来实现如何处理与之关联的 POJO 类的数据逻辑,一般在接口中实现处理逻辑,具体的实现由 xml 文件中的 sql 语句实现。

使用 workerMapper.xml 以及 WorkerMapper 接口实现 xml 映射器。

首先,新建一个接口 workerMapper,其中方法 getWorker 是一个 Worker 类的处理逻辑。

package net.libaoquan.learnssm.c3.learnmybatis.mapper;

import net.libaoquan.learnssm.c3.learnmybatis.pojo.Worker;

public interface WorkerMapper {
public Worker getWorker(int id);
}

接着,在 resources 目录下建立 mapper 目录,创建 workerMapper.xml。

其中:

  • 在 namespace 中关联接口文件
  • select 标志是一个查询语句,其返回类型是一个 worker (在mybatis-config.xml 中定义的别名),参数是一个 int 类型,在 sql 中表示为 #{id}
  • select 的 id 关联的是接口中的方法名。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//rnybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="net.libaoquan.learnssm.c3.learnmybatis.mapper.WorkerMapper">
<select id="getWorker" parameterType="int" resultType="worker">
select id, name, note from worker where id= #{id}
</select>
</mapper>

5.测试

新建 test 类,测试配置是否正确。

使用 2 种 SQL 发送器,分别是用 SqlSession 直接发送,和通过 SqlSession获取 Mapper接口再发送。

一般推荐使用第二种。

package net.libaoquan.learnssm.c3.learnmybatis;

import net.libaoquan.learnssm.c3.learnmybatis.mapper.WorkerMapper;
import net.libaoquan.learnssm.c3.learnmybatis.pojo.Worker;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder; import java.io.IOException;
import java.io.InputStream; public class test {
public static void main(String[] args){
SqlSessionFactory SqlSessionFactory = null;
String resource = "mybatis-config.xml";
InputStream inputStream;
SqlSession sqlSession = null;
try {
inputStream = Resources.getResourceAsStream (resource);
SqlSessionFactory = new SqlSessionFactoryBuilder() .build(inputStream);
sqlSession = SqlSessionFactory.openSession();
// 用 SqlSession 直接发送
Worker t = (Worker)sqlSession.selectOne("net.libaoquan.learnssm.c3.learnmybatis.mapper.WorkerMapper.getWorker", 1);
System.out.println(t.toString()); // 通过 SqlSession获取 Mapper接口再发送
WorkerMapper tm = sqlSession.getMapper(WorkerMapper.class);
Worker t2 = tm.getWorker(2);
System.out.println(t2.toString()); sqlSession.commit();
} catch (IOException e) {
e.printStackTrace();
sqlSession.rollback();
}
finally {
if (sqlSession != null){
sqlSession.close();
}
}
}
}

Java 笔记——在 IDEA 中使用 Maven 配置和使用 MyBatis的更多相关文章

  1. Maven配置Spring+SpringMVC+MyBatis(3.2.2)Pom 以及 IntelliJ IDEA 怎样打开依赖视图

    Maven配置Spring+SpringMVC+MyBatis(3.2.2)Pom 配置原则: 利用依赖,将所需的jar包加载到project中. 先依赖主要jar包 Spring + Spring ...

  2. Java归去来第4集:java实战之Eclipse中创建Maven类型的SSM项目

    一.前言 如果还不了解剧情,请返回第3集的剧情          Java归去来第3集:Eclipse中给动态模块升级 二.在Eclipse中创建Maven类型的SSM项目 2.1:SSM简介 SSM ...

  3. 【Java】在eclipse中使用maven进行项目构建 入门篇

    maven配置的简单说明 从\192.168.30.150\103.初级人员培训资料\新建文件夹 (2)\环境下提取apache-maven-3.0.4.zip压缩包,解压缩至E盘下 在E盘下新建&q ...

  4. 在Java中使用Maven配置的版本信息

    我们在使用maven开发一些项目的时候需要知道当前的版本状态,但版本状态储存在pom.xml文件中,可以采用以下2种方式进行获取: 1. 采用xml解析的方式去获取pom文件的{project.ver ...

  5. eclipse中的maven配置

    1.下载最新版eclipse,包含maven版本 2.配置maven本地仓库(修改settings.xml)

  6. idea中默认maven配置

    使用idea时,通常会配置自己的maven,但是发现每创建一个新项目都需要重新配置一遍,原来在idea中有一个默认配置,修改后就会全局生效,具体配置如下: 简单两步,配置完成.

  7. 七、【Docker笔记】Docker中网络基础配置

    一个系统一般都包含多个服务组件,这些大量的服务组件不可能放在同一个容器中,这就需要多个容器之间可以互相通信.Docker提供了两种方式来实现网络服务:映射容器端口到宿主主机.容器互联机制. 一.端口映 ...

  8. IntelliJ IDEA 中为Maven 配置阿里云镜像源

    idea中查看位置,应该都是一样的这个位置 在此位置下新建一个.xml文件 内容如下: <?xml version="1.0" encoding="UTF-8&qu ...

  9. java之IDEA中使用Maven

    Maven的安装与使用 安装 1.下载,官网下载. 2.解压,存放路径中不可包含空格和中文.如:"E:\dev\workspace\maven\apache-maven-3.6.0" ...

随机推荐

  1. Python2.7-stat

    stat模块,用于解释 os.stat(),os.lstat(),os.fstat() 返回的结果,定义了许多表示文件或路径的各个状态的常数和测试各个状态的函数具体参考 官方文档 和 http://w ...

  2. 虚拟机VirtualBox安装MAC OS 10.12图文教程

    VirtualBox虚拟机安装Mac OS 10.12图文教程的准备 1.VirtualBox虚拟机 下载地址:https://www.virtualbox.org/ 特别提醒:推荐官方下载,安装Vi ...

  3. 第36章 SDIO—SD卡读写测试

    第36章     SDIO—SD卡读写测试 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/f ...

  4. 2017-2018-1 20155202 张旭 嵌入式C语言——时钟提取时分秒

    2017-2018-1 20155202 张旭 嵌入式C语言--时钟提取时分秒 任务要求: 在作业本上完成附图作业,要认真看题目要求. 提交作业截图 作弊本学期成绩清零(有雷同的,不管是给别人传答案, ...

  5. 全虚拟化和半虚拟化的区别 cpu的ring0 ring1又是什么概念? - 转

    http://www.cnblogs.com/xusongwei/archive/2012/07/30/2615592.html ring0是指CPU的运行级别,ring0是最高级别,ring1次之, ...

  6. HTTPUTILS

    maven依赖 <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId&g ...

  7. 【第三课】Centos 7.x系统安装和网络配置以及远程密钥登录

    目录 一.安装CentOS 7.3 二.配置网络 1.使用dhclient命令自动获取ip地址 2.使用ip addr或ifconfig命令查看网卡信息 3.使用route命令查看路由信息 4.通过修 ...

  8. ubuntu下安装搜狗输入法

    1.如果系统中未安装依赖fcitx,libssh2-1,或者依赖fcitx,libssh2-1的版本低的话,则需提前安装或者升级,否则安装输入法时会出错 安装命令 sudo apt-get insta ...

  9. Execute SQL Task 如何返回结果数据集

    Execute Sql Task的Result DataSet 主要有以下四种,当Execute Sql Task返回结果之后,需要使用SSIS Variable 来接收数据. 例子中使用的数据表代码 ...

  10. C# Language Specification 5.0 (翻译)第四章 类型

    C# 语言的类型分为两大类:值类型(value type)和引用类型(reference type),而它们又都同时具有至少一个类型形参的泛型类型(generic type).类型形参(type pa ...