1.Mybatis简介

1. 什么是Mybatis

  • Mybatis是一款优秀的持久层框架
  • 支持定制化SQL、存储过程以及高级映射
  • 避免了几乎所有的JDBC代码、手动设置参数以及获取结果集

Maven仓库:

<dependency><groupID>org.mybatis</groupID><artifactID>mybatis</artifactID><version>3.5.2</version>
</dependency>

2. 持久化

数据持久化

  • 持久化就是将程序的数据在持久状态和瞬时状态转化的过程
  • 数据库(jdbc),io文件持久化

3. 持久层

Dao层,Service层,Controller层...

  • 完成持久化工作的代码块
  • 层界限明显

4. Mybatis的特点

  • 简单方便,没有第三方依赖
  • 接触sql与程序代码之间的耦合,通过Dao层将业务逻辑和数据访问罗技分离,使系统的设计更清晰,更易维护。
  • 提供映射标签,支持对象和数据库的orm字段关系映射
  • 提供对象关系映射标签,支持对象关系组建维护
  • 提供xml标签,支持编写动态sql

2.第一个Mybatis程序

1. Mybatis思路

搭建环境->导入Mybatis->编写代码->测试

2.搭建环境

  • 搭建数据库
CREATE DATABASE `mybatis`;USE `mybatis`;CREATE TABLE `user`(`id` INT(20) NOT NULL PRIMARY KEY,`name` VARCHAR(30) DEFAULT NULL,`pwd` VARCHAR(30) DEFAULT NULL)ENGINE=INNODB DEFAULT CHARSET=utf8;insert into `user` (`id`,`name`,`pwd`)values
(1,'xx','123'),
(2,'kk','1234'),
(3,'ss','1235')

ENGINE=INNODB DEFAULT CHARSET=utf8 面试常考!!!

3. 新建maven项目

  • 删除src目录,作为父工程
  • 导入maven依赖
  • 以下代码需要添加进pom.xml中,防止后续测试找不到mapper.xml文件
    <build><resources><resource><directory>src/main/resource</directory><includes><include>**/*.properties</include><include>**/*.xml</include></includes><filtering>false</filtering></resource><resource><directory>src/main/java</directory><includes><include>**/*.properties</include><include>**/*.xml</include></includes><filtering>false</filtering></resource></resources>
    </build>

4. 创建模块

  • 编写mybatis核心配置文件configuration
<?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="com.mysql.cj.jdbc.Driver"/><property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=true&amp;useUnicode=true&amp;characterEncodingUTF-8"/><property name="username" value="root"/><property name="password" value="123456"/></dataSource></environment></environments><mappers><mapper resource="org/mybatis/example/BlogMapper.xml"/></mappers>
</configuration>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=true&amp;useUnicode=true&amp;characterEncodingUTF-8"/>

&amp;相当于&,在xml中转义。防止中文出错等。

  • 编写mybatis工具类
//sqlSessionFactory -->sqlSession
public class MybatisUtils {private static SqlSessionFactory sqlSessionFactory;static {try {String resource = "mybatis-config.xml";InputStream inputStream = Resources.getResourceAsStream(resource);sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);} catch (IOException e) {e.printStackTrace();}}public static SqlSession getSqlSession(){return sqlSessionFactory.openSession();}
}

5. 编写代码

  • 实体类
package com.wzh.pojo;//实体类
public class User {private int id;private String name;private String password;public User() {}public User(int id, String name, String password) {this.id = id;this.name = name;this.password = password;}public int getId() {return id;}public String getName() {return name;}public String getPassword() {return password;}public void setId(int id) {this.id = id;}public void setName(String name) {this.name = name;}public void setPassword(String password) {this.password = password;}@Overridepublic String toString() {return "User{" +"id=" + id +", name='" + name + '\'' +", password='" + password + '\'' +'}';}
}
  • Dao接口
public interface UserDao {List<User> getUserList();
}
  • 接口实现类由原来的UserDaoImpl转变为一个Mapper配置文件
<?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.wzh.dao.UserDao">
<!--    查询语句--><select id="getUserList" resultType="com.wzh.pojo.User">select * from mybatis.user</select>
</mapper>

6. 测试

在核心配置文件configuration中绑定mapper

<mappers><mapper resource="com/wzh/dao/UserMapper"/>
</mappers>

编写测试类UserDaoTest

public class UserDaoTest {@Testpublic void test(){//第一步 获得SqlSession对象SqlSession sqlSession = MybatisUtils.getSqlSession();//方式一:getMapper 推荐使用UserDao userDao = sqlSession.getMapper(UserDao.class);List<User> userList = userDao.getUserList();//方式二:不推荐使用
//        List<User> userList = sqlSession.selectList("com.wzh.dao.UserDao.getUserList");for (User user : userList) {System.out.println(user);}sqlSession.close();}

SqlSession sqlSession = MybatisUtils.getSqlSession();

sqlSession.close();

这两步是固定的,每个Test中复制粘贴即可

3.总结

1.namespace

namespace中的包名要和Dao/Mapper中的包名一致

2.select

1.编写接口

//查询全部用户
List<User> getUserList();
//根据ID查询用户
User getUserById(int id);

2.编写对应的mapper中的sql语句

<select id="getUserList" resultType="com.wzh.pojo.User">select * from mybatis.user
</select><select id="getUserById" parameterType="int" resultType="com.wzh.pojo.User">select * from mybatis.user where id = #{id}
</select>

3.测试

@Testpublic void test(){SqlSession sqlSession = MybatisUtils.getSqlSession();UserDao userDao = sqlSession.getMapper(UserDao.class);List<User> userList = userDao.getUserList();for (User user : userList) {System.out.println(user);}sqlSession.close();}@Testpublic void getUserById(){SqlSession sqlSession = MybatisUtils.getSqlSession();//获取需要的接口的class对象UserDao mapper = sqlSession.getMapper(UserDao.class);User user = mapper.getUserById(1);System.out.println(user);sqlSession.close();}

3. insert

1.编写接口

//插入用户信息
int addUser(User user);

2.编写对应mapper中的sql语句

<insert id="addUser" parameterType="com.wzh.pojo.User">insert into mybatis.user (id, name, pwd) VALUES (#{id},#{name},#{password})
</insert>

3.测试

//增删改查需要提交事务
@Test
public void addUser(){SqlSession sqlSession = MybatisUtils.getSqlSession();UserDao mapper = sqlSession.getMapper(UserDao.class);int res = mapper.addUser(new User(4,"heihei","123456"));if(res > 0){System.out.println("插入成功");}//提交事务 !!!!!!!sqlSession.commit();sqlSession.close();}

增删改查需要提交事务!!!!

3. update

1.编写接口

//更新用户信息
int updateUser(User user);

2.编写对应mapper中的sql语句

<update id="updateUser" parameterType="com.wzh.pojo.User">update mybatis.user set name=#{name},pwd=#{password} where id=#{id}
</update>

3.测试

@Test
public void updateUser(){SqlSession sqlSession = MybatisUtils.getSqlSession();UserDao mapper = sqlSession.getMapper(UserDao.class);mapper.updateUser(new User(4,"wangerxiao","123"));sqlSession.commit();sqlSession.close();
}

4. delete

1.编写接口

//删除用户信息
int deleteUser(int id);

2.编写对应mapper中的sql语句

<delete id="deleteUser" parameterType="com.wzh.pojo.User">delete from mybatis.user where id=#{id}
</delete>

3.测试

@Test
public void deleteUser(){SqlSession sqlSession = MybatisUtils.getSqlSession();UserDao mapper = sqlSession.getMapper(UserDao.class);mapper.deleteUser(4);sqlSession.commit();sqlSession.close();
}

Mybatis入门笔记相关推荐

  1. mybatis入门笔记(一)

    文章目录 eclipse中新建maven project 配置pom.xml 框架原理初步了解 一个小栗子步骤: 全局配置 数据库准备 实体类pojo 实体类映射 数据库操作dao及实现类 全局中配置 ...

  2. mybatis学习笔记(3)-入门程序一

    2019独角兽企业重金招聘Python工程师标准>>> mybatis学习笔记(3)-入门程序一 标签: mybatis [TOC] 工程结构 在IDEA中新建了一个普通的java项 ...

  3. MyBatis-学习笔记02【02.Mybatis入门案例】

    Java后端 学习路线 笔记汇总表[黑马程序员] MyBatis-学习笔记01[01.Mybatis课程介绍及环境搭建][day01] MyBatis-学习笔记02[02.Mybatis入门案例] M ...

  4. 【MyBatis系统拓荒笔记 - 1】MyBatis入门之混沌初开

    MyBatis系统拓荒系列文章: [MyBatis系统拓荒笔记 - 1]MyBatis入门之混沌初开 视频学习教程:Mybatis教程IDEA版-4天-2018黑马SSM-01 目录 MyBatis简 ...

  5. Mybatis学习笔记——Mybatis入门

    文章目录 Mybatis入门 1.为什么要使用mybatis? 2.ORM 3.mybatis简介 4.mybatis框架 5.mybatis入门程序 5.1搭建环境 5.2 配置log4j 5.3 ...

  6. MyBatis多参数传递之Map方式示例——MyBatis学习笔记之十三

    前面的文章介绍了MyBatis多参数传递的注解.参数默认命名等方式,今天介绍Map的方式.仍然以前面的分页查询教师信息的方法findTeacherByPage为例(示例源代码下载地址:http://d ...

  7. MyBatis入门基础(一)

    阅读目录 一:对原生态JDBC问题的总结 二:MyBatis框架 三:mybatis入门程序 四:mybatis和Hibernate的本质区别与应用场景 五:小结 回到顶部 一:对原生态JDBC问题的 ...

  8. SpringMVC入门笔记

    SpringMVC入门笔记 1. 简介 Spring MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架 ,是Spring系开源项目中的一个,和IoC配合使用.通过 ...

  9. Spring Boot Mybatis入门示例

    Spring Boot Mybatis 入门示例 基于Spring Boot 2.3.4,Junit5 步骤说明     整个工程的最终目录结构如下,添加文件或者新建的目录的参考: └─src├─ma ...

  10. Mybatis学习笔记(二) 之实现数据库的增删改查

    开发环境搭建 mybatis 的开发环境搭建,选择: eclipse j2ee 版本,mysql 5.1 ,jdk 1.7,mybatis3.2.0.jar包.这些软件工具均可以到各自的官方网站上下载 ...

最新文章

  1. 你知道怎么使用OpenCV检测篮球运动员吗?
  2. android系统密码设置功能,手机锁屏密码怎么设置 三种安卓手机锁屏方式推荐
  3. SQL Server 2008创建数据库
  4. SAP SD 模块与FI、MM的接口
  5. [转载] 解析Java的JNI编程中的对象引用与内存泄漏问题
  6. mybatis中的xml配置文件中sql语句里的比较符号需要用特殊标签包裹有比较大于和小于条件
  7. Matlab:实现自定义圆孔阵列远场衍射仿真
  8. 背景图片轮播html代码,一款常见的背景图片轮播动效
  9. CSR烧录工具csr单个蓝牙烧录小工具qcc300x烧录软件/CSR86xx烧写工具
  10. nssa和stub_eNSP环境,分析NSSA区域与Stub区域的区别
  11. android项目图片分辨率转换工具
  12. bilibili视频下载器v1.0.5 支持4K超清
  13. 国内无代码平台数据统计功能对比
  14. SAP中MRP控制者的应用理解
  15. 使用Domain Adaption提升小场景时间序列预测效果的方法
  16. 软件设计师(结构化开发)
  17. echarts 饼图 逆时针降序排序
  18. OpenGL之坐标系以及单位
  19. signal的种类和用法
  20. 空气测试仪“清心”(2)-整体架构

热门文章

  1. html转成高清pdf,Javascript实现html转pdf高清版(提高分辨率)
  2. 常见的平均查找长度总结
  3. H5支付(支付宝)开通流程
  4. 一篇通读网贷产品的身份核验设计
  5. 三星S8相机黑画面解决
  6. UVA11584划分回文串
  7. java游戏为什么_JAVA能不能开发大型游戏?为什么?
  8. RI-TRP-DR2B 32mm 玻璃应答器|CID载码体标签在半导体行业重复利用之检测方法
  9. 如何被猎头猎杀:猎头慕名而来的绝招
  10. 机器人之自动回归原点方法实现