mybatis简介和项目创建 (一)

  • Post author:
  • Post category:其他




1.1 什么是框架?


软件的半成品,解决了软件开发过程当中的普适性问题

,从而简化了开发步骤,提供了开发的效率。



1.2 什么是ORM框架?

  • ORM(Object Relational Mapping)对象关系映射,将程序中的

    一个对象与表中的一行数据一一对应

  • ORM框架提供了持久化类与表的映射关系,在运行时参照映射文件的信息,

    把对象持久化到数据库中`

    转化
    数据库中   项目中
    表名 ==> 类名 
    列名 ==>属性 
    每一条数据 ==> 对象 
    持久化 ==>将对象永久保存到数据库中 
    
    ps:mybatis 属于dao 层 的框架
    
    



1.3 使用JDBC完成ORM操作的缺点?

  • 存在大量的冗余代码。
  • 手工创建 Connection、Statement 等。
  • 手工将结果集封装成实体对象。
  • 查询效率低,没有对数据访问进行过优化(Not Cache)。



二、MyBatis框架




2.1 概念



2.2 访问与下载

官方网站:

http://www.mybatis.org/mybatis-3/

中文网站:http://mybatis.net.com/ (中文网更详细一点)



三、构建Maven项目



3.1 新建项目(普通maven项目,不适用模板)

在这里插入图片描述



3.2 GAV坐标

在这里插入图片描述



3.3 添加依赖

 <!--依赖-->
    <dependencies>
        <!--MyBatis核心依赖-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.6</version>
        </dependency>

        <!--MySql驱动依赖-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.47</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>
            
</project>



3.4 目录展示

在这里插入图片描述



四、项目的搭建



项目目录


在这里插入图片描述

注意:创建com.huang.maven.mapper这个包时候有两种创建方法

  1. 一步一步创建
  2. “`com/huang/maven/mapper`创建方法
    在这里插入图片描述

    否则解析的时候target找不到UserMapper.xml的路径



4.1 创建数据库

在这里插入图片描述



4.2 定义实体类

package com.huang.maven.entity;

import org.omg.PortableServer.ServantLocator;

import java.io.Serializable;

/*Serializable序列化接口:*/
public class User implements Serializable {
    private String username;
    private  String password;
    private  String role;


    private  Integer uid;
    private  Integer phone;
    private  Integer statue;


    @Override
    public String toString() {
        return "User{" +
                "username='" + username + '\'' +
                ", password='" + password + '\'' +
                ", role='" + role + '\'' +
                ", uid=" + uid +
                ", phone=" + phone +
                ", statue=" + statue +
                '}';
    }

    public User() {
    }

    public User(String username, String password, String role, Integer uid, Integer phone, Integer statue) {
        this.username = username;
        this.password = password;
        this.role = role;
        this.uid = uid;
        this.phone = phone;
        this.statue = statue;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getRole() {
        return role;
    }

    public void setRole(String role) {
        this.role = role;
    }

    public Integer getUid() {
        return uid;
    }

    public void setUid(Integer uid) {
        this.uid = uid;
    }

    public Integer getPhone() {
        return phone;
    }

    public void setPhone(Integer phone) {
        this.phone = phone;
    }

    public Integer getStatue() {
        return statue;
    }

    public void setStatue(Integer statue) {
        this.statue = statue;
    }
}



4.3、定义Mapper 接口

ps:要根据具体的去定义接口和方法哦

package com.huang.maven.mapper;


public interface UserMapper {
    //查询 
    List<User> selectAllList();
}



4.4 编写UserMapper.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 = 所需实现的接口全限定名-->
<!--命名空间的路径没办法自动导出检查
1.查看路径是否写错
2.手打试试是否能成功
3.重新创建UserMapper.xml试试-->
<mapper namespace="com.huang.maven.entity.User">
    <select id="selectAllList" resultType="com.huang.maven.entity.User">
        select *
        from user
    </select>
</mapper>

4.5 编写核心配置文件 mapper-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>
    <environments default="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/ssmbuild?useUnicode"/>
                <property name="username" value="root"/>
                <property name="password" value="1234"/>
            </dataSource>
        </environment>

    </environments>

    <!--将mapper文件与核心配置文件进行关联-->
    <mappers>
        <mapper resource="com/huang/maven/mapper/UserMapper.xml"></mapper>
    </mappers>
</configuration>



4.5 .进行测试



之前没导入junit依赖的同学会报错哦

import com.huang.maven.entity.User;
import com.huang.maven.mapper.UserMapper;
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 org.junit.Test;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

public class Test01 {
    @Test
    //加载核心配置文件
    public void showInfo() throws IOException {
        InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
        SqlSessionFactory sf = new SqlSessionFactoryBuilder().build(is);
        //获取sqlSession对象
        SqlSession session = sf.openSession();
        List<User> userList = session.selectList("com.qf.mapper.UserMapper.selectAllList", User.class);
        System.out.println(userList); //关闭资源 session.close(); } }
    }


    @Test
    public void showInfo01() throws IOException { //加载核心配置文件
        InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
        SqlSessionFactory sf = new SqlSessionFactoryBuilder().build(is); //获取sqlSession对象
        SqlSession session = sf.openSession();
        UserMapper userMapper = session.getMapper(UserMapper.class);
        List<User> userList = userMapper.selectAllList();
        System.out.println(userList);
        session.close();
    }
}



扩展:如何构建模板:

黄黄的博客:


(46条消息) 如何在idear中创建一个自己想要的文件模板_谁是黄黄的博客-CSDN博客



问题:项目创建完成之后了几个问题

1.resources下的 组织编号和 java下的包名(组织编号)必须一样

2.解决不了mapper.xml存放在resources以外路径中的读取问题

3.日志依赖没有进行使用

4.书写效率低

那怎么解决这些问题?

欢迎观看黄黄的下一篇博客吧



版权声明:本文为weixin_43189971原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。