简单创建一个MyBatis项目

本文介绍了MyBatis的基本概念和优点,它是一个基于Java的持久层框架,简化了JDBC中的模板化代码。文章详细讲解了如何创建一个MyBatis项目,包括下载jar包、配置MyBatis.xml、创建实体类、接口、SQL.xml以及编写测试。


MyBatis快速入门

一.MyBatis 简介

MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis,是一个基于Java的持久层框架。

  • 持久层: 可以将业务数据存储到磁盘,具备长期存储能力,只要磁盘不损坏,在断电或者其他情况下,重新开启系统仍然可以读取到这些数据。
  • 优点: 可以使用巨大的磁盘空间存储相当量的数据,并且很廉价
  • 缺点:慢(相对于内存而言)

为什么使用 MyBatis

在我们传统的 JDBC 中,我们除了需要自己提供 SQL 外,还必须操作 Connection、Statment、ResultSet,不仅如此,为了访问不同的表,不同字段的数据,我们需要些很多雷同模板化的代码,闲的繁琐又枯燥。

而我们在使用了 MyBatis 之后,只需要提供 SQL 语句就好了,其余的诸如:建立连接、操作 Statment、ResultSet,处理 JDBC 相关异常等等都可以交给 MyBatis 去处理,我们的关注点于是可以就此集中在 SQL 语句上,关注在增删改查这些操作层面上。

并且 MyBatis 支持使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

1.使用MyBatis

下载MyBatis所需要的jar包 打开链接https://github.com/mybatis/mybatis-3/releases
在这里插入图片描述
准备数据库并自己随机添加几条数据

CREATE TABLE `master` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '序号',
  `name` varchar(20) DEFAULT NULL COMMENT '登录名',
  `password` varchar(20) DEFAULT NULL COMMENT '密码',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8

创建MyBatis项目
在这里插入图片描述


a. 我们只是创建一个简单的普通项目,所以这里create from archetype 不用点,也不用选取其他模板,直接next就好了。

在这里插入图片描述

在这里插入图片描述
创建一个lib包导入MyBatis 的jar包
在这里插入图片描述
配置MyBatis.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="mydev">
        <!--    环境变量配置-->
        <environment id="mydev">
            <!--    事务管理器配置-->
            <transactionManager type="JDBC"/>
            <!--    数据源-->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/test"/> <!-- test为数据库名-->
                <property name="username" value="root"/> <!--   数据用户名-->
                <property name="password" value="123"/> <!-- 数据库密码-->
            </dataSource>
        </environment>
    </environments>

    <!--    映射到层的DogDao.xml配置文件-->
    <mappers>
        <!--<mapper resource="RuaMapper.xml"/>-->
        <package name="com.java.ym.dao"/>
        <!-- 这里使用的package跟接口层的层次需要一样 -->
    </mappers>
</configuration>

在这里插入图片描述

创建实体类

package com.java.ym.entity;

/**
 * @Author: YuMi
 * @Date: 2020/9/22 10:56
 * ----------------------
 * @Comments:
 */
public class Master {
    private Integer id;
    private String name;
    private String password;

    public Master() {
    }

    public Master(Integer id, String name, String password) {
        this.id = id;
        this.name = name;
        this.password = password;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPassword() {
        return password;
    }

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

    @Override
    public String toString() {
        return "Master{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}

创建接口

package com.java.ym.dao;

import com.java.ym.entity.Master;
import com.java.ym.entity.Pet;
import com.java.ym.entity.Rua;

import java.util.List;

/**
 * @Author: YuMi
 * @Date: 2020/9/21 14:59
 * ----------------------
 * @Comments:
 */
public interface RuaMapper {
/*    List<Rua> seletRua();

    int addRua(Rua rua);

    List<Rua> likeSelectRua(String name);

    List<Pet> selectPet(int pid);*/

    /**
     * 查询
     * @return
     */
    List<Master> selectMaster();
}

编写SQL.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.java.ym.dao.RuaMapper">
    <!--    查询-->
    <!--<select id="seletRua" resultType="com.java.ym.entity.Rua">
        select * from rua;
    </select>
    <insert id="addRua">
        <selectKey keyColumn="id" keyProperty="id" order="AFTER" resultType="int">
            select  LAST_INSERT_ID();
        </selectKey>
        INSERT INTO rua VALUES(null,#{name},#{age},#{love});
    </insert>

    <select id="likeSelectRua" parameterType="String" resultType="com.java.ym.entity.Rua">
        SELECT * FROM rua WHERE NAME LIKE '%${value}%'
    </select>-->

    <!-- Master   -->
    <!--
    id: 唯一标识符
    type: 对应实体类
    -->
    <resultMap id="masterResult" type="com.java.ym.entity.Master">
        <!--
        property: 实体类的属性名
        column: 数据库的字段名(可以不分大小写)
        -->
        <id property="id" column="id"/>
        <result property="name" column="name"/>
    </resultMap>
    <!--
    查询
    id: 跟接口里的方法名对应
    resultMap:  对应上面的resultMap的id
    -->
    <select id="selectMaster" resultMap="masterResult">
        SELECT id,name,password FROM MASTER
    </select>
    <!--<select id="selectPet" parameterType="int" resultType="com.java.ym.entity.Pet">
        select * from pet where pid=#{pid};
    </select>-->
</mapper>

在这里插入图片描述

创建MyBatisUtils工具类

package com.java.ym.utils;

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 java.io.IOException;
import java.io.InputStream;

/**
 * @Author: YuMi
 * @Date: 2020/9/23 19:18
 * ----------------------
 * @Comments:   MyBatis工具类
 */
public class MyBatisUtils {
    static SqlSessionFactory build;

    static {
        //  读取config表示配置文件
        InputStream inputStream;
        try {
            inputStream = Resources.getResourceAsStream("MyBatis.xml");
            //  创建SqlSessionFactoryBuilder对象,SqlSessionFactory接收
            build = new SqlSessionFactoryBuilder().build(inputStream);
            //  获取SqlSession对象,从SqlSessionFactory中获取SqlSession

        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     * 这里build.openSession(true) 括号里给true是自动提交事务
     * @return
     */
    public static SqlSession getSqlSession(){
        return build.openSession(true);
    }
}

测试

package com.java.ym;

import com.java.ym.dao.RuaMapper;
import com.java.ym.entity.Master;
import com.java.ym.entity.Pet;
import com.java.ym.entity.Rua;
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 java.io.IOException;
import java.io.InputStream;
import java.util.List;

/**
 * @Author: YuMi
 * @Date: 2020/9/21 15:04
 * ----------------------
 * @Comments:
 */
public class MyBatisRuaTest {
    public static void main(String[] args) throws IOException {
    // 这里运用了先前创建的MYBatisUtils工具类
        RuaMapper mapper = MyBatisUtils.getSqlSession().getMapper(RuaMapper.class);
        List<Master> masters = mapper.selectMaster();
        for (Master master:masters){
            System.out.println(master);
        }
    }
}

运行结果
在这里插入图片描述

好的,下面是创建一个简单MyBatis项目的步骤: 1. 首先创建一个Maven项目,选择创建一个Maven项目,然后填写GroupId和ArtifactId等信息,创建完成后在pom.xml文件中添加以下依赖: ``` <dependencies> <!--MyBatis--> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.6</version> </dependency> <!--MyBatis-Spring--> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>2.0.6</version> </dependency> <!--JDBC--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.23</version> </dependency> </dependencies> ``` 2. 在src/main/resources目录下创建一个mybatis-config.xml文件,用于配置MyBatis的全局属性和设置。 3. 创建一个数据源配置文件,比如application.properties,用于配置JDBC连接信息。 4. 在src/main/java创建一个包,用于存放Mapper接口和Mapper.xml文件。在该包下创建一个UserMapper接口和UserMapper.xml文件,具体代码如下: UserMapper.java ``` public interface UserMapper { //通过id查找用户信息 User getUserById(Integer id); } ``` 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"> <mapper namespace="com.example.mapper.UserMapper"> <resultMap id="BaseResultMap" type="com.example.entity.User"> <id column="id" property="id" jdbcType="INTEGER"/> <result column="username" property="username" jdbcType="VARCHAR"/> <result column="password" property="password" jdbcType="VARCHAR"/> </resultMap> <select id="getUserById" resultMap="BaseResultMap"> SELECT id, username, password FROM user WHERE id=#{id} </select> </mapper> ``` 5. 在Spring Boot应用程序中创建一个名为MyBatisConfig的配置类,用于加载MyBatis的配置文件和Mapper接口。 ``` @Configuration @MapperScan("com.example.mapper") public class MyBatisConfig { @Autowired private DataSource dataSource; @Bean public SqlSessionFactory sqlSessionFactory() throws Exception { SqlSessionFactoryBean sessionFactoryBean = new SqlSessionFactoryBean(); sessionFactoryBean.setDataSource(dataSource); ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver(); sessionFactoryBean.setMapperLocations(resolver.getResources("classpath*:mapper/*.xml")); return sessionFactoryBean.getObject(); } @Bean public SqlSessionTemplate sqlSessionTemplate() throws Exception { return new SqlSessionTemplate(sqlSessionFactory()); } } ``` 6. 创建一个Controller类,用于处理请求,并通过Autowired注解将UserMapper注入进来。 ``` @RestController @RequestMapping("/user") public class UserController { @Autowired private UserMapper userMapper; @GetMapping("/{id}") public User getUserById(@PathVariable("id") Integer id) { return userMapper.getUserById(id); } } ``` 7. 运行Spring Boot应用程序,访问http://localhost:8080/user/1,即可获取到id为1的用户信息。 这就是一个简单MyBatis项目创建步骤,希望对你有所帮助。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值