初次使用Mybatis,先手写一个hello world级别的例子,即根据id查询商品分类详情。

一、建表

create table Category (
Id INT not null,
Name varchar(80) null,
constraint pk_category primary key (Id)
);

插入测试数据

INSERT INTO category VALUES (1,'Fish');
INSERT INTO category VALUES (2,'Dogs');
INSERT INTO category VALUES (3,'Birds');

二、新建测试项目

新建Maven项目,最终的项目结构如下:

修改pom.xml,引入mybatis相关依赖。

<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.1</version>
</dependency>
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!-- Mysql数据库链接jar包 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.21</version>
<scope>runtime</scope>
</dependency>
</dependencies>

三、建立pojo

建立Category对应的实体,这里为了方便测试重写了toString()方法。

public class Category implements Serializable {
private int id;
private String name; private static final long serialVersionUID = 1L; public int getId() {
return id;
}
public void setId(int id) {
this.id= id;
} public String getName() {
return name;
}
public void setName(String name) {
this.name = name == null ? null : name.trim();
} @Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append(getClass().getSimpleName());
sb.append(" [");
sb.append("Hash = ").append(hashCode());
sb.append(", id=").append(id);
sb.append(", name=").append(name);
sb.append("]");
return sb.toString();
}
}

四、定义数据访问接口

在src/main/cathy.mybatis/mapper包,新增CategoryMapper接口,这里只定义GetById方法。

public interface CategoryMapper {
public Category GetById(int id);
}

五、配置mybatis xml文件

1.mybatis的配置都基于XML文件,我们放在resources/config/mybatis-config.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="model.Category" alias="Category" />
</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/store" />
<property name="username" value="root" />
<property name="password" value="root" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="mapper/CategoryMapper.xml" />
</mappers>
</configuration>
  • typeAliases: 类型别名是为 Java 类型设置一个短的名字,用来减少类完全限定名的冗余。
  • dataSource:使用标准的 JDBC 数据源接口来配置 JDBC 连接对象的资源。
  • mappers:用来定义SQL映射语句

六、SqlSession工具类

构建SqlSession有多种方式,这里我们先从mybatis-config.xml配置文件构建SqlSessionFactory,然后从SqlSessionFactory获取SqlSession。

public static SqlSession getSqlSession() {
SqlSession session = null;
try {
InputStream stream = Resources.getResourceAsStream(CONFIG_PATH);
SqlSessionFactory factory = new SqlSessionFactoryBuilder()
.build(stream);

session = factory.openSession();
} catch (Exception e) {
e.printStackTrace();
}
return session;
}

七、调用:

public static void main(String[] args) {
SqlSession sqlSession=MybatisUtils.getSqlSession();
try{ CategoryMapper categoryMapper=sqlSession.getMapper(CategoryMapper.class);
Category category=categoryMapper.GetById(1);
if(category==null){
System.out.println("该分类不存在");
}
else{
System.out.println(category.toString());
}
}catch (Exception e){
System.out.println(e.getMessage());
}
finally {
MybatisUtils.closeSession(sqlSession);
}
}

运行结果:Category [Hash = 731395981, id=1, name=Fish]

源码地址:https://pan.baidu.com/s/1kUKXnMn

JAVA入门[6]-Mybatis简单示例的更多相关文章

  1. JAVA入门[19]-Hibernate简单示例

    一.Hibernate简介 在很多场景下,我们不需要使用JdbcTemplate直接操作SQL语句,这时候可以用ORM工具来节省数大量的的代码和开发时间.ORM工具能够把注意力从容易出错的SQL代码转 ...

  2. JAVA入门[9]-mybatis多表关联查询

    概要 本节要实现的是多表关联查询的简单demo.场景是根据id查询某商品分类信息,并展示该分类下的商品列表. 一.Mysql测试数据 新建表Category(商品分类)和Product(商品),并插入 ...

  3. Java调度框架Quartz简单示例

    Quartz的大名如雷贯耳,这里就不赘述,而且本文也不作为深入探讨,只是看完Quartz的官方文档后,下个简单示例,至少证明曾经花了点时间学习过,以备不时之需. Quartz使用了SLF4J,所以至少 ...

  4. JAVA入门[7]-Mybatis generator(MBG)自动生成mybatis代码

    一.新建测试项目 新建Maven项目MybatisDemo2,修改pom.xml引入依赖.dependencies在上节基础上新增 <dependency> <groupId> ...

  5. JAVA入门[18]-JdbcTemplate简单实例

    一.关于JdbcTemplate JdbcTemplate是最基本的Spring JDBC模板,这个模板支持简单的JDBC数据库访问功能以及基于索引参数的查询. Spring数据访问模板:在数据库操作 ...

  6. JAVA入门[10]-mybatis分页查询

    1.添加分页插件 在mybatis-generator-config.xml添加plugin节点: <plugin type="org.mybatis.generator.plugin ...

  7. Java入门:绘制简单图形

    在上一节,我们学习了如何使用swing和awt工具创建一个空的窗口,本节学习如何绘制简单图形. 基本绘图介绍 Java中绘制基本图形,可以使用Java类库中的Graphics类,此类位于java.aw ...

  8. mybatis简单示例

    1.引入mybatis.jar mysql-connector-java-5.1.47.jar <dependency> <groupId>org.mybatis</gr ...

  9. SpringMVC + MyBatis简单示例

    该项目基于Maven开发,该项目中包含了MyBatis自动创建表的功能,具体实现查阅MyBatis---自动创建表 源码下载 配置 maven支持pom.xml <project xmlns=& ...

随机推荐

  1. QT中槽的使用

    一.建立槽和按钮之间的连接 connect(信号发送者,发送的信号,信号接收者,信号接收者的槽函数) 1.例子 connect(ui->pushButton,SIGNAL(clicked(boo ...

  2. Java反射机制使用场景

    import java.io.*; import java.util.Properties; /*问题描述:存在一个主板--已经定义好,不想修改其代码,还想在主板上面增加一些其他功能? *问题解决方法 ...

  3. js滚动加载小插件

    本文实例讲述了jquery滚动加载数据的方法.分享给大家供大家参考.具体分析如下: 少废话直接上代码!!!粗暴,直接,干脆 0//lk-2017-05-04 1(function($, win) { ...

  4. Leetcode刷题

    Leetcode题库       本博客用于记录在LeetCode网站上一些题的解答方法.具体实现方法纯属个人的一些解答,这些解答可能不是好的解答方法,记录在此,督促自己多学习多练习.     The ...

  5. ZooKeeper全面介绍

    ZooKeeper简介 ZooKeeper是分布式服务框架,主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务.状态同步服务.集群管理.分布式应用配置项的管理等等.   ZooKe ...

  6. Android drawText 做到文字绝对居中

    我们在android中经常会遇到自定义一些组件,因为现有的android组件是往往不能满足当下的需求的,今天就给大家介绍一下在自定义组建过程中用到的drawText不居中的问题的解决方案 首先大家看一 ...

  7. Git版本控制管理教程(一):介绍

    我的个人博客地址:damienzhong.com 原文链接:点击打开链接 1.1 背景 数据是短暂的,且容易丢失的,特别是作为开发人员的我们每天频繁的对项目代码进行更新,容易产生错误代码的变更或者项目 ...

  8. H5+JS+JQuery+ECharts实现异步加载

    这几天,看了一下ECharts官网的API和Demo发现很有意思,于是就利用模型预测产生的数据做一个伪实时的动态数据显示 . 首先,创建一个index.html的文件,我用的vscode打开的,进行编 ...

  9. SaltStack 部署案例 02

    远程执行 salt '*' state.sls apache '*':代表所有主机 state.sls :是一个模块 apache : 状态 ,表示需要部署的内容,后缀.sls YAML:三板斧 1. ...

  10. Numpy入门 - 数组切片操作

    本节主要演示数组的切片操作,数组的切片操作有两种形式:更改原数组的切片操作和不更改原数组的切片操作. 一.更改原数组的切片操作 import numpy as np arr = np.array([1 ...