1, mybatis entry

项目中一直使用mybatis,一直在用,但是原理不甚了解,最近抽时间深入学习下,准备写一系列mybatis文章,记录下。

First, what mybatis that?

mybatis is persistence framework. What is persistence? It can be simply understood: the state of the memory of a moment of persistence to a file (photo is to state a certain moment the record). Framework is to abstract out repetitive work, we only focus on business logic can be developed. Specific and detailed explanation is not nagging, we can focus on the official website of the mybatis ; in fact, learn a new curriculum is recommended that you go to the official website to learn, but some of the document's official website is to be commended.

Two, mybatis entry

Any one technology we are learning to use it to achieve under helloworld. I use that idea (2019.1.3) + maven (3.6.0 ) + jdk (1.8) project built.
github
Code Directory
use mybatis two ways: 1, using the xml configuration. 2, pure java configuration (no xml)
POM configuration can run the project as follows:

    <!--mysql驱动-->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.17</version>
    </dependency>
    <!--mybatis-->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.5.4</version>
    </dependency>

1, using the xml configuration

The above picture shows the code using mybatis mainly those core composition:
①model; ②Mapper; ③Mapper.xml (non-essential); ④mybatis-config.xml (core profile)
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>
    <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://127.0.0.1:3306/test?serverTimezone=UTC"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="mapper/UserMapper.xml"/>
        <mapper class="org.imzdong.study.mybatis.domain.AnnotationUserMapper" />
    </mappers>
</configuration>

starting program:

package org.imzdong.study.mybatis.demo;

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.imzdong.study.mybatis.domain.AnnotationUserMapper;
import org.imzdong.study.mybatis.domain.User;
import org.imzdong.study.mybatis.domain.XmlUserMapper;

import java.io.IOException;
import java.io.InputStream;

/**
 * @description: xml配置mybatis
 * @author: Winter
 * @time: 2020/4/6
 */
public class XmlMyBatisDemo {

    public static void main(String[] args) {
        String resource = "mybatis-config.xml";
        try {
            InputStream resourceAsStream = Resources.getResourceAsStream(resource);
            SqlSessionFactory build = new SqlSessionFactoryBuilder().build(resourceAsStream);
            try (SqlSession session = build.openSession()) {
                //User user = session.selectOne("org.imzdong.study.mybatis.domain.UserMapper.selectUserById", 1);
                XmlUserMapper mapper = session.getMapper(XmlUserMapper.class);
                User user = mapper.selectUserById(1);
                System.out.println("user: "+user);
                AnnotationUserMapper annotationMapper = session.getMapper(AnnotationUserMapper.class);
                User userAnnotation = annotationMapper.selectUserById(1);
                System.out.println("userAnnotation: "+userAnnotation);
            }

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

It's that simple.

2, pure java configuration easier, we feel put under the code:

package org.imzdong.study.mybatis.demo;

import com.mysql.cj.jdbc.MysqlDataSource;
import org.apache.ibatis.mapping.Environment;
import org.apache.ibatis.session.Configuration;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.apache.ibatis.transaction.TransactionFactory;
import org.apache.ibatis.transaction.jdbc.JdbcTransactionFactory;
import org.imzdong.study.mybatis.domain.AnnotationUserMapper;
import org.imzdong.study.mybatis.domain.User;


/**
 * @description: 非xml配置mybatis
 * @author: Winter
 * @time: 2020/4/6
 */
public class JavaConfigMyBatisDemo {

    public static void main(String[] args) {
        //1、获取mysql数据库连接
        String url = "jdbc:mysql://127.0.0.1:3306/test?serverTimezone=UTC";
        String userName = "root";
        String password = "root";
        MysqlDataSource dataSource = new MysqlDataSource();
        dataSource.setUrl(url);
        dataSource.setUser(userName);
        dataSource.setPassword(password);
        //2、构建事务管理工厂
        TransactionFactory transactionFactory = new JdbcTransactionFactory();
        //3、构造环境
        Environment environment = new Environment("development", transactionFactory, dataSource);
        //4、初始化配置
        Configuration configuration = new Configuration(environment);
        configuration.addMapper(AnnotationUserMapper.class);
        //configuration.addMapper(XmlUserMapper.class);
        //5、获取SqlSessionFactory
        SqlSessionFactory build = new SqlSessionFactoryBuilder().build(configuration);
        try (SqlSession session = build.openSession()) {
            AnnotationUserMapper annotationMapper = session.getMapper(AnnotationUserMapper.class);
            User userAnnotation = annotationMapper.selectUserById(1);
            System.out.println("userAnnotation: "+userAnnotation);
            /*XmlUserMapper mapper = session.getMapper(XmlUserMapper.class);
            User user = mapper.selectUserById(1);
            System.out.println("user: "+user);*/
        }
    }
}

3 Summary

Demo from java configuration, seen in detail, step MyBatis database connections, transaction control, initialization configuration, obtain a SqlSessionFactory, can operate the database is very simple. mybatis jdbc package repetitive operations, such as starting the connection, the connection is closed, the transaction, so that the developer only get through these duplicate work configuration.

Guess you like

Origin www.cnblogs.com/imzdong/p/12649837.html