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;}@Overridepublic 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();}}}
}

转载于:https://www.cnblogs.com/libaoquan/p/9383470.html

Java 笔记——在 IDEA 中使用 Maven 配置和使用 MyBatis相关推荐

  1. 数据结构与算法-java笔记一 更新中

    数据结构与算法-java笔记一 更新中 数据结构与算法 什么是数据结构.算法 数据结构学了有什么用: 线性结构 数组 特点 应用 链表 存储结构 链表类型 单链表 双向链表 双向循环链表 链表与数组的 ...

  2. idea中使用maven配置sonar

    idea中使用maven配置sonar (0.1-0.3为idea安装插件方式,如不想添加插件,可省略) 0.1 在IDEA中settings.xml–>Plugins搜索SonarLint下载 ...

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

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

  4. 孙宇java_[JAVA] 孙宇老师Struts2+Hibernate4+Maven+EasyUI+SpringMvc+Spring+Mybatis+Maven整合课程...

    资源介绍 孙宇老师Struts2+Hibernate4+Maven+EasyUI+SpringMvc+Spring+Mybatis+Maven整合课程 ===============课程目录===== ...

  5. Java笔记-Spring Boot中Spring WS WS-Addressing中@Action实例

    此笔记为利用Spring WS的WS-Addressing发送SOAP请求及接收其响应. WS-Addressing(Web服务寻址):传送Web服务端点的引用的数据结构,以及一套能够在特定的消息上关 ...

  6. Java笔记-springframework.ws中拦截器的使用(SOAP)

    这里首先说下客户端拦截器. 这里要实现的效果 这里的打印都是在拦截器中打印的! 下面要介绍如下的东西,如何在拦截器中打印这些东西,其次是在拦截器中添加一个head 对应的Maven <?xml ...

  7. truelicense中的maven配置

    2019独角兽企业重金招聘Python工程师标准>>> 网址参考: http://mvnrepository.com/artifact/net.java.truelicense 如果 ...

  8. Java笔记-解决WebServiceTemplate中No subject alternative names matching IP address xxx

    主要的原因是证书有问题,就是程序的IP地址和证书的IP地址不匹配. 这里是客户端报错,使用的是spring-ws 对应的Maven如下: <dependency><groupId&g ...

  9. Java笔记-对SpringBoot中CommandLineRunner的使用笔记

    从中可以看到,这个是SpringBoot中的一个接口,他是在Spring环境都建起了后,一个一个的调用,都是在主线程中调用,如下: 事例代码如下: DisposeOne.java @Component ...

最新文章

  1. CVPR2021评审出来了!你的论文怎么样
  2. 《搜索引擎-信息检索实践》7.2.1 分类应用与检索/BM25检索模型
  3. php 时间倒计时代码 个人写法 有好的想法的欢迎贴出来分享
  4. JavaScipt30(第三个案例)(主要知识点:css变量)
  5. 并发基础(九) java线程的终止与中断
  6. boost::random_spanning_tree用法的测试程序
  7. 动态密码卡TOTP算法
  8. 大剑无锋之拦截器和过滤器的区别【面试推荐】
  9. golang package 是什么意思?一份来自初学者的golang package体验指南
  10. Reachability
  11. 票据图片复杂表格框识别(票据单元格切割)
  12. RHEL6_yum本地源配置
  13. mysql 的各种 join
  14. Spring MVC+Stomp+Security+H2 Jetty 1
  15. 三分钟解决Matlab中文乱码问题
  16. 电商ERP软件、订单管理系统、库存管理系统
  17. 【安全思维导图】————4、Git思维导图
  18. 电子工程师常用的单位转换
  19. 【渝粤教育】电大中专中成药 (2)作业 题库
  20. 【JAVASE】泛型基础

热门文章

  1. ij运行tomcat_如何把本地Web项目部署到云服务器上
  2. 分区界限必须调整为高于最后一个分区界限_不花一分钱,为SSD硬盘腾空间
  3. STM32学习之总线与时钟
  4. Linux学习之打印进程树
  5. colorpix取色小工具_五款互联网人必备的免费工具,超级实用
  6. layui表格checkbox选择全选样式及功能
  7. Qt文档阅读笔记-QThreadPool官方解析及实例
  8. Qt实践| HTTP知识点-接入某图片验证码系统识别验证码
  9. Python学习笔记-猜数字游戏(学习语法)
  10. Java高级语法笔记-文件读写(2)