MyBatis快速入门

思路流程:搭建环境—>导入Mybatis–>编写代码—>测试

1、代码演示

1.1、搭建数据库

CREATE DATABASE `mybatis`;USE `mybatis`;CREATE TABLE `user` (`id` int(20) NOT NULL AUTO_INCREMENT,`username` varchar(50) NOT NULL,`address` varchar(50) NOT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;insert  into `user`(`id`,`username`,`address`)
values (1,'詹姆斯','克里夫'),
(2,'科比','洛杉矶'),
(3,'保罗','洛杉矶'),
(4,'苏炳添','中国');

1.2、导入MyBatis相关依赖

<!--导入mybatis依赖--><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.5</version></dependency><!--导入mysql依赖--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.21</version></dependency><!--单元测试--><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13</version><scope>test</scope></dependency>

1.3、编写Mybatis核心配置文件

<?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"><!--配置mysql的环境--><environment id="development"><!--配置事务的类型--><transactionManager type="JDBC"/><!--配置数据源(连接池)--><dataSource type="POOLED"><!--配置连接数据库的基本信息--><property name="driver" value="com.mysql.cj.jdbc.Driver"/><property name="url" value="jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC"/><property name="username" value="root"/><property name="password" value="root"/></dataSource></environment></environments><!--指定映射配置文件的位置--><mappers><mapper resource="mapper/UserMapper.xml"/></mappers>
</configuration>

1.4、编写实体类

package com.lili.entity;/*** 对应数据库下的t_user表** @author: QiJingJing* @create: 2021/8/6*/
public class User {/*** 用户编号*/private int id;/*** 姓名*/private String username;/*** 住址*/private String address;public void setId(int id) {this.id = id;}public User() {}public User(String username, String address) {this.username = username;this.address = address;}public int getId() {return this.id;}public void setUsername(String username) {this.username = username;}public String getUsername() {return this.username;}public void setAddress(String address) {this.address = address;}public String getAddress() {return this.address;}@Overridepublic String toString() {return "User{" +"id=" + id +", username='" + username + '\'' +", address='" + address + '\'' +'}';}
}

1.5、编写Mybatis工具类(获取SqlSession对象)

package com.lili.utils;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.IOException;
import java.io.InputStream;/*** 获取sqlSession对象** @author: QiJingJing* @create: 2021/8/6*/
public class MybatisUtil {private static SqlSessionFactory sqlSessionFactory;static {try {// 获取sqlSessionFactoryInputStream in = Resources.getResourceAsStream("mybatis-config.xml");sqlSessionFactory = new SqlSessionFactoryBuilder().build(in);} catch (IOException e) {e.printStackTrace();}}/*** 获取sqlSession对象*/public static SqlSession getSqlSession() {return sqlSessionFactory.openSession();}
}

1.6、编写Mapper接口类

public interface UserMapper {/*** 查询所有操作*/List<User> findAll();
}

1.7、编写Mapper.xml配置文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapperPUBLIC "-//mapper.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.lili.dao.UserMapper"><!--查询所有信息--><select id="findAll" resultType="com.lili.entity.User">select *from user</select>
</mapper>

1.8、编写测试类

public class MybatisTest {@Testpublic void userDaoTest() {// 放到 try 里面sqlSession会自动关闭try (SqlSession sqlSession = MybatisUtil.getSqlSession()) {// 执行sqlUserMapper mapper = sqlSession.getMapper(UserMapper.class);List<User> userList = mapper.findAll();userList.forEach(System.out::println);} catch (Exception e) {e.printStackTrace();}}
}

1.9、运行测试,结果如下

User{id=1, username='詹姆斯', address='克里夫'}
User{id=2, username='科比', address='洛杉矶'}
User{id=3, username='保罗', address='洛杉矶'}
User{id=4, username='苏炳添', address='中国'}

2、CRUD

2.1、select

  • select语句的属性

    • id

      • 命名空间中唯一标识符
      • 接口中的方法必须与映射文件中的SQL语句ID一一对应
    • parameterType

      • 传入SQL的参数类型。【如果参数过多可以使用Map】
    • resultType:

      • SQL语句返回值类型。【完整的类名或别名】

需求1:根据id查询用户

1.在UserMapper中添加对应方法

public interface UserMapper {/*** 查询所有操作*/List<User> findAll();/*** 根据id查询用户*/User findById(@Param("id") int id);
}

2.在UserMapper.xml中添加对应select语句

<!--查询根据Id查询用户-->
<select id="findById" parameterType="integer" resultType="com.lili.entity.User">select *from userwhere id = #{id}
</select>

3.测试类中进行测试

   @Testpublic void test2() {// 获取SqlSessiontry (SqlSession sqlSession = MybatisUtil.getSqlSession()) {// 得到UserMapper对象UserMapper mapper = sqlSession.getMapper(UserMapper.class);// 执行查询User user = mapper.findById(1);// 打印System.out.println(user);} catch (Exception e) {e.printStackTrace();}}

4.输出如下

User{id=1, username='詹姆斯', address='克里夫'}

需求2:根据用户名和住址查询用户

方法一:直接在方法中传递参数

  1. 在接口方法的参数前加 @Param属性

  2. Sql语句编写的时候,直接取@Param中设置的值即可,不需要单独设置参数类型

User findByUA(@Param("username") String username,@Param("address") String address);<select id="findByUA" resultType="com.lili.entity.User">select *from userwhere username = #{username}and address = #{address}</select>

方法二:使用Map传参

1.在接口方法上,直接使用map参数

User findByMap(Map<String,Object> map);

2.UserMapper.xml

<select id="findByMap" parameterType="map" resultType="com.lili.entity.User">select *from userwhere username = #{username}and address = #{address}
</select>

3.在使用方法的时候,Map的key为sql中取得值即可,没有顺序要求

Map<String,Object> map = new HashMap<>();
map.put("username","苏炳添");
map.put("address","中国");
// 执行查询
User user = mapper.findByMap(map);

2.2、insert

需求:给数据库增加一个用户

1.在UserMapper中添加对应方法

int addUser(User user);

2.UserMapper.xml

 <insert id="addUser" parameterType="com.lili.entity.User">insert into user (`id`, `username`, `address`)values (#{id}, #{username}, #{address})</insert>

3.测试代码

User user = new User();
user.setId(5);
user.setUsername("齐菁菁");
user.setAddress("河南");
// 执行添加
int i = mapper.addUser(user);
System.out.println(i);
// 注意:增删改操作必须提交
sqlSession.commit();

2.3、update

需求 :把id为5的地址改为中国

1.在UserMapper中添加对应方法

 int update(@Param("address") String address,@Param("id") int id);

2.UserMapper.xml

 <update id="update" >update userset address = #{address}where id = #{id}</update>

3.测试代码

 UserMapper mapper = sqlSession.getMapper(UserMapper.class);int i = mapper.update("中国", 5);System.out.println(i);// 注意:增删改操作必须提交sqlSession.commit();

2.4、delete

需求 :根据id删除一个用户

1.在UserMapper中添加对应方法

int deleteById(@Param("id") int id);

2.UserMapper.xml

<delete id="deleteById" >delete from user where id = #{id}</delete>

3.测试代码

 int i = mapper.deleteById(1);System.out.println(i);// 注意:增删改操作必须提交sqlSession.commit();

小结:

  • 所有的增删改操作都需要提交事务!

  • 接口所有的普通参数,尽量都写上@Param参数,尤其是多个参数时,必须写上!

  • 有时候根据业务的需求,可以考虑使用map传递参数!

  • 为了规范操作,在SQL的配置文件中,我们尽量将Parameter参数和resultType都写上!

Mybatis快速入门并实现CRUD操作相关推荐

  1. MyBatis快速入门——第三章、DML语句操作

    MyBatis快速入门--第三章.DML语句操作 目录 在接口类中添加[UsersMapper.java] 修改[com.item.mapper.UsersMapper.] [action.java] ...

  2. MyBatis学习总结(1)——MyBatis快速入门

    2019独角兽企业重金招聘Python工程师标准>>> 一.Mybatis介绍 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所 ...

  3. mybatis select count(*) 一直返回0 mysql_Mybatis教程1:MyBatis快速入门

    点击上方"Java技术前线",选择"置顶或者星标" 与你一起成长 一.Mybatis介绍 MyBatis是一个支持普通*SQL*查询,存储过程和高级映射的优秀持 ...

  4. MyBatis学习笔记(一)——MyBatis快速入门

    转自孤傲苍狼的博客:http://www.cnblogs.com/xdp-gacl/p/4261895.html 一.Mybatis介绍 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优 ...

  5. Java基础-SSM之mybatis快速入门篇

    Java基础-SSM之mybatis快速入门篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 其实你可能会问什么是SSM,简单的说就是spring mvc + Spring + m ...

  6. 视频教程-mybatis快速入门到精通-Java

    mybatis快速入门到精通 十年项目开发经验,主要从事java相关的开发,熟悉各种mvc开发框架. 王振伟 ¥18.00 立即订阅 扫码下载「CSDN程序员学院APP」,1000+技术好课免费看 A ...

  7. Mybatis Plus 入门 简单的CRUD 使用详解 条件查询 分页查询 DML操作 MP代码生成器

    Mybatis Plus入门 MP是 MybatisPlus,简称MP,是一个 Mybatis 的增强工具,在 Mybatis 的基础上只做增强不做改变.MP为简化开发.提高效率而生. 它已经封装好了 ...

  8. MyBatis 快速入门

    MyBatis 简介 MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为 ...

  9. mybatis 一对多_Springboot整合Mybatis实现级联一对多CRUD操作

    在关系型数据库中,随处可见表之间的连接,对级联的表进行增删改查也是程序员必备的基础技能.关于Spring Boot整合Mybatis在之前已经详细写过,不熟悉的可以回顾Spring Boot整合Myb ...

  10. mybatis快速入门

    1.Mybatis MyBatis 原本是apache的一个开源项目iBatis,2010年这个项目由Apache Software Foundation迁移到了Google Code,并且改名为My ...

最新文章

  1. 【字符串】大小写的转换
  2. Android+Java中使用RSA加密实现接口调用时的校验功能
  3. DELPHI加密字串(异或运算加密)
  4. VMware虚拟机磁盘操作占用过高问题(转:http://blog.csdn.net/New_When/article/details/73731149)
  5. 不确定规划及应用代码_性能测试划分之应用领域
  6. C++异常以及错误处理
  7. c++快速读取配置文件
  8. mysql 主从数据库设置方法
  9. 【令人头秃的线段树】线段树入门题目详解(代码逐句分析)
  10. 天线远场定义_高频电磁仿真软件的选型和评估(天线、雷达、电路与器件、无线电总体等)——探讨分享,思路梳理...
  11. 面试评估表和评估指标雷达图(附模板下载)
  12. linux虚拟机scsi类型,linux虚拟机的scsi设备id与盘符不一致问题的解决
  13. Unity世界坐标转换屏幕坐标(概览)
  14. SBX子板类及update_atr()方法
  15. 传国宝玺 第三部 巴山藏宝洞 第三十四章 千魂魈
  16. 武汉音乐学院声乐专业考研上岸经验分享
  17. BCG 全局主题样式
  18. 模拟对象测试技术Mock(一)
  19. 模型auc指标_auc致命缺陷模型指标
  20. 基于JAVA供电公司安全生产考试系统计算机毕业设计源码+数据库+lw文档+系统+部署

热门文章

  1. 微星P55-主板是怎样造出来的
  2. Centos中安装memcached
  3. vue模块单独封装html,在vue中怎么定义自定义组件?
  4. pythonscipy教程_Python学习教程(Python学习路线):Python—SciPy精讲
  5. xxl-job架构源码解析
  6. 分布式事务之基础理论(CAP/BASE理论)篇
  7. Mybatis工作中常见关系映射总结
  8. spring源码-第七个后置处理器的使用
  9. 软件测试第三次作业-worldCount
  10. java安全证书配置