mybits入门案例

Posted wjune-0405

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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语句以及查询的类,使用代理模式,对该接口使用代理,后续操作主需要对代理对象进行访问,使用代理可以增强已有方法(理解为代理者是结构的下层,可以实现被代理者的方法并进行修改)

第五步第六步执行方法

 技术图片

技术图片

以上是关于mybits入门案例的主要内容,如果未能解决你的问题,请参考以下文章

(每天进步一点点)mybits连接池和tomcat线程配置

mybits distinct查询 出来的值 mybits怎么接收

推荐net开发cad入门阅读代码片段

MyBites的几点说明

MyBites别名使用

JSP+Servlet+Mybits小例子