MyBatis 增删改查
MyBatis 学习记录
MyBatis 特性
MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架
MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集
MyBatis 可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录
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 增删改查相关推荐
- Mybatis——增删改查(CRUD)操作
java学习--Mybatis CRUD操作 mybatis是一个可以自定义SQL.存储过程和高级映射的持久层框架.上面这个定义是在百度上抄的,简单来说,Mybatis简化了我们对数据库的一系列操作, ...
- SSM框架——Mybatis增删改查
目录 目录 环境配置 增删改查的实现 查询全部 查询单个ID 添加用户 修改用户 删除用户 增删改查-使用注解开发 思路流程:搭建环境-->导入Mybatis--->编写代码---> ...
- Mybatis增删改查
增删改查基本上就是一个操作,一模一样的,首先是UserMpper接口: package com.ftz.Demo.dao;import com.ftz.Demo.po.User;import java ...
- Mybatis 详细的创建流程及创建第一个Mybatis增删改查程序 CRUD
1.idea新建Maven项目Mybatis-study 将项目里的src文件夹删掉 依次将此项目作为父项目 2.在Mybatis-study中新建模块mybatis-01 在myba ...
- Mybatis——增删改查CLUD
一.CRUD 1.namespace namespace中的包名和 Dao/Mapper 接口中的包名一致 2.select 选择查询语句: id:就是对应的namespace中的方法名: resul ...
- springboot整合mybatis增删改查(三):mybatis逆向工程
上一篇已经把项目基本框架完善,接下来就是利用Mybatis Generator逆向工程进行mybatis的整合. 我们在创建项目开始的时候已经勾选web,mybatis,sql等,但是这些依赖还是不够 ...
- mybatis增删改查快速实现!!!
Mybatis 简介 ** 1.什么是Mybatis ** MyBatis是一款优秀的基于java的持久层框架,它内部 封装了jdbc,使开发者只需要关注sql语句本身. 参考文档 :https:// ...
- java 基础做增删改查教学_Java Mybatis 增删改查 简单使用 入门 简版
一些基础问题的解决 数据库对应的表 初始数据 项目结构 pom.xml xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ...
- mybatis 增删改查、批量插入和删除以及自动生成uuid主键和分页
Mapper接口: public int update(Admin admin); public Admin selectByUserName(String account); public List ...
最新文章
- 写入位置 0x00000004 时发生访问冲突_HDFS读取和写入数据简介
- [Angular Tutorial] 11 -Custom Filters
- 软件业的作业示意流程图
- 树状数组 + 位运算 LA 4013 A Sequence of Numbers
- linux内核配置usb虚拟串口,Linux USB虚拟串口设备
- 七步从Angular.JS菜鸟到专家(1):如何开始
- 【写作技巧】毕业论文写作资料--刊物搜索
- H5 File 对象获取 Input type=file 文件详细信息
- 用protues作RC桥式振荡电路仿真,无法形成正弦波,求解惑
- Hi3559A Hi3519A Hi3556A算力对比
- (纪中)2173. 无根树(tree)【SPFA】
- python27.dll引起的appcrash_Python已经停止工作(APPCRASH)Python
- ORAN专题系列-29:运营商O-RAN扩展皮站测试的硬件架构
- 2017暴雪php,动视暴雪2017Q4财报 开启全新里程碑
- 关于KOT、KOL、KOC 理解
- 像计算机科学家一样思考在线,如何像计算机科学家一样思考?(女生篇)
- 大数据集群搭建(jdk、hadoop、hive、mysql、spark、flume、zookeeper)
- 敢为人先,华为不惧C语言开发仓颉汉语编程,中文编程迎来新生态
- 用AntlR4实现简单的汇编编译器
- linux var mqm权限,Linux MQ中间件/var/mqm文件系统结构与错误日志分析