MyBatis
MyBatis学习笔记
我就要用HashMap
这个作者很懒,什么都没留下…
展开
-
1.初识MyBatis
初识MyBatis 什么是MyBatis MyBatis 是一款优秀的持久层框架,它避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集的过程。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的实体类映射成数据库中的记录。 持久化&持久层 持久化就是把数据保存到可永久保存的存储设备中,防止数据意外丢失。持久化的主要应用是将内存中的对象存储在数据库中,或者存储在磁盘文件中、XML数据文件中等等。而持久层则是系统架构中为了数据持久化,操作数据库存在的。 为原创 2021-12-23 16:28:56 · 108 阅读 · 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 · 112 阅读 · 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 · 111 阅读 · 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 · 605 阅读 · 1 评论 -
5.ResultMap
ResultMap 这里要解决属性名和字段名不一致的问题 将User类的pwd属性改为password private 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 · 748 阅读 · 0 评论 -
6.分页的实现
分页 log4j 可以控制日志信息输送的目的地如控制台,文本,GUI组件等,也可以控制每一条日志的输出格式,通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程 1.导入依赖 <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version>原创 2021-12-24 11:46:34 · 217 阅读 · 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 · 135 阅读 · 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 · 378 阅读 · 0 评论 -
9.一对多的处理
一对多的处理 比如一个老师对应多个学生,这种情况的处理方式和多对一类似,也可以按查询嵌套处理或按结果嵌套处理 实体类 package com.dream.pojo; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @Data @AllArgsConstructor @NoArgsConstructor public class Student { private int原创 2021-12-25 16:30:59 · 216 阅读 · 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 · 462 阅读 · 0 评论 -
11.MyBatis中的缓存
MyBatis中的缓存 对于经常查询且不经常改变的数据,使用缓存可以减少数据库的交互次数,减少系统开销,提高效率 MyBatis可以定制和配置缓存,默认情况下自动开启了一级缓存(本地缓存),我们关闭不了 一级缓存是sqlSession级别的缓存,每个sqlSession中的缓存相互独立 我们在一次会话中执行两次查询,第一次查出的数据都会被默认放在前会话的一级缓存中,第二次查询要获取相同的数据,就直接从缓存中拿,而没有进行数据库查询,所以SQL语句只查询了一次 @Test public void testQu原创 2021-12-27 16:37:59 · 282 阅读 · 0 评论