MyBatis学习(一)-- 实现简单查询
文章目录
- 一、创建数据库与表
- 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学习(一)-- 实现简单查询相关推荐
- mybatis学习之路----模糊查询实现
点滴记载,点滴进步,愿自己更上一层楼. 废话不多说,进入主题. 项目还是在上篇 mybatis学习之路----非代理方式的增删改查用法 基础之上进行开发 一个简单的模糊查询sql. SELECT * ...
- Oracle学习之路——简单查询
本人大三单身狗,虽说还有一年毕业,可是到了大四再幡然醒悟,奋发图强,着实有点晚.为了尽可能将自己从"毕业即失业"的悲惨现状中拯救出来,开始学习吧!!!本博客是为了记录鄙人学习之路中 ...
- Mybatis学习笔记6 模糊查询like
1.模糊 like 模糊查询的实现有两种方式, 一是java代码中给查询数据加上"%"; 二是在mapper文件sql语句的条件位置加上"%". 需求:查询姓名 ...
- mybatis学习(48):列表信息查询
数据库 目录结构 映入jar包和junit单元测试 com.geyao.mybatis.mapper AuthorMapper类 package com.geyao.mybatis.mapper;im ...
- 数据库查询求小于_SQL学习笔记(二)简单查询
本篇主要学习如何通过简单查询获取想要的数据. 从零学会SQL:简单查询www.zhihu.com 基本的查询语句 从数据库中查找数据时要使用select子句,select子句是sql中使用最多.最基 ...
- sql 不等于空_SQL的简单查询
在上一节中我们们安装了mysql以及navicat,并掌握了如何创建库.创建表.修改表和插入.删除以及更新数据.这一节我们将继续学习SQL的简单查询语句. 一.基本的查询语句 1.select子句和f ...
- MyBatis学习--简单的增删改查
jdbc程序 在学习MyBatis的时候先简单了解下JDBC编程的方式,我们以一个简单的查询为例,使用JDBC编程,如下: 1 Public static void main(String[] arg ...
- mybatis学习笔记(12)-多对多查询
mybatis学习笔记12-多对多查询 示例 多对多查询总结 resultMap总结 本文实现多对多查询,查询用户及用户购买商品信息. 示例 查询主表是:用户表 关联表:由于用户和商品没有直接关联,通 ...
- MyBatis学习总结(13)——Mybatis查询之resultMap和resultType区别
MyBatis的每一个查询映射的返回类型都是ResultMap,只是当我们提供的返回类型属性是resultType的时候,MyBatis对自动的给我们把对应的值赋给resultType所指定对象的属性 ...
- MySQL学习-SQL语句的分类与MySQL简单查询
1.SQL语句的分类 学习MySQL主要还是学习通用的SQL语句,那么SQL语句包括增删改查,SQL语句怎么分类呢? DQL(数据查询语言): 查询语句,凡是select语句都是DQL. DM ...
最新文章
- Ie6/ie7 不支持 JSON
- The TensorFlow library wasn‘t compiled to use SSE instructions, but these are available on your mach
- redis在windows上的安装
- 让划动 listview时 没有黑色背景
- (最全干货分享)渗透测试全流程归纳总结之四
- mysql分析问卷_问卷调查相关表
- JAVA+MySQL综合笔记
- 修改Datagrip 2021.2.4 系统文件插件等目录的位置
- 渗透测试常用文件传输方法-Windows篇(如何向Windows服务器中上传文件?) (゚益゚メ) 渗透测试
- java前后端分离框架,SpringCloud开发微服务平台
- PostgreSql操作geometry
- 【STM32F429】第4章 ThreadX FileX文件系统移植到STM32F429(SD卡)
- 浮点数陷阱——小数计算时与主观感觉不相符的异常
- 奈奎斯特与香农定理等系列概念(易混淆)
- java生成自增编号数字
- CCIE其实什么都不是
- 九 Java_集合框架
- 苹果表主题图片爬取!
- 全球及中国对氟苯甲醛行业深度研究分析与发展规模预测报告2022-2028年
- 好用的天气预报软件:Living Earth Desktop for Mac
热门文章
- js格式化显示json对象
- C语言实现【小游戏——飞机大战】
- linux设置自动运行任务管理器,自己实现Linux系统任务管理器(附源码)
- kaggle数据集汇总_【技术分享】无人机视觉检测算法研究及数据集汇总
- matlab 判断大小写,【万大暗】matlab字符串不分字母大小写按字母表排序问题
- TypeError parentComponent.ctx.deactivate is not a function
- 《Python编程:从入门到实践》---项目2
- SD卡格式化|SD卡数据恢复技巧
- java 背单词系统_快速高效背单词系统方法论
- js中深克隆与浅克隆