文章目录

  • 一、创建数据库与表
    • 1.创建新的Mysql数据库testdb
    • 2.创建用户表t_user
    • 3.向表中插入记录
  • 二、MyBatis基本使用
    • 1.创建maven项目
    • 2. 在pom文件中添加依赖
    • 3.创建与用户表对应的用户实体类 - User
    • 4.创建用户实体关系映射配置文件
    • 5.创建MyBatis配置文件
    • 6.创建日志属性文件
    • 7.创建测试类测试用户操作
      • (1)创建测试类 - TestUserOperation
      • (2)运行测试方法 - testFindById()
      • (3)运行测试方法 - testFindAll()
  • 三.采用接口方式使用MyBatis
    • 1.创建用户映射器接口
    • 2.创建测试类测试用户映射器接口
      • (1)创建测试类 - TestUserMapper
      • (2)运行测试方法
  • 四、不使用MyBatis配置文件获取SQL会话对象
    • 1.新建文件UserDataSourceFactory
    • 2.修改测试类TestUserMapperNew
    • 3.修改用户映射器接口UserMapper

一、创建数据库与表

1.创建新的Mysql数据库testdb

2.创建用户表t_user

CREATE TABLE `t_user` (`id` int(11) NOT NULL AUTO_INCREMENT,`name` varchar(50) DEFAULT NULL,`age` int(11) DEFAULT NULL,`address` varchar(255) DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;

执行SQL语句进行用户表的创建

查看表结构

3.向表中插入记录

具体使用的SQL语句

INSERT INTO `t_user` VALUES ('1', '李洪刚', '20', '江阳区嘉裕花园3栋四楼15#');
INSERT INTO `t_user` VALUES ('2', '王云华', '30', '纳溪区大渡镇红鱼村三大队');
INSERT INTO `t_user` VALUES ('3', '郑小翠', '21', '江阳区老窖花园2栋五楼15号');

运行SQL语句

结果显示

二、MyBatis基本使用

1.创建maven项目


2. 在pom文件中添加依赖

<?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.0http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>net.hw.mybatis</groupId><artifactId>MyBatisDemo</artifactId><version>1.0-SNAPSHOT</version><dependencies><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.6</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.40</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13.2</version></dependency><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version></dependency></dependencies></project>

在我们进行添加依赖后,我们发现有些地方会出现报红的现象,接下来就可以解决这些报红的问题。


点击上述两个步骤,就可以得到一下结果

可进行本地jar包的查看
首先可以进行位置的查看,在Intellij IDEA中首先找到File–>Settings–>Build,Execution,Deployment–>Build Tools–>Maven


3.创建与用户表对应的用户实体类 - User

package net.nell.mybatis.bean;public class User {private int id;private String name;private int age;private String address;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;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}@Overridepublic String toString() {return "User{" +"id=" + id +", name='" + name + '\'' +", age=" + age +", address='" + address + '\'' +'}';}}

4.创建用户实体关系映射配置文件


相关代码:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="net.nell.mybatis.mapper.UserMapper"><select id="findById" parameterType="int" resultType="User">SELECT * FROM t_user WHERE id = #{id};</select><select id="findAll" resultType="User">SELECT * FROM t_user;</select>
</mapper>

5.创建MyBatis配置文件

在resources目录里创建mybatis-config.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration><!--配置实体类别名--><typeAliases><typeAlias type="net.nell.mybatis.bean.User" alias="User"/></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/testdb?useSSL=false"/><property name="username" value="root"/><property name="password" value="p@ssw0rd"/></dataSource></environment></environments><!--配置实体关系映射器文件--><mappers><mapper resource="mapper/UserMapper.xml"/></mappers>
</configuration>

6.创建日志属性文件

在resources目录里创建log4j.properties文件

相关代码:

7.创建测试类测试用户操作

(1)创建测试类 - TestUserOperation

package net.nell.mybatis.bean;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 org.junit.After;
import org.junit.Before;
import org.junit.Test;import java.io.IOException;
import java.io.Reader;
import java.util.List;public class TestUserOperation {private SqlSession sqlSession; // SQL会话@Beforepublic void init() {try {// 读取MyBatis配置文件Reader reader = Resources.getResourceAsReader("mybatis-config.xml");// 基于MyBatis配置文件构建SQL会话工厂SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader);// 利用SQL会话工厂获取SQL会话sqlSession = factory.openSession();// 提示用户SQL会话创建成功System.out.println("sqlSession对象已创建。");} catch (IOException e) {e.printStackTrace();}}@Testpublic void testFindById() {int id = 1;User user = sqlSession.selectOne("net.nell.mybatis.mapper.UserMapper.findById", id);if (user != null) {System.out.println(user);} else {System.out.println("编号为[" + id + "]的用户未找到。");}}@Testpublic void testFindAll() {List<User> users = sqlSession.selectList("net.nell.mybatis.mapper.UserMapper.findAll");users.forEach(user -> System.out.println(user));}@Afterpublic void destroy() {// 关闭SQL会话sqlSession.close();// 提示用户SQL会话对象关闭System.out.println("sqlSession对象已关闭。");}
}

(2)运行测试方法 - testFindById()

运行结果:

修改testFindById()代码,再运行查看结果:

运行结果:

(3)运行测试方法 - testFindAll()

三.采用接口方式使用MyBatis

1.创建用户映射器接口

创建net.hw.mybatis.mapper包,然后在包里创建用户映射器接口 - UserMapper

2.创建测试类测试用户映射器接口

(1)创建测试类 - TestUserMapper

在test/java里创建net.hw.mybatis.mapper包,然后在包里创建测试类 - TestUserMapper

package net.nell.mybatis.mapper;import net.nell.mybatis.bean.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 org.junit.After;
import org.junit.Before;
import org.junit.Test;import java.io.IOException;
import java.io.Reader;
import java.util.List;public class TestUserMapper {private SqlSession sqlSession; // SQL会话private UserMapper userMapper; // 用户映射器@Beforepublic void init() {try {// 读取MyBatis配置文件作为字符输入流Reader reader = Resources.getResourceAsReader("mybatis-config.xml");// 基于MyBatis配置文件构建SQL会话工厂SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader);// 利用SQL会话工厂获取SQL会话sqlSession = factory.openSession();// 利用SQL会话获取用户映射器对象userMapper = sqlSession.getMapper(UserMapper.class);// 提示用户SQL会话对象创建成功System.out.println("sqlSession对象已创建。");} catch (IOException e) {e.printStackTrace();}}@Testpublic void testFindById() {int id = 1;User user = userMapper.findById(id);if (user != null) {System.out.println(user);} else {System.out.println("编号为[" + id + "]的用户未找到。");}}@Testpublic void testFindAll() {List<User> users = userMapper.findAll();users.forEach(user -> System.out.println(user));}@Afterpublic void destroy() {// 关闭SQL会话sqlSession.close();// 提示用户SQL会话对象关闭System.out.println("sqlSession对象已关闭。");}
}

(2)运行测试方法

运行testFindById()

运行testFindAll()

四、不使用MyBatis配置文件获取SQL会话对象

我们根据查看官网的信息,获得了获取SQL会话对象的第二种方式。

1.新建文件UserDataSourceFactory


相关代码:

package net.nell.mybatis.datasource;import org.apache.ibatis.datasource.pooled.PooledDataSource;import javax.sql.DataSource;/***功能:用户数据源工厂**/public class UserDataSourceFactory {public static DataSource getUserDataSource(){return new PooledDataSource("com.mysql.jdbc.Driver","jdbc:mysql://localhost:3306/testdb?useSSL=false","root","root");}
}

2.修改测试类TestUserMapperNew



相关代码

package net.nell.mybatis.mapper;import net.nell.mybatis.bean.User;
import net.nell.mybatis.datasource.UserDataSourceFactory;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.mapping.Environment;
import org.apache.ibatis.session.Configuration;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.apache.ibatis.transaction.TransactionFactory;
import org.apache.ibatis.transaction.jdbc.JdbcTransactionFactory;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;import javax.sql.DataSource;
import java.io.IOException;
import java.io.Reader;
import java.util.List;public class TestUserMapperNew {private SqlSession sqlSession; // SQL会话private UserMapper userMapper; // 用户映射器@Beforepublic void init() {//创建数据源DataSource dataSource= UserDataSourceFactory.getUserDataSource();//创建事务工厂TransactionFactory transactionFactory=new JdbcTransactionFactory();//创建数据库环境Environment environment = new Environment("development",transactionFactory,dataSource);// 基于环境配置文件创建配置对象Configuration configuration = new Configuration(environment);//添加用户映射器接口configuration.addMapper(UserMapper.class);//基于配置对象构建SQL会话工厂SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(configuration);// 利用SQL会话工厂获取SQL会话sqlSession = factory.openSession();// 利用SQL会话获取用户映射器对象userMapper = sqlSession.getMapper(UserMapper.class);// 提示用户SQL会话对象创建成功System.out.println("sqlSession对象已创建。");}@Testpublic void testFindById() {int id = 1;User user = userMapper.findById(id);if (user != null) {System.out.println(user);} else {System.out.println("编号为[" + id + "]的用户未找到。");}}@Testpublic void testFindAll() {List<User> users = userMapper.findAll();users.forEach(user -> System.out.println(user));System.out.println();for (int i = 0;i < users.size();i++){System.out.println(users.get(i));}System.out.println();for (User user : users){System.out.println(user);}}@Afterpublic void destroy() {// 关闭SQL会话sqlSession.close();// 提示用户SQL会话对象关闭System.out.println("sqlSession对象已关闭。");}
}

此时,如果我们运行测试方法会报错,原因是用户映射器接口里的抽象方法findById()没有绑定有效的SQL语句,需要修改用户映射器接口的抽象方法,添加注解,绑定SQL语句。

3.修改用户映射器接口UserMapper



相关代码

package net.nell.mybatis.mapper;import net.nell.mybatis.bean.User;
import org.apache.ibatis.annotations.Select;import java.util.List;public interface UserMapper {@Select("SELECT * FROM t_user WHERE id = #{id}")User findById(int id);@Select("SELECT * FROM t_user")List<User> findAll();}

运行测试方法:

MyBatis学习(一)-- 实现简单查询相关推荐

  1. mybatis学习之路----模糊查询实现

    点滴记载,点滴进步,愿自己更上一层楼. 废话不多说,进入主题. 项目还是在上篇  mybatis学习之路----非代理方式的增删改查用法 基础之上进行开发 一个简单的模糊查询sql. SELECT * ...

  2. Oracle学习之路——简单查询

    本人大三单身狗,虽说还有一年毕业,可是到了大四再幡然醒悟,奋发图强,着实有点晚.为了尽可能将自己从"毕业即失业"的悲惨现状中拯救出来,开始学习吧!!!本博客是为了记录鄙人学习之路中 ...

  3. Mybatis学习笔记6 模糊查询like

    1.模糊 like 模糊查询的实现有两种方式, 一是java代码中给查询数据加上"%"; 二是在mapper文件sql语句的条件位置加上"%". 需求:查询姓名 ...

  4. mybatis学习(48):列表信息查询

    数据库 目录结构 映入jar包和junit单元测试 com.geyao.mybatis.mapper AuthorMapper类 package com.geyao.mybatis.mapper;im ...

  5. 数据库查询求小于_SQL学习笔记(二)简单查询

    本篇主要学习如何通过简单查询获取想要的数据. 从零学会SQL:简单查询​www.zhihu.com 基本的查询语句 从数据库中查找数据时要使用select子句,select子句是sql中使用最多.最基 ...

  6. sql 不等于空_SQL的简单查询

    在上一节中我们们安装了mysql以及navicat,并掌握了如何创建库.创建表.修改表和插入.删除以及更新数据.这一节我们将继续学习SQL的简单查询语句. 一.基本的查询语句 1.select子句和f ...

  7. MyBatis学习--简单的增删改查

    jdbc程序 在学习MyBatis的时候先简单了解下JDBC编程的方式,我们以一个简单的查询为例,使用JDBC编程,如下: 1 Public static void main(String[] arg ...

  8. mybatis学习笔记(12)-多对多查询

    mybatis学习笔记12-多对多查询 示例 多对多查询总结 resultMap总结 本文实现多对多查询,查询用户及用户购买商品信息. 示例 查询主表是:用户表 关联表:由于用户和商品没有直接关联,通 ...

  9. MyBatis学习总结(13)——Mybatis查询之resultMap和resultType区别

    MyBatis的每一个查询映射的返回类型都是ResultMap,只是当我们提供的返回类型属性是resultType的时候,MyBatis对自动的给我们把对应的值赋给resultType所指定对象的属性 ...

  10. MySQL学习-SQL语句的分类与MySQL简单查询

    1.SQL语句的分类 学习MySQL主要还是学习通用的SQL语句,那么SQL语句包括增删改查,SQL语句怎么分类呢?   DQL(数据查询语言): 查询语句,凡是select语句都是DQL.   DM ...

最新文章

  1. Ie6/ie7 不支持 JSON
  2. The TensorFlow library wasn‘t compiled to use SSE instructions, but these are available on your mach
  3. redis在windows上的安装
  4. 让划动 listview时 没有黑色背景
  5. (最全干货分享)渗透测试全流程归纳总结之四
  6. mysql分析问卷_问卷调查相关表
  7. JAVA+MySQL综合笔记
  8. 修改Datagrip 2021.2.4 系统文件插件等目录的位置
  9. 渗透测试常用文件传输方法-Windows篇(如何向Windows服务器中上传文件?) (゚益゚メ) 渗透测试
  10. java前后端分离框架,SpringCloud开发微服务平台
  11. PostgreSql操作geometry
  12. 【STM32F429】第4章 ThreadX FileX文件系统移植到STM32F429(SD卡)
  13. 浮点数陷阱——小数计算时与主观感觉不相符的异常
  14. 奈奎斯特与香农定理等系列概念(易混淆)
  15. java生成自增编号数字
  16. CCIE其实什么都不是
  17. 九 Java_集合框架
  18. 苹果表主题图片爬取!
  19. 全球及中国对氟苯甲醛行业深度研究分析与发展规模预测报告2022-2028年
  20. 好用的天气预报软件:Living Earth Desktop for Mac

热门文章

  1. js格式化显示json对象
  2. C语言实现【小游戏——飞机大战】
  3. linux设置自动运行任务管理器,自己实现Linux系统任务管理器(附源码)
  4. kaggle数据集汇总_【技术分享】无人机视觉检测算法研究及数据集汇总
  5. matlab 判断大小写,【万大暗】matlab字符串不分字母大小写按字母表排序问题
  6. TypeError parentComponent.ctx.deactivate is not a function
  7. 《Python编程:从入门到实践》---项目2
  8. SD卡格式化|SD卡数据恢复技巧
  9. java 背单词系统_快速高效背单词系统方法论
  10. js中深克隆与浅克隆