Mybatis入门,配置文件,运行环境配置,连接SQL serve数据库(IDEA)

Mybatis入门,配置文件,运行环境配置,连接SQL serve数据库(IDEA)

2020/9/14
使用mybatis的框架来查询所有的学生信息入门操作

1.使用maven来创建工程项目(不勾选模块)

1.新建项目
在这里插入图片描述
不勾选方框也可以进行下一步,下一步命名自己的工程名
在这里插入图片描述

然后点击完成,这样工程项目就创建好了。

2.在maven中使用pox.xml配置文件来配置要导入的包

(使用xml配置文件来导包就不需要将包下载,然后复制粘贴到项目中,导入包时如果报错标红可以点击idea上的这个按钮,这样就可以让idea帮你下载并且导入包)
在这里插入图片描述

导入包之前先声明导入包的类型

<packaging>jar</packaging>

先写一段这样的代码告诉要导入什么类型的包,这段表示要导入jar包,然后开始导包
1.第一个包mybatis的包

 <dependencies>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.5</version>
        </dependency>
    </dependencies>

2.在dependency标签中导入第二个包,SQL server数据库的jdbc驱动包

<dependency>
            <groupId>com.microsoft.sqlserver</groupId>
            <artifactId>mssql-jdbc</artifactId>
            <version>7.4.1.jre11</version>
        </dependency>

3.导入junit的包单元测试包

<dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>

4.导入log4j的包

<dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.12</version>
        </dependency>

当前入门项目导入当前的包就可以了

3.编写持久层的JavaBean对象和接口

在maven的src下的main包中的java目录下新建包

1.数据库学生信息表的javaBean对象

package cn.zsc.mybatis1.domain;

public class Student {
    
    
    private Integer id;         //学生id
    private String name;        //学生姓名
    private String gender;      //学生性别
    private Integer age;        //学生年龄
    private String address;     //学生籍贯
    private String qq;          //学生qq

    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 getGender() {
    
    
        return gender;
    }

    public void setGender(String gender) {
    
    
        this.gender = gender;
    }

    public Integer getAge() {
    
    
        return age;
    }

    public void setAge(Integer age) {
    
    
        this.age = age;
    }

    public String getAddress() {
    
    
        return address;
    }

    public void setAddress(String address) {
    
    
        this.address = address;
    }

    public String getQq() {
    
    
        return qq;
    }

    public void setQq(String qq) {
    
    
        this.qq = qq;
    }

    @Override
    public String toString() {
    
    
        return "Student{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", gender='" + gender + '\'' +
                ", age=" + age +
                ", address='" + address + '\'' +
                ", qq='" + qq + '\'' +
                '}';
    }
}

2.查询所有学生的信息的持久层接口

package cn.zsc.mybatis1.dao;

import cn.zsc.mybatis1.domain.Student;

import java.util.List;

public interface StudentDao {
    
    

    /***
     * 查询所有的学生信息并且返回到list集合的接口
     * @return
     */
    public List<Student> finAll();
}

4.配置mybatis的框架环境

在resources的目录中来创建mybatis的配置xml文件

1.直接点击新建—文件—文件名为log4j.properties的文件
(该文件是日志文件可以直接复制就行,就是必须要叫log4j.properties这个文件名)

# Set root category priority to INFO and its only appender to CONSOLE.
#log4j.rootCategory=INFO, CONSOLE            debug   info   warn error fatal
log4j.rootCategory=debug, CONSOLE, LOGFILE

# Set the enterprise logger category to FATAL and its only appender to CONSOLE.
log4j.logger.org.apache.axis.enterprise=FATAL, CONSOLE

# CONSOLE is set to be a ConsoleAppender using a PatternLayout.
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{ISO8601} %-6r [%15.15t] %-5p %30.30c %x - %m\n

# LOGFILE is set to be a File appender using a PatternLayout.
log4j.appender.LOGFILE=org.apache.log4j.FileAppender
log4j.appender.LOGFILE.File=d:\axis.log
log4j.appender.LOGFILE.Append=true
log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.LOGFILE.layout.ConversionPattern=%d{ISO8601} %-6r [%15.15t] %-5p %30.30c %x - %m\n


2.编写jdbc.properties文件
(因为我使用的是SQL server的数据库所有使用的是sqlserver的配置方式,其他数据库可以直接在百度上搜索)
使用sqlserver数据库的可以直接复制,但是文件名要为jdbc.properties

jdbc.driver=com.microsoft.sqlserver.jdbc.SQLServerDriver
jdbc.url=jdbc:sqlserver://localhost:1433;DatabaseName=User_student
jdbc.username=sa
jdbc.password=123456

记得改DatabaseName这个的属性值(根据自己的数据库名来决定)
3.接下来配置mybatis的主配置文件-----文件名mybatis-config.xml
(这个可以自己练一下手熟悉一下,后面可以直接使用idea的文件模板来生成,具体方法可以在百度上搜索)

文件名可以按照官方这样来起名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">

这个是主配置文件的文件约束一定要有

<properties resource="jdbc.properties"></properties>

这是加载jdbc.properties的配置文件

<environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"></transactionManager>
            <dataSource type="POOLED">

            </dataSource>
        </environment>
    </environments>

这是配置具体环境的标签,在environments标签的default属性和environment标签的id属性必须相同,使用官方的配置名development
transactionManager 标签表示使用的事务处理方式值为JDBC
dataSource 标签表示是否使用数据连接池值为POOLED
数据连接池的值有三种提供的值

            <!-- POOLED 表示支持JDBC数据源连接池 -->
            <!-- UNPOOLED 表示不支持数据源连接池 -->
            <!-- JNDI 表示支持外部数据源连接池 -->

接下来直接在datasourse标签标签体里来配置连接数据库的4个基本信息

<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>

上面就是配置mybatis的运行环境了。

接下来在environments的标签外来配置映射文件的xml文件
先创建一个映射文件xml文件来映射dao的接口,注意映射配置文件指的是每个dao独立的配置文件,映射xml文件的包位置一定要和dao的接口包位置一致,就是在resources目录下创建包结构和dao接口包结构一致。
mapper的映射文件

<?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指定要执行sql语句的接口-->
<mapper namespace="cn.zsc.mybatis1.dao.StudentDao">
    <!--配置查询所有学生-->
    <!--id表示数据访问层的方法     resultType表示sql语句查询结果映射为StudentBean对象类型-->
    <select id="findAll" resultType="cn.zsc.mybatis1.domain.Student">
        select * from Student;
    </select>
</mapper>

在主配置文件下添加mapper标签

<!--指定映射文件的位置-->
    <mappers>
        <mapper resource="cn/zsc/mybatis1/dao/StudentMapper.xml"></mapper>
    </mappers>

主配置文件全

<?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>
    <!--加载jdbc驱动的配置文件-->
    <properties resource="jdbc.properties"></properties>
    <!--配置环境-->
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"></transactionManager>
            <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>
        <mapper resource="cn/zsc/mybatis1/dao/StudentMapper.xml"></mapper>
    </mappers>
</configuration>

映射文件全

<?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指定要执行sql语句的接口-->
<mapper namespace="cn.zsc.mybatis1.dao.StudentDao">
    <!--配置查询所有学生-->
    <!--id表示数据访问层的方法     resultType表示sql语句查询结果映射为StudentBean对象类型-->
    <select id="findAll" resultType="cn.zsc.mybatis1.domain.Student">
        select * from Student;
    </select>
</mapper>

JDBC配置信息文件全(jdbc.properties)

jdbc.driver=com.microsoft.sqlserver.jdbc.SQLServerDriver
jdbc.url=jdbc:sqlserver://localhost:1433;DatabaseName=User_student
jdbc.username=sa
jdbc.password=123456

5.编写工具类

该工具类主要用来通过工厂类来获取sqlsession对象,通过sqlsession对象来对持久层接口进行增强,返回增强后的代理对象

package cn.zsc.mybatis1.utils;

import cn.zsc.mybatis1.dao.StudentDao;
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;

public class myBatisUtils {
    
    
	private SqlSession sqlSession=null;
	 /***
     * 获取代理对象
     * @return
     */
    public StudentDao getImpl() {
    
    
        //1.加载配置文件
        InputStream in = null;
        try {
    
    
            in = Resources.getResourceAsStream("mybatis-config.xml");
        } catch (IOException e) {
    
    
            e.printStackTrace();
        }
        //2.创建工厂类
        SqlSessionFactoryBuilder sqlSessionFactoryBuilder=new SqlSessionFactoryBuilder();
        SqlSessionFactory factory = sqlSessionFactoryBuilder.build(in);
        //3.通过工厂类来获取SqlSession对象
        sqlSession = factory.openSession();
        //4.通过SqlSession对象来对创建代理对象来增强接口,以实现StudentDao的接口
        StudentDao studentImpl = sqlSession.getMapper(StudentDao.class);
        return studentImpl;
    }
    /***
     * 关闭SQL session
     */
    public void close_SqlSession(){
    
    
        if (sqlSession!=null){
    
    
            sqlSession.close();
        }
    }
}

6.编写测试类来进行测试

在项目的test的目录下的java目录下来创建一个测试类

import cn.zsc.mybatis1.dao.StudentDao;
import cn.zsc.mybatis1.domain.Student;
import cn.zsc.mybatis1.utils.myBatisUtils;

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

public class MybatisTest {
    
    
    public static void main(String[] args){
    
    
        //1.创建工具对象以获取增强的代理对象
        myBatisUtils myBatisUtils=new myBatisUtils();
        StudentDao StudentDaoImpl = myBatisUtils.getImpl();
        //2.使用代理对象来调用方法
        List<Student> studentList = StudentDaoImpl.findAll();
        for (Student student : studentList) {
    
    
            System.out.println(student);
        }
       //5.关闭Sqlsession
      myBatisUtils.close_SqlSession();
    }
}

测试得到结果。

下面是文件目录的安排截图
在这里插入图片描述
注意事项
在这里插入图片描述

7.可以使用注解的方式来配置mapper

使用注解的方式来配置mapper就不需要创建mapper.xml的映射文件
直接在接口的方法上方使用注解就可以

import cn.zsc.mybatis.domain.Student;
import org.apache.ibatis.annotations.Select;

import java.util.List;

/***
 * 该接口里的方法不使用映射文件的方式而是使用注解的方式
 */
public interface StudentDao {
    
    
    @Select("select * from Student")
    public List<Student> findAll();
}

在上方加一个@Select()这样的注解,值为查询语句,如果要修改就是update注解,删除delete,插入insert。

注意如果使用注解的方式要记得修改主配置文件
(mybatis-config.xml),
将主配置文件mapper标签的属性改为class,值为接口的全限定类名

<!--如果使用注解的方式来实现映射配置文件就要使用class属性值为接口的全限定类名-->
    <mappers>
        <mapper class="cn.zsc.mybatis.Dao.StudentDao"></mapper>
    </mappers>

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Jackbillzsc/article/details/108584422