MyBatis 学习记录

MyBatis 特性

  1. MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架

  2. MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集

  3. MyBatis 可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录

  4. MyBatis 是一个 半自动的ORM(Object Relation Mapping)框架

搭建MyBatis

配置Maven

新建Maven工程

引入依赖

<dependencies><!-- Mybatis核心 --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.7</version></dependency><!-- junit测试 --><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency><!-- MySQL驱动 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.17</version></dependency>
</dependencies>

新建t_user表

创建User类

package com.atguigu.mybatis.pojo;/*** @author Zhang Jun* @date 2022/7/21 10:17*/
public class User {private Integer id;private String userName;private String password;private Integer age;private String sex;private String email;public User() {}public User(Integer id, String userName, String password, Integer age, String sex, String email) {this.id = id;this.userName = userName;this.password = password;this.age = age;this.sex = sex;this.email = email;}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}@Overridepublic String toString() {return "User{" +"id=" + id +", userName='" + userName + '\'' +", password='" + password + '\'' +", age=" + age +", sex='" + sex + '\'' +", email='" + email + '\'' +'}';}
}

创建MyBatis的核心配置文件

核心配置文件主要用于配置连接数据库的环境以及MyBatis的全局配置信息

核心配置文件存放的位置是src/main/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><!--设置连接数据库的环境--><environments default="development"><environment id="development"><transactionManager type="JDBC"/><dataSource type="POOLED"><!--填写自己的数据信息--><property name="driver" value="xxx"/><property name="url" value="xxx"/><property name="username" value="xxx"/><property name="password" value="xxx"/></dataSource></environment></environments><!--引入映射文件--><mappers><mapper resource="mapper/UserMapper.xml"/></mappers>
</configuration>

创建Mapper接口

UserMapper.java

package com.atguigu.mybatis.mapper;/*** @author Zhang Jun* @date 2022/7/21 10:23*/
public interface UserMapper {/*** 添加用户信息* @return 执行sql语句受影响的行数*/Integer insertUser();
}

创建MyBatis的映射文件

Java概念 数据库概念
属性 字段/列
对象 记录/行

映射文件的命名规则:表所对应的实体类的类名+Mapper.xml

  • mapper接口的全类名和映射文件的命名空间(namespace)保持一致
  • mapper接口中方法的方法名和映射文件中编写SQL的标签的id属性保持一致

UserMapper.xml

<?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="com.atguigu.mybatis.mapper.UserMapper"><!--Integer insertUser();--><insert id="insertUser">insert into t_user values(null, 'admin', '123456', 23, '男', '123456@qq.com');</insert>
</mapper>

测试添加功能

测试代码

MyBatisTest.java

package com.atguigu.mybatis.test;import com.atguigu.mybatis.mapper.UserMapper;
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.Test;import java.io.IOException;
import java.io.InputStream;/*** @author Zhang Jun* @date 2022/7/21 10:35*/
public class MyBatisTest {@Testpublic void testMyBatis() throws IOException {//读取MyBatis的核心配置文件InputStream is = Resources.getResourceAsStream("mybatis-config.xml");//获取SqlSessionFactoryBuilder对象SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();//通过核心配置文件所对应的字节输入流创建工厂类SqlSessionFactory,生产SqlSession对象SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(is);//获取sqlSession,此时通过SqlSession对象所操作的sql都必须手动提交或回滚事务//SqlSession sqlSession = sqlSessionFactory.openSession();//创建SqlSession对象,此时通过SqlSession对象所操作的sql都会自动提交SqlSession sqlSession = sqlSessionFactory.openSession(true);//通过代理模式创建UserMapper接口的代理实现类对象UserMapper userMapper = sqlSession.getMapper(UserMapper.class);//调用UserMapper接口中的方法,就可以根据UserMapper的全类名匹配元素文件,通过调用的方法名匹配映射文件中的SQL标签,并执行标签中的SQL语句int result = userMapper.insertUser();//提交事务sqlSession.commit();System.out.println("result:" + result);}
}

结果

受影响条数为1

数据库中新增一条信息

多插入一些测试数据

测试修改功能

新增代码

UserMapper.java 新增修改方法

    /*** 修改用户信息* @return 执行sql语句受影响的行数*/Integer updateUser();

UserMapper.xml 新增update标签

 <!--  Integer updateUser();  --><update id="updateUser">update t_user set username = '李田所' where id = 1;</update>

MyBatisTest.java 新增测试代码

 @Testpublic void testUpdate(){SqlSession sqlSession = SqlSessionUtils.getSqlSession();UserMapper mapper = sqlSession.getMapper(UserMapper.class);Integer res = mapper.updateUser();System.out.println("res = " + res);}

结果

受影响条数为1

把id为1的用户姓名改为 李田所

测试删除功能

新增代码

UserMapper.java 新增修改方法

 /*** 删除用户信息* @return 执行sql语句受影响的行数*/Integer deleteUser();

UserMapper.xml 新增delete标签

     <!--  Integer deleteUser();  --><delete id="deleteUser">delete from t_user where id = 3;</delete>

MyBatisTest.java 新增测试代码

 @Testpublic void testDelete(){SqlSession sqlSession = SqlSessionUtils.getSqlSession();UserMapper mapper = sqlSession.getMapper(UserMapper.class);Integer res = mapper.deleteUser();System.out.println("res = " + res);}

结果

受影响条数为1

把id为3的记录删除

测试根据id查询用户功能

新增代码

UserMapper.java 新增修改方法

 /*** 根据id查询用户信息* @return*/User getUserById();

UserMapper.xml 新增select标签

 <!--  User getUserById();  --><select id="getUserById" resultType="com.atguigu.mybatis.pojo.User">select * from t_user where id = 1;</select>

MyBatisTest.java 新增测试代码

 @Testpublic void testSelectById(){SqlSession sqlSession = SqlSessionUtils.getSqlSession();UserMapper mapper = sqlSession.getMapper(UserMapper.class);User user = mapper.getUserById();System.out.println("user = " + user);}

结果

查询id为1的用户信息

测试查询所有用户功能

新增代码

UserMapper.java 新增修改方法

 /*** 查询所有用户信息* @return*/List<User> getAllUser();

UserMapper.xml 新增select标签

 <!--  List<User> getAllUser();  --><select id="getAllUser" resultType="com.atguigu.mybatis.pojo.User">select * from t_user;</select>

MyBatisTest.java 新增测试代码

 @Testpublic void testSelectAll(){SqlSession sqlSession = SqlSessionUtils.getSqlSession();UserMapper mapper = sqlSession.getMapper(UserMapper.class);List<User> allUser = mapper.getAllUser();allUser.forEach(System.out::println);}

结果

查询所有用户信息

MyBatis 增删改查相关推荐

  1. Mybatis——增删改查(CRUD)操作

    java学习--Mybatis CRUD操作 mybatis是一个可以自定义SQL.存储过程和高级映射的持久层框架.上面这个定义是在百度上抄的,简单来说,Mybatis简化了我们对数据库的一系列操作, ...

  2. SSM框架——Mybatis增删改查

    目录 目录 环境配置 增删改查的实现 查询全部 查询单个ID 添加用户 修改用户 删除用户 增删改查-使用注解开发 思路流程:搭建环境-->导入Mybatis--->编写代码---> ...

  3. Mybatis增删改查

    增删改查基本上就是一个操作,一模一样的,首先是UserMpper接口: package com.ftz.Demo.dao;import com.ftz.Demo.po.User;import java ...

  4. Mybatis 详细的创建流程及创建第一个Mybatis增删改查程序 CRUD

    1.idea新建Maven项目Mybatis-study 将项目里的src文件夹删掉 依次将此项目作为父项目 2.在Mybatis-study中新建模块mybatis-01         在myba ...

  5. Mybatis——增删改查CLUD

    一.CRUD 1.namespace namespace中的包名和 Dao/Mapper 接口中的包名一致 2.select 选择查询语句: id:就是对应的namespace中的方法名: resul ...

  6. springboot整合mybatis增删改查(三):mybatis逆向工程

    上一篇已经把项目基本框架完善,接下来就是利用Mybatis Generator逆向工程进行mybatis的整合. 我们在创建项目开始的时候已经勾选web,mybatis,sql等,但是这些依赖还是不够 ...

  7. mybatis增删改查快速实现!!!

    Mybatis 简介 ** 1.什么是Mybatis ** MyBatis是一款优秀的基于java的持久层框架,它内部 封装了jdbc,使开发者只需要关注sql语句本身. 参考文档 :https:// ...

  8. java 基础做增删改查教学_Java Mybatis 增删改查 简单使用 入门 简版

    一些基础问题的解决 数据库对应的表 初始数据 项目结构 pom.xml xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ...

  9. mybatis 增删改查、批量插入和删除以及自动生成uuid主键和分页

    Mapper接口: public int update(Admin admin); public Admin selectByUserName(String account); public List ...

最新文章

  1. 写入位置 0x00000004 时发生访问冲突_HDFS读取和写入数据简介
  2. [Angular Tutorial] 11 -Custom Filters
  3. 软件业的作业示意流程图
  4. 树状数组 + 位运算 LA 4013 A Sequence of Numbers
  5. linux内核配置usb虚拟串口,Linux USB虚拟串口设备
  6. 七步从Angular.JS菜鸟到专家(1):如何开始
  7. 【写作技巧】毕业论文写作资料--刊物搜索
  8. H5 File 对象获取 Input type=file 文件详细信息
  9. 用protues作RC桥式振荡电路仿真,无法形成正弦波,求解惑
  10. Hi3559A Hi3519A Hi3556A算力对比
  11. (纪中)2173. 无根树(tree)【SPFA】
  12. python27.dll引起的appcrash_Python已经停止工作(APPCRASH)Python
  13. ORAN专题系列-29:运营商O-RAN扩展皮站测试的硬件架构
  14. 2017暴雪php,动视暴雪2017Q4财报 开启全新里程碑
  15. 关于KOT、KOL、KOC 理解
  16. 像计算机科学家一样思考在线,如何像计算机科学家一样思考?(女生篇)
  17. 大数据集群搭建(jdk、hadoop、hive、mysql、spark、flume、zookeeper)
  18. 敢为人先,华为不惧C语言开发仓颉汉语编程,中文编程迎来新生态
  19. 用AntlR4实现简单的汇编编译器
  20. linux var mqm权限,Linux MQ中间件/var/mqm文件系统结构与错误日志分析

热门文章

  1. USB工业摄像头模块选择
  2. TRIZ创新方法——功能分析
  3. ExpRe[9] Chrome[0] 插件商店,markdown博客同步相关
  4. Python神经网络手写数字识别代码解释
  5. 五金工具液压机系统比例阀放大器
  6. POI设置word表格的行在各页顶端以标题形式重复出现
  7. 打造全新娱乐方式,云听车机版开启智能时代智慧出行
  8. 关于计算机组成原理中各个时间/周期的总结
  9. 点击化学试剂一种环炔烃DBCO-PEG-N3及同系列产品
  10. matlab基础笔记(一)matlab中求和函数sum