MyBatis:IDEA搭建MyBatis环境,详细讲解第一个MyBatis程序


     MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录,mybatis使用了ORM(Object Relational Mapping)思想,也就是对象关系模型,简单的说,就是把数据库表和实体类及实体类的属性对应起来,让我们可以操作实体类就实现了操作数据库表

     也就是说MyBatis就是用来代替JDBC的,由于MyBatis解决了JDBC比较死板的模式,将sql语句与java的逻辑代码分离,将sql写在了xml文件中,通过xml文件或者注解来调用数据库,方便灵活了很多,也高效了很多。

     之前在网上搜索搭建MyBatis的博客,发现讲解的很草率,搭建完环境后有很多异常,对于初学者来说,直接复制xml配置文件和properties文件,而不知道替换哪些东西,导致最后执行很多操作确报异常,出不了结果。这篇博客是分享给大家,同时也为自己做一个记录,以保证用的时候可以快速的搭建起一个MyBatis环境。

     循序渐进,先来看看快速简单的搭建

准备工作

首先需要导入mybatis的jar包和mysql连接驱动的jar包,这里已经上传到百度云盘:

链接:https://pan.baidu.com/s/1_f2gBpvR9eVKdFz3wboPeg
提取码:u50n

如果有Maven,直接引入依赖:

	mybatis的jar包:
	
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.4.1</version>
    </dependency>

	数据库连接驱动jar包:
	
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.15</version>
    </dependency>

既然要测试数据库,我们提前在数据库里面创建一些数据,建一个mybatis的数据库,里面存入一张表Student,插入三条数据即可。

//创建数据库
create database mybatis;

//创建表Student,分别创建了属性id,姓名,性别,email
crreate table Student(
	Sid int primary key,
	Sname varchar(20),
	Ssex char(10),
	Smail varchar(20))

//添加数据,随便插入三条数据
insert into Student values(1,'张三','男','33333');
insert into Student values(2,'李四','男','333332');
insert into Student values(3,'王红','男','11111');

建好后,就是这样一张表:
在这里插入图片描述

下来创建目录结构,为Student表创建一个类,因为数据库中映射出来的一条记录就是一个Student对象

在这里插入图片描述
对目录结构做简单说明:java是类和接口的根目录,resources是资源文件的根目录,写地址的时候都是从根目录下开始写。

创建Pojo类

pojo类就是数据库对应出来的实体类,提供一系列get/set方法
先写Student类,类的属性和数据库Student表的字段对应

public class Student {
    private int Sid;
    private String Sname;
    private String Ssex;
    private String Smail;

    public Student(int sid, String sname, String ssex, String smail) {
        Sid = sid;
        Sname = sname;
        Ssex = ssex;
        Smail = smail;
    }

    public Student() {

    }

    public int getSid() {
        return Sid;
    }

    public void setSid(int sid) {
        Sid = sid;
    }

    public String getSname() {
        return Sname;
    }

    public void setSname(String sname) {
        Sname = sname;
    }

    public String getSsex() {
        return Ssex;
    }

    public void setSsex(String ssex) {
        Ssex = ssex;
    }

    public String getSmail() {
        return Smail;
    }

    public void setSmail(String smail) {
        Smail = smail;
    }

    @Override
    public String toString() {
        return "Student{" +
                "Sid=" + Sid +
                ", Sname='" + Sname + '\'' +
                ", Ssex='" + Ssex + '\'' +
                ", Smail='" + Smail + '\'' +
                '}';
    }
}
映射接口

下面写映射接口StudnetMapper,在这里面定义sql功能的方法。
这里我们先来测试查询功能,所以只写一个查询方法

public interface StudentMapper {
    public Student getById(int id);
}
配置文件

接下来是配置文件
先来看看mybaits.xml文件,创建方法是直接新建txt文件,在后面加上后缀名.xml就可以创建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="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useUnicode=true?useUnicode=true&amp;characterEncoding=utf-8&amp;useSSL=false&amp;serverTimezone=UTC"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="StudentMapper.xml"/>
    </mappers>
</configuration>

注意这段xml文件要替换的地方:
在这里插入图片描述
相信写过JDBC都应该懂1,2,3,4的替换,这四个参数在配置JDBC的时候也会进行配置。下面对这几个参数进行说明:

  1. 加载驱动,这里是对类型进行加载,如果用的mysql用的是8.几版本,那么驱动和我一样,如果是5.几,应该是 com.mysql.jdbc.Driver
  2. url:这个是固定写法,mybatis是数据库名,问号后面是为了解决字符编码问题和时区问题,所加的东西,如果有报错,可以加上,关于这个问题,我在JDBC的时候做了讲解:
    JDBC讲解
  3. username:用户名
  4. passward: 密码
  5. 这个文件就是用来写sql的xml文件,文件放在resources资源根目录下,所以写的是相对路径。

StudentMapper映射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.tulun.dao.StudentMapper">
    <select id="getById" resultType="com.tulun.bean.Student">
      select * from Student where Sid = #{Sid}
    </select>
</mapper>

要替换的地方如下:
在这里插入图片描述

  1. 这里写的是刚才定义功能的接口地址,从java文件开始写绝对路径
  2. id写的是方法名,这个sql要对应哪个方法。
  3. 返回值类型,sql执行完成后,返回的类型是什么
  4. sql语句,根据不同的功能写上sql语句,这里是根据id查询学生记录
连接测试

最后写mybatis进行连接,测试:

public class mybatis {
    public static void main(String[] args) throws IOException {
        //全局配置文件
        String resource = "mybatis.xml";

        //读取配置文件
        InputStream inputStream = Resources.getResourceAsStream(resource);

        //创建sqlSesstionFactory
        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);

        //创建sqlSession
        SqlSession sqlSession = factory.openSession();

        //通过动态代理产生对象,获得映射
        StudentMapper mapper = sqlSession.getMapper(StudentMapper.class);

		//查询id为1的学生,打印从数据库拿到的学生信息
        Student student = mapper.getById(1);
        System.out.println(student);
    }
}

这里同样需要替换resource的路径,拿到配置文件后读取配置文件,创建会话,通过动态代理产生对象,从数据库映射得到Student对象,最后打印该对象,查看结果是否正确。

在这里插入图片描述
结果正确。

Log4j的配置

如果运行成功的话,为了以后更好的进行分析操作数据库的过程,所以需要去配置log4j打印日志。
在resources文件夹下创建log4j配置文件,文件名:log4j.properies
在这里插入图片描述
然后填入配置信息:

## debug 级别
log4j.rootLogger=DEBUG,Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.Target=System.out
log4j.appender.Console.layout = org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d{yyyy-MM-dd-HH\:mm\:ss,SSS} [%t]  [%c] [%p] - %m%n
log4j.logger.com.mybatis=DEBUG  /


##输出sql 语句
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG</strong>

这样在运行的时候就会有过程出来。
在这里插入图片描述
这样,log4j就配置完成了。

这就完成了第一个MyBatis环境的简单搭建,如果有什么错误或者问题,在评论区指出,我会及时进行解决。

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值