mybatis快速开始

Posted 影灵衣

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mybatis快速开始相关的知识,希望对你有一定的参考价值。

JDBC

传统的jdbc程序。

import java.sql.*;

public class Main {

    public static void main(String[] args){
        Connection connection = null;
        PreparedStatement preparedStatement = null;
        ResultSet resultSet = null;

        try {
            // 加载数据库驱动
            Class.forName("com.mysql.jdbc.Driver");
            // 通过驱动管理获取数据库连接
            connection = DriverManager.getConnection(
                    "jdbc:mysql://localhost:3306/demo_db",
                    "root",
                    "123456");
            // 获取预处理
            preparedStatement = connection.prepareStatement("select * from user_t where id = ?");
            // 设置参数
            preparedStatement.setString(1, "1001");
            // 执行查询语句
            resultSet = preparedStatement.executeQuery();
            // 遍历查询结果集
            while (resultSet.next()){
                System.out.println(resultSet.getString("name"));
            }

        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            //释放资源
            if(resultSet != null){
                try {
                    resultSet.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if(preparedStatement != null){
                try {
                    preparedStatement.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if(connection != null){
                try {
                    connection.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

Mybatis

使用mybatis做ORM映射的程序。

目录结构

.
├── build.gradle
├── settings.gradle
└── src/
    ├── main/
    │?? ├── java/
    │?? │?? └── com/
    │?? │??     └── yww/
    │?? │??         ├── dao/
    │?? │??         │?? └── UserDao.java
    │?? │??         ├── Main.java
    │?? │??         └── po/
    │?? │??             └── User.java
    │?? └── resources/
    │??     ├── com/
    │??     │?? └── yww/
    │??     │??     └── dao/
    │??     │??         └── user-mapper.xml
    │??     └── mybatis-config.xml
    └── test/
        ├── java/
        └── resources/

准备数据库

  • 设置账户:root
  • 设置密码:123456
DROP DATABASE demo_db;

CREATE DATABASE if NOT exists demo_db;
use demo_db;
create table if NOT exists user_t(
    id int auto_increment,
    name VARCHAR(10),
    passwd VARCHAR(20),
    PRIMARY KEY (id)
) engine=InnoDB;

INSERT INTO user_t(id, name, passwd)
VALUES
(1001, "admin", "123456"),
(1002, "yww", "123456");

SELECT * from user_t;

代码

  • build.gradle
plugins {
    id 'java'
}

group 'com.yww'
version '1.0-SNAPSHOT'

sourceCompatibility = 1.8

repositories {
    mavenCentral()
}

dependencies {
    compile "mysql:mysql-connector-java:5.1.48"
    compile "org.mybatis:mybatis:3.5.2"

    testCompile "junit:junit:4.12"
}

jar {
    from {
        configurations.runtime.collect{zipTree(it)}
    }
    manifest {
        attributes 'Main-Class': 'com.yww.Main'
    }
}
  • User.java

映射类

package com.yww.po;

public class User {
    private int id;
    private String name;
    private String passwd;

    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 String getPasswd() {
        return passwd;
    }

    public void setPasswd(String passwd) {
        this.passwd = passwd;
    }
}
  • UserDao.java

映射方法

package com.yww.dao;

import com.yww.po.User;

import java.util.List;

public interface UserDao {

    public void insert(User user);

    public User findUserById(int userId);

    public List<User> findALLUsers();
}
  • mybatis-config.xml

mybatis配置文件(文件名任意),这里主要配置了mysql的连接。

<?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.jdbc.Driver"/>
              <property name="url" value="jdbc:mysql://localhost:3306/demo_db"/>
              <property name="username" value="root"/>
              <property name="password" value="123456"/>

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

    <!-- 映射文件 -->
    <mappers>
        <mapper resource="com/yww/dao/user-mapper.xml"/>
    </mappers>

</configuration>
  • user-mapper.xml

映射配置文件。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"
        "http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">

<mapper namespace="com.yww.dao.UserDao">

    <select id="findUserById" resultType="com.yww.po.User">
      select * from user_t where id = #{id}
    </select>

</mapper>
  • Main.java

主函数展示如何使用mybatis。

package com.yww;

import com.yww.dao.UserDao;
import com.yww.po.User;
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.InputStream;

public class Main {

    public static void main(String[] args) throws Exception {

        InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        SqlSession sqlSession = sessionFactory.openSession();
        UserDao userMapper = sqlSession.getMapper(UserDao.class);
        User user = userMapper.findUserById(1001);
        System.out.println(user);
    }
}

以上是关于mybatis快速开始的主要内容,如果未能解决你的问题,请参考以下文章

Mybatis-Plus:快速开始(Spring + Mybatis + Mabatis-Plus)

Mybatis-Plus:了解Mybatis-Plus快速开始(Mybatis + Mybatis-Plus,Mybatis-Plus自动做了属性映射)

如何在idea中使用Mybatis-generator插件快速生成代码

mybatis快速开始

MyBatis-Plus学习——Springboot快速开始

c#代码片段快速构建代码