mybatis入门笔记

原始JDBC方式

package org.example;

import org.example.domain.User;

import java.sql.*;
import java.util.ArrayList;

public class App {
    static Connection conn = null;
    static PreparedStatement stmt = null;
    static ResultSet rs = null;
    public static void main( String[] args ) {
        ArrayList<User> users = new ArrayList<User>();
        try {
            //注册mysql驱动
            Class.forName("com.mysql.jdbc.Driver");
            String url = "jdbc:mysql://localhost:3306/mybatis";
            String username = "root";
            String password = "123456";
            //创建连接对象
            conn = DriverManager.getConnection(url, username, password);
            String sql = "select * from user";
            //创建prepareStatement(线程安全),Statement(线程不安全)
            stmt = conn.prepareStatement(sql);
            rs = stmt.executeQuery();
            //遍历结果集
            while(rs.next()){
                User user = new User();
                user.setNo(rs.getInt("uno"));
                user.setName(rs.getString("uname"));
                user.setEmail(rs.getString("email"));
                users.add(user);
            }
            users.forEach(u -> System.out.println(u));
        } catch (ClassNotFoundException | SQLException e) {
            e.printStackTrace();
        }finally {
            if(rs != null){
                try {
                    rs.close();
                } catch (SQLException throwables) {
                    throwables.printStackTrace();
                }
            }
            if(stmt != null){
                try {
                    stmt.close();
                } catch (SQLException throwables) {
                    throwables.printStackTrace();
                }
            }
            if(conn != null){
                try {
                    conn.close();
                } catch (SQLException throwables) {
                    throwables.printStackTrace();
                }
            }
        }

    }
}

mybatis入门

1. 导入jar包
mybatis入门笔记
2. 在pom.xml中加入maven插件
mybatis入门笔记
3. 创建实体类 User
4. 创建dao 接口UserDao
mybatis入门笔记

5. 编写mapper.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="org.example.dao.UserDao">
    <select id="selectUsers" resultType="org.example.domain.User">
        select * from user;
    </select>
    <insert id="insertUser">
        insert into user values(#{uno},#{uname},#{email})
    </insert>
</mapper>

mybatis入门笔记

tips: 一般将mapper.xml文件放在与UserDao同一目录中,并且名称与dao接口相同.

6. 编写核心配置文件

<?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="jdbc.properties"></properties>
    <settings>
        <setting name="logImpl" value="STDOUT_LOGGING"/>
    </settings>
    <environments default="operate">
        <environment id="operate">
            <!--
            transactionManager:Mybatis提交事务,回滚事物的方式。
                type:事物的类型
                    1) JDBC: 表示mybatis底层是调用JDBC中的Connection对象的,commit,rollback
                    2) MANAGED: 把mybatis事务处理委托给其他的容器(一个服务器软件,一个框架(Spring))
-->
            <transactionManager type="JDBC"></transactionManager>
            <!--
            dataSource:
                type: 指定数据源的类型。
                    1): 使用连接池,mybatis会创建PooledDataSource类
                    2): 不适用连接池,在每次执行sql语句,先创建连接,执行sql,在关闭连接
                        mybatis会创建一个UnPooledDataSource,管理Connection对象的使用
                    3): java命名和目录服务(windows注册表)
-->
            <dataSource type="POOLED">
                <property name="driver" value="${driver}"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <!--
         使用package加载mapper.xml:这个包的所有xml文件一次都加载给mybatis
         要求:
                1.mapper文件名需要和接口名称一样,区分大小写
                2.mapper文件和dao接口需要在同一目录
                <package name="org.example.dao"/>
         -->
        <mapper resource="org/example/dao/UserDao.xml"></mapper>
    </mappers>
</configuration>

7. 创建测试类
mybatis入门笔记

上一篇:php – 为什么我收到“数据转换或数据映射错误.在简单的DB2 select语句中,SQLCODE = -802“?


下一篇:03-JDBC的事务机制