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

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配置

PUBLIC"-//mybatis.org//DTD Config 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-config.dtd">

其中jdbc.properties书写如下

m_driver=com.mysql.cj.jdbc.Driver

m_url=jdbc:mysql://localhost:3306/mybatis?verifyServerCertificate=false&useSSL=false&serverTimezone=UTC

m_user=root

m_pwd=

Mybatis配置属性说明

全局配置文件mybatis.xml

default配置当前所使用的环境.值必须是的id值,可以有多个标签.

声明可能使用的环境,会被引用

事务管理器类型.

type属性可取值:

JDBC 底层事务与JDBC原有事务管理相同

MANAGED  MyBatis不去管理事务,交给其他容器进行管理.

POOLED : 使用连接池技术. 访问频率比较高时使用.连接池的使用可以降低服务器压力,提高连接对象重用性

UNPOOLED: 不使用连接池技术.每次对数据库访问时打开数据库连接,访问结束后关闭数据库连接.

JNDI : java命名目录接口.数据库的连接可以依赖于其他技术或应用.

常用属性

resource="com/bjsxt/xxx.xml" 加载项目中资源,目录寻找,中间是/

url="" 加载互联网或本机的配置文件.示例如下:

配置Mapper层xml文件

PUBLIC"-//mybatis.org//DTD Mapper 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

select * from student

mapper.xml 中标签解释

中namespace=""值相当于接口名

id 属性: 相当于方法名

resultType属性:返回值类型,如果返回值是集合,写集合的泛型.

parameterType属性:参数类型.如果没有参数省略该属性.

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

packagecom.erwin.entity;

importjava.io.Serializable;

publicclassStudentimplementsSerializable{

privateintid;

privateString name;

privateString gender;

publicStudent(intid, String name, String gender){

this.id = id;

this.name = name;

this.gender = gender;

}

publicStudent(){

}

publicintgetId(){

returnid;

}

publicvoidsetId(intid){

this.id = id;

}

publicStringgetName(){

returnname;

}

publicvoidsetName(String name){

this.name = name;

}

publicStringgetGender(){

returngender;

}

publicvoidsetGender(String gender){

this.gender = gender;

}

@Override

publicStringtoString(){

return"Student{"+

"id="+ id +

", name='"+ name +'\''+

", gender='"+ gender +'\''+

'}';

}

}

最基本的调用方式

packagecom.erwin.test;

importcom.erwin.entity.Student;

importorg.apache.ibatis.io.Resources;

importorg.apache.ibatis.session.SqlSession;

importorg.apache.ibatis.session.SqlSessionFactory;

importorg.apache.ibatis.session.SqlSessionFactoryBuilder;

importjava.io.IOException;

importjava.io.InputStream;

importjava.util.List;

publicclassTestA{

publicstaticvoidmain(String[] args)throwsIOException{

//[a] 解析mybatis.xml

        InputStream 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 students = sqlSession.selectList("erwin.selectAll");

        //[e]关闭资源

        sqlSession.close();

        System.out.println(students.get(0));

    }

}

日志文件的配置

#指定全局打印的级别和输出

log4j.rootCategory=error, CONSOLE,LOGFILE

#指定erwinnamespace= debug,并打印

log4j.logger.erwin=debug

log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender

log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout

log4j.appender.CONSOLE.layout.ConversionPattern=- %m%n

# LOGFILE issetto be a File appenderusinga PatternLayout.

log4j.appender.LOGFILE=org.apache.log4j.FileAppender

log4j.appender.LOGFILE.File=d:/log/0813.log

log4j.appender.LOGFILE.Append=true

log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout

log4j.appender.LOGFILE.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n

你可能感兴趣的:(牛逼!在阿里内部流传的Mybatis笔记终于流传出来了,赶紧收藏)