最近打算学习ssm框架  Mybatis 作为入门的第一个持久层框架,学习起来实在费劲。故写此文章作为入门案例。

先打开 IDEA建立一个Maven项目,目录结构如下:

源代码已经上传至GitHub   https://github.com/Wo-com/mybatis_demo,需要的点击下载

接下来说几个要点吧:

1、用mysql创建test数据库,添加一张user表,字段如下:

2、编辑  pom.xml  文件导入 jar包

<?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>com.cnetopro</groupId>
<artifactId>mybatis_mysql</artifactId>
<version>1.0</version>
<packaging>jar</packaging> <dependencies>
<!-- 使用mybatis 导入前两个就行了-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.2</version>
</dependency> <dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.17</version>
</dependency> <!--单元测试-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency> </dependencies> </project>

3、创建  User实体类 和 IUserDao接口

User实体类对于的是数据库的字段,然后添加Setter和Getter方法和toString方法

package com.cnetopro.domain;

import java.io.Serializable;

public class User implements Serializable {

    private Integer id;
private String name;
private Integer age; 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 Integer getAge() {
return age;
} public void setAge(Integer age) {
this.age = age;
} @Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
'}';
} }

IUserDao接口里面有一个查询查询方法

package com.cnetopro.dao;

import com.cnetopro.domain.User;

import java.util.List;
/**
*
* 用户持久层接口
*
* */
public interface IUserDao {
/**
* 查询所有
* */
List<User>findAll();
}

4、创建 IUserMapper.xml  里面写sql语句

<?xml version="1.0" encoding="UTF-8" ?>

<!-- mapper 约束-->
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--namespace 写的是 dao权限类名-->
<mapper namespace="com.cnetopro.dao.IUserDao">
<!--配置查询所有-->
<select id="findAll" resultType="com.cnetopro.domain.User">
select * from user
</select> </mapper>

5、创建 SqlMapConfig.xml  配置数据库驱动,映射Mapper文件

<?xml version="1.0" encoding="UTF-8" ?>

<!-- configuration 约束-->
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd"> <!--mybatis的主配置文件-->
<configuration>
<!-- 配置环境 -->
<environments default="mysql">
<!--配置mysql环境-->
<environment id="mysql">
<!-- 配置事务类型 -->
<transactionManager type="JDBC"></transactionManager>
<!-- 配置数据源(连接池) -->
<dataSource type="POOLED">
<!-- 配置连接数据库的基本信息 -->
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/test"/>
<property name="username" value="root"/>
<property name="password" value="zgx1734475W"/>
</dataSource>
</environment>
</environments> <!--指定映射配置文件的位置,映射配置文件指的是每个dao配置的文件-->
<mappers>
<!-- 使用的是xml-->
<mapper resource="com/cnetopro/dao/IUserMapper.xml"/>
<!-- <mapper class="com.cnetopro.dao.IUserMapper"/> &lt;!&ndash;使用的是注解 annotations&ndash;&gt;-->
</mappers> </configuration>

6、创建测试类 MybatisTest.java

package com.cnetopro.test;

import com.cnetopro.dao.IUserDao;
import com.cnetopro.domain.User;
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.InputStream;
import java.util.List; /**
*
*/
public class MybatisTest { public static void main(String[] args) throws Exception {
//1.读取配置文件
InputStream inputStream = Resources.getResourceAsStream("SqlMapConfig.xml");
//2.创建SqlSessionFactory工厂
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
SqlSessionFactory factory = builder.build(inputStream);
//3.使用工厂创建SqlSession
SqlSession session =factory.openSession();
//4.使用SqlSession创建dao接口的代理对象
IUserDao userDao =session.getMapper(IUserDao.class);
//5.使用代理对象的方法
List<User> users = userDao.findAll();
for (User user:users
) {
System.out.println(user);
}
//6.释放资源
session.close();
inputStream.close();
}
}

运行测试类效果如下:

intellij IDEA Mybatis入门案例的更多相关文章

  1. MyBatis入门案例、增删改查

    一.MyBatis入门案例: ①:引入jar包 ②:创建实体类 Dept,并进行封装 ③ 在Src下创建大配置mybatis-config.xml <?xml version="1.0 ...

  2. MyBatis入门案例 增删改查

    一.MyBatis入门案例: ①:引入jar包 ②:创建实体类 Dept,并进行封装 ③ 在Src下创建大配置mybatis-config.xml <?xml version="1.0 ...

  3. Mybatis入门案例中设计模式的简单分析

    Talk is cheap, show me the code! public class TestMybatis { public static void main(String[] args) t ...

  4. mybatis入门案例自定义实现

    mybatis入门案例自定义实现 一.需要实现的类和接口 public static void main(String[] args) throws Exception{ //1.读取配置文件 Inp ...

  5. mybatis入门案例分析

    mybatis入门案例分析 一.设计模式分析 public class MybatisTest { public static void main(String[] args) throws Exce ...

  6. 03 Mybatis:01.Mybatis课程介绍及环境搭建&&02.Mybatis入门案例

    mybatis框架共四天第一天:mybatis入门 mybatis的概述 mybatis的环境搭建 mybatis入门案例 -------------------------------------- ...

  7. 一、mybatis入门案例

    今天学习了mybatis框架,简单记录一下mybatis第一个入门案例,目标是使用Mybatis作为持久层框架,执行查询数据的SQL语句并且获取结果集 基本步骤: 物理建模 逻辑建模 引入依赖 创建持 ...

  8. MyBatis入门案例

    1.案例架构 2.引入jar 包 3.书写配置文件mybatis-config.xml <?xml version="1.0" encoding="UTF-8&qu ...

  9. 阶段3 1.Mybatis_02.Mybatis入门案例_1.mybatis的入门

    H:\BaiDu\黑马传智JavaEE57期 2019最新基础+就业+在职加薪\讲义+笔记+资料\主流框架\31.会员版(2.0)-就业课(2.0)-Mybatis\mybatis\mybatis_d ...

随机推荐

  1. 12_Sensor简单实例

    列出Android手机所支持的Sensor. package com.example.sensorlist; import java.util.List; import android.app.Act ...

  2. PADS生成贴片文件

    PADS生成贴片文件 VIEW-BOTTOM VIEW能够使Bottom层正常显示. 1. pastmask_top->Output Devices->Device Setup- 2. 进 ...

  3. 什么,kafka能够从follower副本读数据了 —kafka新功能介绍

    最近看了kafka2.4新版本的一些功能特性,不得不说,在kafka2.0以后,kafka自身就比较少推出一些新的feature了,基本都是一些修修补补的东西.倒是kafka connect和kafk ...

  4. 少标签数据学习:宾夕法尼亚大学Learning with Few Labeled Data

    目录 Few-shot image classification Three regimes of image classification Problem formulation A flavor ...

  5. 从零开始的ssti学习(已填)

    前前言: 本文只是接这个机会来梳理一下ssti的知识点.先说一下,本文目前的重点是Flask的ssti,但是之后会填其他框架的坑.(就不该叫ssti学习,ssti太广了) 涉及知识点: 模板注入 前言 ...

  6. 重庆聚焦区块链应用,Panda Global觉得春天真的来了!

    近日,由2020中国智博会组委会主办.重庆市大数据应用发展管理局与渝中区人民政府联合承办.重庆市区块链应用创新产业联盟和四川省区块链行业协会联合执行的"2020线上智博会区块链应用创新大赛& ...

  7. 记一起由 Clang 编译器优化触发的 Crash

    摘要:一个有意思的 Crash 探究过程,Clang 有 GCC 没有 本文首发于 Nebula Graph 官方博客:https://nebula-graph.com.cn/posts/troubl ...

  8. rsync 参数说明及使用参数笔记

    第1章 rsync 命令简介 rsync 是一款开源的.快速的.多功能的.可实现全量及增量的本地或远程数据镜像同步备份的优秀工具. 1.1.1 语法格式 三种模式: 1)本地模式 rsync [选项] ...

  9. C语言服务器编程必备常识

    入门 包含了正确的头文件只能编译通过,没链接正确的库链接会报错. 一些常用的库gcc会自动链接. 库的缺省路径/lib /usr/lib /usr/local/lib 不知道某个函数在那个库可以nm ...

  10. 【JAVA基础】静态方法

    /* * 与Python的静态单例比较: * 一样是需要加上static方法才可以直接调用类里面的私有方法 * * Python的类方法上 加上装饰器@staticmethod就可以不用实例化类而直接 ...