阿里内部流传的 Mybatis 笔记终于流传出来了,赶紧收藏

用户头像
简爱W
关注
发布于: 2020 年 08 月 22 日

Mybatis大纲



什么是Mybatis框架

MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github 。  MyBatis是一个半自动的ORM框架  ORM: Object Relational Mapping (作用解决数据库发展和面向对象发展不一致的问题)。  O:面向对象  R:关系型数据库  M:映射  半自动:myBatis框架是需要我们自己手写sql语句  MyBatis框架不依赖于服务器



Mybatis依赖包



mysql驱动包+mybatis的核心包+mybatis的依赖其中核心包为mybatis.jar



依次从上到下包的作用ant编译Java类,生成class文件,ant可以把相关层架构成包java文件解析包.spring依赖这个包动态代理包.mybatis不需编写实现类日志包.spring依赖这个包字节码解析助手,处理.class文件日志包mybatis核心包数据库驱动日志包



Mybatis.xml配置

<?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><!-- 读取属性文件--><properties resource="jdbc.properties"></properties><!-- 指定mybatis中的日志类型--><settings><setting name="logImpl" value="LOG4J"/></settings><!-- 给实体类配置别名--><typeAliases><!-- 给指定的类起别名--><!-- <typeAlias type="com.erwin.entity.Student" alias="student"></typeAlias>--><!-- 包下所有类的别名就是当前类名 首字母会调整为小写--><package name="com.erwin.entity"/></typeAliases><!-- 配置数据库环境--><environments default="mysql"><!--Mysql数据库连接--><environment id="mysql"><!--Mybatis事务管理 目前的事务管理和JDBC中的事务保持一致--><transactionManager type="JDBC"></transactionManager><!-- 底层使用连接池连接--><dataSource type="POOLED"><property name="driver" value="${m_driver}"/><property name="url" value="${m_url}"/><property name="username" value="${m_user}"/><property name="password" value="${m_pwd}"/></dataSource></environment></environments><!-- 进行mapper文件的扫描--><mappers><!-- resourse 表示XML所在的目录--><mapper resource="com/erwin/mapper/StudentMapper.xml"><!-- 扫描包下的所有接口,然后去找和接口相同名字的XML--><package name="com.erwin.mapper"/></mapper></mappers></configuration>



其中jdbc.properties书写如下

m_driver=com.mysql.cj.jdbc.Driverm_url=jdbc:mysql://localhost:3306/mybatis?verifyServerCertificate=false&useSSL=false&serverTimezone=UTCm_user=rootm_pwd=



Mybatis配置属性说明

全局配置文件mybatis.xml<environments default="demo">default配置当前所使用的环境.值必须是<environment>的id值,可以有多个<environment>标签.<environment> 声明可能使用的环境,会被< environments>引用<transactionManager type="JDBC"> 事务管理器类型.type属性可取值:JDBC 底层事务与JDBC原有事务管理相同MANAGED MyBatis不去管理事务,交给其他容器进行管理.<dataSource type="POOLED">POOLED : 使用连接池技术. 访问频率比较高时使用.连接池的使用可以降低服务器压力,提高连接对象重用性UNPOOLED: 不使用连接池技术.每次对数据库访问时打开数据库连接,访问结束后关闭数据库连接.JNDI : java命名目录接口.数据库的连接可以依赖于其他技术或应用.<mapper> 常用属性resource="com/bjsxt/xxx.xml" 加载项目中资源,目录寻找,中间是/url="" 加载互联网或本机的配置文件.示例如下:



配置Mapper层xml文件

<?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="erwin"><!-- id 方法名称--><!-- resultType 返回值类型如果返回值是一个对象,就写对象所在包的全路径如果返回值是一个集合,这个时候书写集合的泛型--><!-- 注意student是配置在mybatis.xml中的别名,完整路径为com.erwin.entity.Student--><select id="selectAll" resultType="student">select * from student</select></mapper>



mapper.xml 中标签解释<mapper >中namespace=""值相当于接口名id 属性: 相当于方法名resultType属性:返回值类型,如果返回值是集合,写集合的泛型.parameterType属性:参数类型.如果没有参数省略该属性.



其中Student类为Pojo,定义如下:

package com.erwin.entity;import java.io.Serializable;public class Student implements Serializable {private int id;private String name;private String gender;public Student(int id, String name, String gender) {this.id = id;this.name = name;this.gender = gender;}public Student() {}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getGender() {return gender;}public void setGender(String gender) {this.gender = gender;}@Overridepublic String toString() {return "Student{" +"id=" + id +", name='" + name + '\'' +", gender='" + gender + '\'' +'}';}}



最基本的调用方式

package com.erwin.test;import com.erwin.entity.Student;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;import java.util.List;public class TestA {public static void main(String[] args) throws IOException {//[a] 解析mybatis.xmlInputStream resourceAsStream = Resources.getResourceAsStream("com/erwin/mybatis.xml");//[b]获得Session工厂SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(resourceAsStream,"mysql");//[c]获得Session对象SqlSession sqlSession = factory.openSession();//[d]调用Sql方法List<Student> students = sqlSession.selectList("erwin.selectAll");//[e]关闭资源sqlSession.close();System.out.println(students.get(0));}}



日志文件的配置

#指定全局打印的级别和输出log4j.rootCategory=error, CONSOLE,LOGFILE#指定erwin namespace = debug,并打印log4j.logger.erwin=debuglog4j.appender.CONSOLE=org.apache.log4j.ConsoleAppenderlog4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayoutlog4j.appender.CONSOLE.layout.ConversionPattern=- %m%n# LOGFILE is set to be a File appender using a PatternLayout.log4j.appender.LOGFILE=org.apache.log4j.FileAppenderlog4j.appender.LOGFILE.File=d:/log/0813.loglog4j.appender.LOGFILE.Append=truelog4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayoutlog4j.appender.LOGFILE.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n

用户头像

简爱W

关注

还未添加个人签名 2020.07.22 加入

还未添加个人简介

评论

发布
暂无评论
阿里内部流传的Mybatis笔记终于流传出来了,赶紧收藏