2021-07-11

010_Mybatis简介

目录
  • Mybatis简介
    • 什么是 MyBatis?
    • 如何获得Mybatis
    • 持久化
    • 持久层
    • 为什么需要Mybatis
  • 第一个Mybatis程序
    • 搭建环境
      • 建库建表
      • 新建父工程
        • 新建普通maven项目
        • 删除src目录,作为父工程
        • 导入maven依赖
      • 创建第一个子模块
        • 编写mybatis的核心配置文件
        • 编写mybatis工具类,获取SqlSession
      • 编写代码测试
        • 实体类
        • 接口
        • Mapper
        • 测试
        • 问题一:Mapper.
        • 问题二:Mapper文件编译后不存在
        • 问题三:数据库连接SSL错误
        • 测试成功
  • CRUD
    • namespace中的包名要和Mapper接口的包名一致
    • select 选择,查询语句
      • id 对应接口中的方法名
      • parameterType 对应接口中方法的请求参数
      • resultType 对应接口中方法的返回值
      • 集合类型写集合泛型类型
    • insert/update/delete 增删改必须提交事务
      • 编写接口
      • 编写Mapper
      • 测试
  • Map的应用
    • Map传递参数,用key获取即可
    • 对象传递参数,用属性获取即可
    • 只有一个基本类型参数,可以直接获取,可不写parameterType
    • 编写接口
    • 编写Mapper
    • 测试


Mybatis简介

什么是 MyBatis?

MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的

  • MyBatis 是一款优秀的持久层框架
  • 它支持自定义 SQL、存储过程以及高级映射。
  • MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。
  • MyBatis 可以通过简单的
  • MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。

如何获得Mybatis

  • maven仓库
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis --><dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.7</version></dependency>
  • 中文文档:https://mybatis.org/mybatis-3/zh/index.html
  • Github:https://github.com/mybatis/mybatis-3/releases

image.png

持久化

image.png

持久层

image.png

为什么需要Mybatis

image.png

第一个Mybatis程序

学习新东西方法:搭建环境-》导入mybatis-》编写代码-》测试

搭建环境

建库建表

CREATE DATABASE `mybatis`CHARACTER SET utf8 COLLATE utf8_general_ci; USE `mybatis`;CREATE TABLE `mybatis`.`user` ( `id` INT(20) NOT NULL COMMENT '主键', `name` VARCHAR(100) NOT NULL COMMENT '用户名', `pwd` VARCHAR(100) NOT NULL COMMENT '密码', PRIMARY KEY (`id`) ) ENGINE=INNODB CHARSET=utf8 COLLATE=utf8_general_ci; DESCRIBE `mybatis`.`user`; INSERT INTO `mybatis`.`user` (`id`, `name`, `pwd`) VALUES ('1', 'zhangyq', '123456'); INSERT INTO `mybatis`.`user` (`id`, `name`, `pwd`) VALUES ('2', 'zhangsf', '123456'); INSERT INTO `mybatis`.`user` (`id`, `name`, `pwd`) VALUES ('3', 'zhangdl', '123456'); 

新建父工程

新建普通maven项目

image.png

删除src目录,作为父工程

image.png

导入maven依赖

<?

创建第一个子模块

image.png

编写mybatis的核心配置文件

官网:https://mybatis.org/mybatis-3/zh/index.html
image.png
image.png

<?

编写mybatis工具类,获取SqlSession

SqlSession 提供了在数据库执行 SQL 命令所需的所有方法。你可以通过 SqlSession 实例来直接执行已映射的 SQL 语句。
image.png
image.png

package com.qing.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;public class MybatisUtils { // 构建 SqlSessionFactory 的实例 private static SqlSessionFactory sqlSessionFactory; static {  try {   String resource = "mybatis-config.

编写代码测试

实体类

image.png

接口

package com.qing.dao;import com.qing.pojo.User;import java.util.List;/** * 接口 */public interface UserMapper { List<User> getUserList();}

Mapper

<?

测试

package com.qing.dao;import com.qing.pojo.User;import com.qing.utils.MybatisUtils;import org.apache.ibatis.session.SqlSession;import org.junit.Test;import java.util.List;public class UserMapperTest { /**  * 方式一:sqlSession.getMapper(UserMapper.class)  */ @Test public void test() {  // 获取sqlSession  SqlSession sqlSession = MybatisUtils.getSqlSession();  // 执行SQL  UserMapper mapper = sqlSession.getMapper(UserMapper.class);  List<User> userList = mapper.getUserList();  for (User user : userList) {   System.out.println(user);  }  // 关闭sqlSession  sqlSession.close(); }}

<?

问题二:Mapper文件编译后不存在

java.lang.ExceptionInInitializerError	at com.qing.dao.UserMapperTest.test(UserMapperTest.java:18)Caused by: org.apache.ibatis.exceptions.PersistenceException: ### Error building SqlSession.### The error may exist in com/qing/dao/UserMapper.

image.png
解决:pom.image.png

<?

image.png

问题三:数据库连接SSL错误

org.apache.ibatis.exceptions.PersistenceException: ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failureThe last packet successfully received from the server was 2,729 milliseconds ago. The last packet sent successfully to the server was 2,715 milliseconds ago.### The error may exist in com/qing/dao/UserMapper.

解决:mybatis-config.image.png

<?

测试成功

image.png

CRUD

namespace中的包名要和Mapper接口的包名一致

image.png

<?
package com.qing.dao;import com.qing.pojo.User;import java.util.List;/** * 接口 */public interface UserMapper { /**  * 查询全部用户  * @return  */ List<User> getUserList();}

select 选择,查询语句

id 对应接口中的方法名

parameterType 对应接口中方法的请求参数

resultType 对应接口中方法的返回值

集合类型写集合泛型类型

<?
package com.qing.dao;import com.qing.pojo.User;import java.util.List;/** * 接口 */public interface UserMapper { /**  * 查询全部用户  * @return  */ List<User> getUserList(); /**  * 根据ID查询用户  * @param id  * @return  */ User getUserById(int id);}
package com.qing.dao;import com.qing.pojo.User;import com.qing.utils.MybatisUtils;import org.apache.ibatis.session.SqlSession;import org.junit.Test;import java.util.List;public class UserMapperTest { /**  * 查询全部用户  */ @Test public void getUserList() {  SqlSession sqlSession = null;  try {   // 获取sqlSession   sqlSession = MybatisUtils.getSqlSession();   // 执行SQL   UserMapper mapper = sqlSession.getMapper(UserMapper.class);   List<User> userList = mapper.getUserList();   for (User user : userList) {    System.out.println(user);   }  } catch (Exception e) {   e.printStackTrace();  } finally {   // 关闭sqlSession   sqlSession.close();  } } /**  * 根据ID查询用户  */ @Test public void getUserById() {  SqlSession sqlSession = null;  try {   // 获取sqlSession   sqlSession = MybatisUtils.getSqlSession();   // 执行SQL   UserMapper mapper = sqlSession.getMapper(UserMapper.class);   User user = mapper.getUserById(1);   Sy......

原文转载:http://www.shaoqun.com/a/865383.html

跨境电商:https://www.ikjzd.com/

ad公司:https://www.ikjzd.com/w/1332

agora:https://www.ikjzd.com/w/2176

retriever:https://www.ikjzd.com/w/773


目录Mybatis简介什么是MyBatis?如何获得Mybatis持久化持久层为什么需要Mybatis第一个Mybatis程序搭建环境建库建表新建父工程新建普通maven项目删除src目录,作为父工程导入maven依赖创建第一个子模块编写mybatis的核心配置文件编写mybatis工具类,获取SqlSession编写代码测试实体类接口Mapper测试问题一:Mapper.问题二:Mapper文件
声网agora:https://www.ikjzd.com/w/2176
2021番禺美食节几号开始?广州番禺美食节举办时间?:http://www.30bags.com/a/428381.html
2021番禺去哪里赏花?番禺赏花攻略?:http://www.30bags.com/a/432134.html
2021方特蓝水星平安夜好玩吗?2021汕头方特欢乐世界圣诞跨年晚上到几点?:http://www.30bags.com/a/422916.html
2021仿山庙会时间?定陶仿山庙会什么时候结束?:http://www.30bags.com/a/428220.html
办公室不行太深了顶破死了 腿张大点就不疼了叫出来:http://lady.shaoqun.com/a/256936.html
玩吧今天老师就是你的人 英语老师在宿舍满足了我:http://www.30bags.com/m/a/249864.html
坐在男友腿上被吸奶 男朋友边吃奶边做:http://www.30bags.com/m/a/249775.html
成都仙女游乐场门票多少钱?团购票价优惠吗:http://www.30bags.com/a/489644.html
成都仙女游乐场好玩吗?简介一下怎么样啊:http://www.30bags.com/a/489645.html
甜蜜的睡前故事:http://lady.shaoqun.com/a/415040.html
夺走妻子初夜的男人,后来变成了我的桥:http://lady.shaoqun.com/a/415041.html

No comments:

Post a Comment