MyBatis初学(1),介绍及快速入门

MyBatis初学(1),介绍及快速入门

个人推荐学习MyBatis的时候看MyBatis的官网,官网有中文支持,初学使用完全足够了
下面的流程官网上均有说明
MyBatis官网https://mybatis.org/mybatis-3/zh/index.html

简介

MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

优点

1、与JDBC相比,减少了50%的代码量
2、 最简单的持久化框架,简单易学
3、SQL代码从程序代码中彻底分离出来,可以重用
4、提供XML标签,支持编写动态SQL
5、提供映射标签,支持对象与数据库的ORM字段关系映射

缺点

1、SQL语句编写工作量大,熟练度要高
2、数据库移植性比较差,如果需要切换数据库的话,SQL语句会有很大的差异

快速入门

1.使用IDEA创建一个Maven项目,Maven项目默认使用的是JDK5语法检测,可以修改为使用JDK8

<build>
	<plugins>
		<plugin>
			<groupId>org.apache.maven.plugins</groupId>
			<artifactId>maven-compiler-plugin</artifactId>
			<configuration>
				<source>8</source>
				<target>8</target>
			</configuration>
		</plugin>
	</plugins>
</build>

2.添加Maven依赖pom.xml

<!-- mybaits依赖 -->
	<dependency>
	    <groupId>org.mybatis</groupId>
	    <artifactId>mybatis</artifactId>
	    <version>3.5.4</version>
	</dependency>
	<!-- mysql驱动依赖 -->
	<dependency>
	    <groupId>mysql</groupId>
	    <artifactId>mysql-connector-java</artifactId>
	    <version>8.0.16</version>
	</dependency>
	<!-- 打印日志依赖,用来控制台输出SQL语句 -->
	<dependency>
	    <groupId>log4j</groupId>
	    <artifactId>log4j</artifactId>
	    <version>1.2.17</version>
	</dependency>
	<!-- 单元测试依赖,用来单元测试 -->
	<dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.13</version>
        <scope>test</scope>
    </dependency>

3.配置db.properties

jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://192.168.74.111:3306/demo?serverTimezone=UTC
jdbc.username=root
jdbc.password=123456

4.控制台打印SQL语句,配置log4j.properties

#全局日志配置
log4j.rootLogger=ERROR, stdout
#MyBatis日志配置
log4j.logger.包名=TRACE
#控制台输出
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

5.XML配置文件mybatis-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>
	<!--引入外部资源-->
    <properties resource="db.properties"></properties>
    <!--别名设置-->
    <typeAliases>
        <package name="实体类包的完全限定名"/>
    </typeAliases>
    <environments default="development">
        <environment id="development">   
            <transactionManager type="JDBC"/>       
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driver}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
		<package name="映射文件所在包的完全限定名"/>
    </mappers>  
</configuration>

6.创建数据库表对应的实体类和接口,使用的是学习的emp表

package com.yangqihang.bean;

import java.util.Date;

public class Emp {
    private Integer empno;
    private String ename;
    private String job;
    private Integer mgr;
    private Date hiredate;
    private Double sal;
    private Double comm;

	//省略Getter和Setter方法
	//省略toString方法
}

接口类

package com.yangqihang.mapper;

import com.yangqihang.bean.Emp;

public interface EmpMapper {
    Emp selectByEmpno(Integer empno);
}

6.XML映射文件配置EmpMapper.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.yangqihang.mapper.EmpMapper">
    <select id="selectByEmpno" resultType="com.yangqihang.bean.Emp">
        select * from emp where empno = #{empno}
    </select>
</mapper>

7.编写测试类

package com.yangqihang.mapper;

import com.yangqihang.bean.Emp;
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.After;
import org.junit.Before;
import org.junit.Test;

import java.io.InputStream;


public class EmpMapperTest {

    SqlSession sqlSession = null;
    EmpMapper mapper = null;

    @Before
    public void setUp() throws Exception {
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        sqlSession = sqlSessionFactory.openSession();
        mapper = sqlSession.getMapper(EmpMapper.class);
    }

    @After
    public void tearDown() throws Exception {
        sqlSession.commit();
        sqlSession.close();
    }

    @Test
    public void selectByEmpno() {
        Emp emp = mapper.selectByEmpno(7369);
        System.out.println(emp);
    }
}

项目结构
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值