美文网首页
MyBatis环境搭建

MyBatis环境搭建

作者: JBryan | 来源:发表于2020-05-03 21:14 被阅读0次

1、新建maven项目

File-->New-->Project


NewProject.jpg

左侧选择maven,然后点击Next


maven.jpg
输入项目名和包名,然后点击Next
项目名.jpg

点击finish,完成搭建maven项目


finish.jpg

2、添加maven依赖

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.ljessie</groupId>
  <artifactId>mybatis-demo</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  
  <dependencies>
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.4.6</version>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.16</version>
    </dependency>
  </dependencies>
    <build>
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
            </resource>
        </resources>
    </build>
  
</project>

3、mybatis-config配置文件

src\main\resources文件夹下,新建dbconfig.properties

jdbc.driver = com.mysql.cj.jdbc.Driver
jdbc.url = jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT
jdbc.username = root
jdbc.password = 123456

还是在resources文件夹下,新建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="dbconfig.properties"></properties>
    <!--
    settings包含了很多重要的设置项
        mapUnderscoreToCamelCase:开启驼峰命名
        logImpl:开启控制台打印sql语句
    -->
    <settings>
        <setting name="mapUnderscoreToCamelCase" value="true"/>
        <setting name="logImpl" value="STDOUT_LOGGING" />
<!--        开启延迟加载-->
        <setting name="lazyLoadingEnabled" value="true"/>
        <setting name="aggressiveLazyLoading" value="false"/>
        
<!--        开启二级缓存-->
        <setting name="cacheEnabled" value="true"/>
    </settings>
<!--
别名处理器,可以为Java类型取别名,别名不区分大小写
1、typeAlias:为每个类起一个别名
2、package:为包下的所有类批量起别名
    name:指定包名,当前包下的所有类都起一个默认名(类名首字母小写)
3、@Alias注解给某个类起别名
-->
    <typeAliases>
        <package name="com.ljessie.mybatisdemo"/>
<!--        <typeAlias type="com.ljessie.mybatisdemo.entity.Student" alias="Student"/>-->
<!--        <typeAlias type="java.lang.Integer" alias="Integer"/>-->
<!--        <typeAlias type="java.lang.Long" alias="Long"/>-->
<!--        <typeAlias type="java.util.HashMap" alias="HashMap"/>-->
<!--        <typeAlias type="java.util.LinkedHashMap" alias="LinkedHashMap"/>-->
<!--        <typeAlias type="java.util.ArrayList" alias="ArrayList"/>-->
<!--        <typeAlias type="java.util.LinkedList" alias="LinkedList"/>-->
    </typeAliases>
<!--
mybatis可以配置多个环境
environment:配置一个具体的环境信息,transactionManager和dataSource必须有,default指定使用哪种环境,可以达到快速切换
    transactionManager:配置事务管理器,type:事务管理器的类型
    dataSource:数据源
        type:UNPOOLED,不适用连接池;POOLED,使用连接池;JNDI。
        自定义数据源:实现DataSourceFactory接口,type是全类名。
-->
  <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>
<!--    将sql映射注册到全局配置中-->
  <mappers>
<!--
注册一个sql映射
    resource:引用类路径下的资源
    class:直接引用接口
        推荐比较重要的Dao接口,来写sql映射文件;不重要的Dao接口,使用注解
-->
<!--      package:批量注册-->
      <package name="com.ljessie.mybatisdemo.dao"/>
  </mappers>  
</configuration>

4、数据准备

新建表student

CREATE TABLE `student` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  `department_id` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
)

5、SqlSession工具类

src\main\java文件夹下,新建com.ljessie.mybatisdemo包,然后新建SqlSessionUtil.java

package com.ljessie.mybatisdemo;

import java.io.IOException;
import java.io.InputStream;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class SqlSessionUtil {
    private static SqlSessionFactory factory;
    static {
        String resource = "mybatis-config.xml";
        InputStream inputStream;
        try {
            inputStream = Resources.getResourceAsStream(resource);
            factory = new SqlSessionFactoryBuilder().build(inputStream);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    
    public static SqlSession getSqlSession() {
        return factory.openSession();
    }
}

6、数据库访问接口及映射文件

新建com.ljessie.mybatisdemo.entity包
新建实体类Student.java

package com.ljessie.mybatisdemo.entity;

import java.io.Serializable;

public class Student implements Serializable {
    private int id;
    private String name;
    private int age;
    
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }

    public Student() {
    }

    public Student(int id,String name, int age) {
        this.id = id;
        this.name = name;
        this.age = age;
    }

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

    public int getAge() {
        return age;
    }

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

新建com.ljessie.mybatisdemo.dao包
新建StudentDao.java

public interface StudentDao {
     Student findStudentByID(int id);
}

com.ljessie.mybatisdemo.dao包下新建StudentDao.xml。
这里xml文件和上面定义的接口文件的文件名必须一样,mapper标签下namespace属性必须是接口的全类名。

<?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.ljessie.mybatisdemo.dao.StudentDao">
<!--    Student findStudentByID(String ID);-->
    <select id="findStudentByID" resultType="Student">
        select * from student where id = #{ID}
    </select>
</mapper>

7、新建测试类

StudentTest.java

package com.ljessie.mybatisdemo;


import com.ljessie.mybatisdemo.dao.StudentDao;
import com.ljessie.mybatisdemo.entity.Student;
import org.apache.ibatis.session.SqlSession;

public class StudentTest {
    
    public static void main(String[] args) {
        SqlSession sqlSession = null;
        try {
            sqlSession = SqlSessionUtil.getSqlSession();

            StudentDao mapper = sqlSession.getMapper(StudentDao.class);

            Student student = mapper.findStudentByID(4);
            System.out.println(student);

            sqlSession.commit();
        } catch(Exception e) {
            e.printStackTrace();
        }
        finally {
            sqlSession.close();
        }
    }
}

控制台输出

C:\develop_tools\Java\jdk1.8.0_201\bin\java.exe -Dvisualvm.id=481201014905700 -javaagent:C:\develop_tools\idea\lib\idea_rt.jar=64858:C:\develop_tools\idea\bin -Dfile.encoding=UTF-8 -classpath C:\develop_tools\Java\jdk1.8.0_201\jre\lib\charsets.jar;C:\develop_tools\Java\jdk1.8.0_201\jre\lib\deploy.jar;C:\develop_tools\Java\jdk1.8.0_201\jre\lib\ext\access-bridge-64.jar;C:\develop_tools\Java\jdk1.8.0_201\jre\lib\ext\cldrdata.jar;C:\develop_tools\Java\jdk1.8.0_201\jre\lib\ext\dnsns.jar;C:\develop_tools\Java\jdk1.8.0_201\jre\lib\ext\jaccess.jar;C:\develop_tools\Java\jdk1.8.0_201\jre\lib\ext\jfxrt.jar;C:\develop_tools\Java\jdk1.8.0_201\jre\lib\ext\localedata.jar;C:\develop_tools\Java\jdk1.8.0_201\jre\lib\ext\nashorn.jar;C:\develop_tools\Java\jdk1.8.0_201\jre\lib\ext\sunec.jar;C:\develop_tools\Java\jdk1.8.0_201\jre\lib\ext\sunjce_provider.jar;C:\develop_tools\Java\jdk1.8.0_201\jre\lib\ext\sunmscapi.jar;C:\develop_tools\Java\jdk1.8.0_201\jre\lib\ext\sunpkcs11.jar;C:\develop_tools\Java\jdk1.8.0_201\jre\lib\ext\zipfs.jar;C:\develop_tools\Java\jdk1.8.0_201\jre\lib\javaws.jar;C:\develop_tools\Java\jdk1.8.0_201\jre\lib\jce.jar;C:\develop_tools\Java\jdk1.8.0_201\jre\lib\jfr.jar;C:\develop_tools\Java\jdk1.8.0_201\jre\lib\jfxswt.jar;C:\develop_tools\Java\jdk1.8.0_201\jre\lib\jsse.jar;C:\develop_tools\Java\jdk1.8.0_201\jre\lib\management-agent.jar;C:\develop_tools\Java\jdk1.8.0_201\jre\lib\plugin.jar;C:\develop_tools\Java\jdk1.8.0_201\jre\lib\resources.jar;C:\develop_tools\Java\jdk1.8.0_201\jre\lib\rt.jar;C:\workspace\mybatis-demo\target\classes;C:\Users\zbw\.m2\repository\org\mybatis\mybatis\3.4.6\mybatis-3.4.6.jar;C:\Users\zbw\.m2\repository\mysql\mysql-connector-java\8.0.16\mysql-connector-java-8.0.16.jar;C:\Users\zbw\.m2\repository\com\google\protobuf\protobuf-java\3.6.1\protobuf-java-3.6.1.jar com.ljessie.mybatisdemo.StudentTest
Logging initialized using 'class org.apache.ibatis.logging.stdout.StdOutImpl' adapter.
PooledDataSource forcefully closed/removed all connections.
PooledDataSource forcefully closed/removed all connections.
PooledDataSource forcefully closed/removed all connections.
PooledDataSource forcefully closed/removed all connections.
Created connection 1863932867.
Returned connection 1863932867 to pool.
Cache Hit Ratio [com.ljessie.mybatisdemo.dao.StudentDao]: 0.0
Opening JDBC Connection
Checked out connection 1863932867 from pool.
Setting autocommit to false on JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@6f195bc3]
==>  Preparing: select * from student where id = ? 
==> Parameters: 4(Integer)
<==    Columns: id, name, age, department_id
<==        Row: 4, 张三, 25, 2
<==      Total: 1
Student{id=4, name='张三', age=25, department=null}
Resetting autocommit to true on JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@6f195bc3]
Closing JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@6f195bc3]
Returned connection 1863932867 to pool.

Process finished with exit code 0

相关文章

网友评论

      本文标题:MyBatis环境搭建

      本文链接:https://www.haomeiwen.com/subject/bdujghtx.html