zoukankan      html  css  js  c++  java
  • mybits入门案例

    1:mybatis的概述

    mybatis是一个持久层框架,用java编写的。
    它封装了jdbc操作的很多细节,使开发者只需要关注sql语句本身,而无需关注注册驱动,创建连接等繁杂过程
    它使用了ORM思想实现了结果集的封装。

    2:mybits入门案例:使用mybits进行最简单的查询(sql:select * from user)

    mybatis的环境搭建(使用xml方式)
    第一步:创建maven工程并导入坐标
    第二步:创建实体类和dao的接口
    第三步:创建Mybatis的主配置文件SqlMapConifg.xml
    第四步:创建映射配置文件IUserDao.xml

    环境搭建的注意事项:
    第一个:创建IUserDao.xml 和 IUserDao.java时名称是为了和我们之前的知识保持一致。
    在Mybatis中它把持久层的操作接口名称和映射文件也叫做:Mapper
    所以:IUserDao 和 IUserMapper是一样的
    第二个:在idea中创建目录的时候,它和包是不一样的
    包在创建时:com.itheima.dao它是三级结构
    目录在创建时:com.itheima.dao是一级目录
    第三个:mybatis的映射配置文件位置必须和dao接口的包结构相同
    第四个:映射配置文件的mapper标签namespace属性的取值必须是dao接口的全限定类名
    第五个:映射配置文件的操作配置(select),id属性的取值必须是dao接口的方法名

    当我们遵从了第三,四,五点之后,我们在开发中就无须再写dao的实现类。

    pom.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>cn.edu.hznu</groupId>
        <artifactId>mybatis01</artifactId>
        <version>1.0-SNAPSHOT</version>
        <packaging>jar</packaging>
        <dependencies>
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis</artifactId>
                <version>3.4.5</version>
            </dependency>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.6</version>
            </dependency>
            <dependency>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
                <version>1.2.12</version>
            </dependency>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.10</version>
            </dependency>
    
        </dependencies>
    
    </project>

    SqlMapConfig.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>
    <!--    配置环境-->
        <environments default="mysql">
    <!--        配置mysql环境-->
            <environment id="mysql">
    <!--            配置事务类型-->
                <transactionManager type="JDBC"></transactionManager>
    <!--            配置数据源(连接池)-->
                <dataSource type="POOLED">
                    <property name="driver" value="com.mysql.jdbc.Driver"/>
                    <property name="url" value="jdbc:mysql://localhost:3306/eesy_mybatis"/>
                    <property name="username" value="root"/>
                    <property name="password" value="199945"/>
                </dataSource>
            </environment>
        </environments>
    <!--    映射配置文件-->
        <mappers>
            <mapper resource="cn/edu/hznu/dao/IUserDao.xml"/>
        </mappers>
    </configuration>

    IUserDao.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="cn.edu.hznu.dao.IUserDao">
    <!--    配置查询索引-->
        <select id="findAll" resultType="cn.edu.hznu.domain.User">
            select * from user
        </select>
    </mapper>

    IUserDao.xml

    package cn.edu.hznu.dao;
    
    import cn.edu.hznu.domain.User;
    
    import java.util.List;
    
    /**
     * Created by wjj on 2020/3/28
     *
     * 用户的持久层忌口
     */
    public interface IUserDao {
        /*
         * 查询所有用户操作
         * */
        List<User>findAll();
    }

    mybatisTest

    package cn.edu.hznu.test;
    
    import cn.edu.hznu.dao.IUserDao;
    import cn.edu.hznu.domain.User;
    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 javax.annotation.Resource;
    import java.io.InputStream;
    import java.util.List;
    
    /**
     * Created by wjj on 2020/3/28
     */
    public class MybatisTest {
        /*
         * 入门案例
         * */
        public static void main(String[] args) throws  Exception{
            //1.读取配置文件
            InputStream in= Resources.getResourceAsStream("SqlMapConfig.xml");
            //2.创建sqlsessionfactory工厂
            SqlSessionFactoryBuilder builder=new SqlSessionFactoryBuilder();
            SqlSessionFactory factory=builder.build(in);
            //3.生产sqlsession对象
            SqlSession sqlSession=factory.openSession();
            //4.使用对象创建接口代理对象
            IUserDao userDao=sqlSession.getMapper(IUserDao.class);
            //5.使用代理对象执行操作
            List<User>users=userDao.findAll();
            for (User user:users){
                System.out.println(user);
            }
            //6、释放资源
            sqlSession.close();
            in.close();
        }
    }

    项目目录结构

    前三步都是为了sqlsession对象,因为sqlsession对象直接操作数据库,分三步,并采用不同的设计模式,是为了解耦合,并且提高灵活性

    第四步获得seesion对象后,通过接口类名获得对应的Mapper对象,mapper对象中有sql语句以及查询的类,使用代理模式,对该接口使用代理,后续操作主需要对代理对象进行访问,使用代理可以增强已有方法(理解为代理者是结构的下层,可以实现被代理者的方法并进行修改)

    第五步第六步执行方法

     

  • 相关阅读:
    马士兵_聊天系统_知识储备库
    最近一些情况
    JAVA坦克大战项目练习日4
    JAVA坦克大战项目练习日3
    JAVA坦克大战项目练习日2
    JAVA坦克大战项目练习日1
    课后实战String的一些细节
    Java从入门到精通之数组篇
    58_自定义标签打包以及使用自定义标签教程
    javaWeb安全篇(1)——防盗链技术的实现
  • 原文地址:https://www.cnblogs.com/wjune-0405/p/12592039.html
Copyright © 2011-2022 走看看