Mybatis

mybatis简介

MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

mybatis配置

MyBatis 的配置文件包含了会深深影响 MyBatis 行为的设置和属性信息。 配置文档的顶层结构如下:

在这里插入图片描述

安装

  • 导包

使用 Maven 构建项目,需在 pom.xml 文件中导入mybatis依赖

  • 从xml中构建SqlSessionFactory
    创建mybatis-config.xml配置文件
<?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>

	<!--引入外部jdbc配置文件-->
    <properties resource="jdbc.properties"/>
    
	<!-- 设置-->
	<settings>
		<!-- 一级缓存默认开启,开启二级缓存-->
        <setting name="cacheEnabled" value="true"/>
    </settings>
    
    <!--设置别名-->
    <typeAliases>
        <!--为一个类起别名-->
        <!--<typeAlias type="com.whh.pojo.Teacher" alias="teacher"></typeAlias>-->
        <!--为某个包下的所有类起别名    类名(首字母小写)-->
        <package name="com.whh.pojo"/>
    </typeAliases>
    
	<!--插件-->
    <plugins>
        <!--分页插件 需要导包pagehelper-->
        <plugin interceptor="com.github.pagehelper.PageInterceptor"></plugin>
    </plugins>

    <environments default="development">
    	<!-- 可以配置多个-->
        <environment id="development">
        	<!--决定事务作用域和控制方式的事务管理器(TransactionManager)-->
            <transactionManager type="JDBC"/>
            <!--配置数据源-->
            <dataSource type="POOLED">
                <property name="url" value="${url}"/>
                <property name="driver" value="${driver}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
    </environments>

    <mappers>
        <!--sql映射文件路径地址 mapper(映射器)-->
        <mapper resource="mapper/TeacherMapper.xml"/>
    </mappers>
</configuration>
  • 创建 jdbc.properties属性配置文件

driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/stu? characterEncoding=utf8&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
username=root password=123456

  • 创建sqlMapper.xml —>sql映射文件
    我创建的TeacherMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<!--namespace命名空间,通常使用接口的全限定类名-->
<mapper namespace="com.whh.dao.TeacherMapper">
	<!-- id 当前reslutMap的唯一标识
		type 当前 对应的实体类的全限定类名/可以给别名-->
    <resultMap id="" type="">
        <!-- column  结果集的主键  property 属性名-->
        <id column="" property=""></id>
        <!-- column  结果集的普通列 property 属性名-->
        <result column="" property=""></result>
        	<!--使用构造器进行映射
			必须要在实体类中含有 有参构造
   			顺序与映射文件保持一致-->
         <constructor>
             <!-- 映射主键  javaType主键的类型-->
        	<idArg column="" javaType=""></idArg>
                   <!-- 映射普通列  javaType主键的类型-->
             <arg  column="" javaType=""></arg>
        </constructor>
        <!--一对一
        Teacher中有private Classes aClass属性-->
        <association property="aClass" javaType="classes">
        <id></id>
            <result></result>
            ...
        </association>
        <!-- 一对多或者多对多 
        Teacher中有private List<Student> studentlist属性	-->
        <collection property="studentlist" ofType="student"></collection>
     </resultMap>
    	<!-- 
		id 对应接口中的方法名  注意:保持唯一性
		paramaterType	传入的类型
		传参的方式:
		1.传入基本类型 直接获取
		2.传入的多个基本类型,通过下标 或者时 #{paramter1}
		3.通过Map 中的key来获取
		4.通过注解获取 @Param("key")
		5.传入实体类,通过属性名获取 #{属性名}

	resultType|resultMap
		使用resultType时,说明数据库中的列明与实体类的属性名保持一致,直接赋值
		resultMap 数据库中的列明与属性名不一致,需要使用建立好的映射关系
useGeneratedKeys 
	-->
    <select id="" paramaterType=“” resultType|resultMap="" ></select>
    	<!-- 
useGeneratedKeys
	当新增完成后,使用mybatis的 useGeneratedKeys获取到新增的主键
	keyProperty 标识主键的列明
	-->
    <insert id="" paramterType=""  useGeneratedKeys="true" keyProperty="id" ></insert>
    <update id="" paramterType=""></update>
    <delete id="" paramterType=""></delete>
</mapper>

日志(log4j)

  1. 导入log4j的jar包
  2. 在配置文件夹下创建log4j.properties配置文件
# 全局日志配置
log4j.rootLogger=ERROR, stdout
# MyBatis 日志配置
log4j.logger.com.whh.dao=TRACE
# 控制台输出
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

使用

在这里插入图片描述
下图这里open Session(true)自动提交,默认false
一般查询不用开启自动提交
在这里插入图片描述

缓存

一级缓存默认开启
要使用二级缓存,需要在sql映射文件中Mapper.xml文件加入一行

<cache/>

<settings>
	<!--默认为true-->
	<setting name="cacheEnabled" value="true"/>
</settings>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值