Mybatis

2019-05-05  本文已影响0人  金石_832e

Mybatis是SSM框架中的M。操作持久层,代替dao,hibernate。提供半自动数据查询。


一.MyBatis的框架原理(掌握)

Mybatis是一个持久层的架构,是apache下的顶级项目。

Mybatis原先是托管在googlecode下,再后来是托管在Github上。

Mybatis让程序员将主要的精力放在sql上,通过Mybatis提供的映射方式,自由灵活生成(半自动,大部分需要程序员编写sql)满足需要sql语句。

Mybatis可以将向preparedStatement中的输入参数自动进行输入映射,将查询结果集灵活的映射成java对象。(输出映射)


二.Mybatis框架

mybatis架构图.jpg

三.Mybatis简单应用(IDE:idea intellij)

完成对数据库emp表的查询(查询一条,查询全部,条件查询)

1.准备jar包(maven上自选版本)

mybatis-3.4.6.jar(核心依赖)
commons-logging-1.2.jar(日志)
log4j-1.2.17.jar(日志)

2.web-inf下创建lib文件夹,标记为resource root,将项目所需的依赖粘贴进去,并标记为library

3.在工作空间下创建一个统一存放为配置的文件夹resources,并标记为resource root。

①.在resources建立一个连接数据库的db.properties

jdbc.driverClassName = oracle.jdbc.driver.OracleDriver
jdbc.url= jdbc:oracle:thin:@127.0.0.1:1521:orcl
jdbc.username =  scott
jdbc.password =  tiger

②.在resources建立一个log4j.properties文件,配置开发时运行日志相关内容,必须要知道有这个文件,但是文件内容对于小白来说可以不知道。

# Global logging configuration
#在开发环境日志级别要设置为DEBUG、生产环境要设置为INFO或者ERROR
log4j.rootLogger=DEBUG, stdout
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

③在resources建立SqlMapConfig.xml文件,文件名称虽然随意,但是约定熟成,用mybatis操作数据库配置的文件名称都是这个。

<?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>
    <!--  如果不配置db.properties,下面的连接池可直接定义driver,url,username,password  -->
    <properties resource="db.properties"></properties>
    <!--  包的类型别名,配置完后,该包下所有类的别名都默认是自己的类名  -->
    <typeAliases>
        <package name="com.zpwd.pojo"/>
        <!--    自定义单个包下其中的一个类的别名      -->
        <!--    <typeAlias type="com.zpwd.pojo.Emp" alias="Emp"></typeAlias>      -->
    </typeAliases>
    <!--数据源配置  这块用 Oracle数据库 -->
    <environments default="development">
        <environment id="development">
            <transactionManager type="jdbc"/>
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driverClassName}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
            </dataSource>
        </environment>
    </environments>
    <!--  mapper映射器,配置持久层的包(以前是dao,现在叫mapper,就是持久层) -->
    <!--    -->
    <mappers>
        <package name="com.zpwd.mapper"></package>
    </mappers>
</configuration>

注意点:

4.创建一个Java bean

注意:类名称和属性一定要与数据库中的表名称和字段名称一一对应。
自己补全getter() 、setter()方法(alt+insert)
java bean代码

package com.zpwd.pojo;

import java.util.Date;

public class Zpwd {
    private Integer empno;
    private String ename;
    private String job;
    private Integer mgr;
    private Date hiredate;
    private double sal;
    private double comm;
    private Integer deptno;
}

5.创建一个mapper包,该包可以认为是代替dao的包。

dao模式:一个接口,一个实现类
mapper:一个接口,一个对应的.xml文件(接口名和xml文件名称必须完全一致
接口写的是查询规则,根据人员ID查询一条,查询全部数据,根据条件查询返回雇员信息集合
!!!该框架下如果形参为两个以上的条件,必须使用对象,换句话说,不接受两个及以上的形参。
ZpwdMapper.java

public interface ZpwdMapper {

    Zpwd serchByEmpno(Integer empno);

    List<Zpwd> serchAll();

    List<Zpwd> serchByDeptnoSal(Zpwd zpwd);
}

ZpwdMapper.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">
<mapper namespace="com.zpwd.mapper.ZpwdMapper">
    <select id="serchByEmpno" parameterType="Integer" resultType="Zpwd">
        select * from zpwd where empno = #{value}
    </select>
    <!--  返回值为list或set集合时,需要写泛型(与map不同)  -->
    <select id="serchAll" resultType="Zpwd">
        select * from zpwd
    </select>
    <select id="serchByDeptnoSal" parameterType="Zpwd" resultType="Zpwd">
        select * from zpwd where deptno = #{deptno} and sal > #{sal}
    </select>
</mapper>

注意点:

<?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">

如果记不住该头部,从别的位置复制过来,要记住修改三个位置。小写mapper,开头大写Mapper,小写mapper这三个要修改好。

上一篇下一篇

猜你喜欢

热点阅读