Mybatis 是一个持久层框架,(之前 我虽然学了这个mybatis但一直 没有深入的学习,只是达到会用的程度,没有写过什么笔记,后来转jpa+hibernate和tk.mybatis),用jpa用久了之后,需要用到mybatis时候才来用的mybatis
mybatis永不过时
经常听说人家说mybatis效率不高,可是 这几天重学mybatis我发现,mybatis对于某些细节上做的是非常不错的,虽然,这些在jpa内都可以使用注解 来做,但是,对于快捷的持久层框架来说,灵活又强大,才能使一个框架走的越远
动态SQL的细节,是我最喜欢mybatis的地方,因为,使用mybatis的动态sql标签,你可以做很多,“骚操作”例如使用那些动态sql标签来简化的你的业务的冗余代码===我目前发现,框架好像都在做一件事解耦
下面是maven坐标
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.6</version> </dependency> 2、一个Mybatis的开始官网其实很详细: https://mybatis.org/mybatis-3/zh/configuration.html
不过我要做的是更简单化的复习mybatis框架
package com.pipihao.pojo; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import java.io.Serializable; import java.util.Date; @Data @NoArgsConstructor @AllArgsConstructor public class Blog implements Serializable { private String id; private String title; private String author; private Date createTime; private int view; }首先是mybatis-config.xml配置文件,这个文件主要是用的配置mybatis的一些操作,例如:扫描一个xxx.xxx.mapper的包
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <!--对应下面 development配置信息--> <properties resource="db.properties" /> <settings> <!--配置日志应用--> <setting value="LOG4J"/> <!--开启自动的大小写转换--> <!--官网的解释:开启驼峰命名自动映射,即从经典数据库列名 A_COLUMN 映射到经典 Java 属性名 aColumn。--> <setting value="true"/> <!--开启缓存,默认是开启的--> <setting value="true"/> </settings> <!--扫描当前包下的 所有java bean 然后取成别名 Text => text 类似这样的别名,使用的时候也要可以使用text作为别名--> <typeAliases> <package/> </typeAliases> <!--基本配置信息不作解释--> <environments default="development"> <environment> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property value="${driver}"/> <property value="${url}"/> <property value="${username}"/> <property value="${password}"/> </dataSource> </environment> </environments> <!-- 配置mapper类,用的这个package是扫描mapper包下所有的mapper类--> <mappers> <package/> </mappers> </configuration> 3、一个例子首先我们得写一个XxxMapper类,下面我以BlogMapper为例
package com.pipihao.mapper; import com.pipihao.pojo.Blog; import org.apache.ibatis.annotations.Param; import java.util.List; import java.util.Map; public interface BlogMapper { Blog findBlogById(int id); }在这个类目录的下面要配置一个BlogMapper.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.pipihao.mapper.BlogMapper"> <!--就是这一个标签二级缓存--> <cache/> <!-- 这个resutlType指定返回值的类型,使用的是类的别名,因为我们在上面的mybatis-config.xml中配置了自动扫描 resultMap 是使用指定返回值的映射配置 id,这个在后面会讲, !!且 resultType和resultMap不能混用,不然会报错 parameterType 是指定参数在官网表内指定了这个参数的 --> <select resultType="blog" parameterType="int"> select * from blog where id = #{id} </select> </mapper> 4、配置配置解析其实我个人觉得这个配置文件,的太多细节在这个官方文档内,而我目前主要是记录下一些 常用的
[ ] db.properties配置文件:properties文件的优先级大于mybatis-config.xml内 的properties的property的优先级,不过一般多是在db.properties配置好,然后在mybatis-config.xml中引入直接使用
configuration(配置)
environments(环境配置)
environment(环境变量)
transactionManager(事务管理器)
dataSource(数据源)
5、配置映射如果你的字段名和mysql的字段名都是规范的对应命名