![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
MyBatis
MyBatis学习笔记
我就要用HashMap
这个作者很懒,什么都没留下…
展开
-
1.初识MyBatis
初识MyBatis什么是MyBatisMyBatis 是一款优秀的持久层框架,它避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集的过程。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的实体类映射成数据库中的记录。持久化&持久层持久化就是把数据保存到可永久保存的存储设备中,防止数据意外丢失。持久化的主要应用是将内存中的对象存储在数据库中,或者存储在磁盘文件中、XML数据文件中等等。而持久层则是系统架构中为了数据持久化,操作数据库存在的。为原创 2021-12-23 16:28:56 · 113 阅读 · 0 评论 -
2.第一个MyBatis程序
第一个MyBatis程序1.新建数据库表CREATE DATABASE `mybatis`;USE `mybatis`;DROP TABLE IF EXISTS `user`;CREATE TABLE `user` (`id` int(20) NOT NULL,`name` varchar(30) DEFAULT NULL,`pwd` varchar(30) DEFAULT NULL,PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET原创 2021-12-23 16:29:47 · 116 阅读 · 0 评论 -
3.CRUD操作
CRUD操作select根据id查询1.在UserMapper中添加对应方法User selectUserById(int id);2.在UserMapper.xml中添加对应的sql语句<select id="selectUserById" resultType="com.dream.pojo.User"> select * from user where id = #{id}</select>3.测试@Test public void原创 2021-12-23 16:31:18 · 118 阅读 · 0 评论 -
4.MyBatis配置解析
MyBatis配置解析核心配置文件点进mybatis-config.xml的dtd头文件,可以看到能配置的相关信息。注意元素节点的顺序!顺序不对会报错<!ELEMENT configuration (properties?, settings?, typeAliases?, typeHandlers?, objectFactory?, objectWrapperFactory?, reflectorFactory?, plugins?, environments?, databaseIdProv原创 2021-12-23 21:38:17 · 613 阅读 · 1 评论 -
5.ResultMap
ResultMap这里要解决属性名和字段名不一致的问题将User类的pwd属性改为passwordprivate String password;再次执行SelectUserById()方法测试得到的结果User{id=1, name=‘张三’, password=‘null’}这里的select * from user where id = #{id} 可以看做select id,name,pwd from user where id = #{id}MyBatis会根据要查询的列名(会将列原创 2021-12-24 10:34:14 · 754 阅读 · 0 评论 -
6.分页的实现
分页log4j可以控制日志信息输送的目的地如控制台,文本,GUI组件等,也可以控制每一条日志的输出格式,通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程1.导入依赖<dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version>原创 2021-12-24 11:46:34 · 219 阅读 · 0 评论 -
7.使用注解开发
使用注解开发利用注解开发就不需要mapper.xml映射文件了将MybatisUtils工具类的getSession( ) 方法设置自动提交事务public static SqlSession getSession(){ return sqlSessionFactory.openSession(true); }接口方法添加注解@Select("select id,name,pwd as password from user limit #{startIndex},#{pa原创 2021-12-24 16:30:43 · 138 阅读 · 1 评论 -
8.多对一的处理
多对一的处理比如多个学生对应一个老师即从学生这边关联一个老师,学生这个实体类属性中包含老师这个对象,那么这种情况下我要查询的学生信息中也包含老师信息,数据库表字段和实体类属性之间应该怎么进行关联,手动映射SQL语句又该怎么写呢新建数据库表CREATE TABLE `teacher` (`id` INT(10) NOT NULL,`name` VARCHAR(30) DEFAULT NULL,PRIMARY KEY (`id`)) ENGINE=INNODB DEFAULT CHARSET=ut原创 2021-12-25 15:20:33 · 379 阅读 · 0 评论 -
9.一对多的处理
一对多的处理比如一个老师对应多个学生,这种情况的处理方式和多对一类似,也可以按查询嵌套处理或按结果嵌套处理实体类package com.dream.pojo;import lombok.AllArgsConstructor;import lombok.Data;import lombok.NoArgsConstructor;@Data@AllArgsConstructor@NoArgsConstructorpublic class Student { private int原创 2021-12-25 16:30:59 · 220 阅读 · 0 评论 -
10.动态SQL
动态SQL动态SQL指的是根据不同的查询条件 , 生成不同的Sql语句在写复杂的 SQL 语句时,往往需要拼接,而拼接 SQL 稍微不注意,由于引号,空格等缺失可能都会导致错误。MyBatis 动态SQL,通过 if, choose, when, otherwise,trim, where, set, foreach等标签,可组合成非常灵活的SQL语句,从而提高SQL 语句的准确性,提高开发人员的效率新建数据库表CREATE TABLE `blog` (`id` varchar(50) NOT原创 2021-12-27 09:42:47 · 471 阅读 · 0 评论 -
11.MyBatis中的缓存
MyBatis中的缓存对于经常查询且不经常改变的数据,使用缓存可以减少数据库的交互次数,减少系统开销,提高效率MyBatis可以定制和配置缓存,默认情况下自动开启了一级缓存(本地缓存),我们关闭不了一级缓存是sqlSession级别的缓存,每个sqlSession中的缓存相互独立我们在一次会话中执行两次查询,第一次查出的数据都会被默认放在前会话的一级缓存中,第二次查询要获取相同的数据,就直接从缓存中拿,而没有进行数据库查询,所以SQL语句只查询了一次@Testpublic void testQu原创 2021-12-27 16:37:59 · 286 阅读 · 0 评论