• MyBatis学习-入门篇


    一、MyBatis 介绍

    MyBatis 是支持普通的 SQL 查询,存储过程和高级映射的优秀持久层框架,可以进行更为细致的 SQL 优化,减少查询字段。几乎消除了所有的 JDBC 代码和参数的手工设置以及对结果集的检索。MyBatis 可以使用简单的 XML 或注解用于配置和原始映射,将接口和 Java 的 POJO (Plain Old Java Objects,普通的 Java 对象) 映射成数据库中的记录。

    二、如何使用 MyBatis

    我这里使用的 maven,所有目录也是基于 maven 的目录结构来说的。

    1. 所需的 JAR 包

    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.38</version>
    </dependency>
    
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.3.0</version>
    </dependency>
            
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.17</version>
    </dependency>

    2. 创建数据库表

    CREATE TABLE person (
      personId int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
      nickName varchar(200) DEFAULT NULL COMMENT '姓名',
      age int(11) DEFAULT NULL COMMENT '年龄',
      sex int(11) DEFAULT NULL COMMENT '性别',
      birthday timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '出生日期',
      PRIMARY KEY (personId)
    ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;

    3. 创建一个实体类 Person.java

    package com.enh.bean;
    
    import java.util.Date;
    
    public class PersonBean {
    
        private Integer personId;
        
        private String nickName;
        
        private Integer age;
        
        private Integer sex;
        
        private Date birthday;
        
        public PersonBean() {
        }
        public PersonBean(String nickName, Integer age,
                Integer sex, Date birthday) {
            super();
            this.nickName = nickName;
            this.age = age;
            this.sex = sex;
            this.birthday = birthday;
        }
        public Integer getPersonId() {
            return personId;
        }
        public void setPersonId(Integer personId) {
            this.personId = personId;
        }
        ... get() set() 方法
    public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } @Override public String toString() { return "PersonBean [personId=" + personId + ", nickName=" + nickName + ", age=" + age + ", sex=" + sex + ", birthday=" + birthday + "]"; } }

    4. 创建Dao层接口类 PersonMapper.java

    package com.enh.mapper;
    
    import com.enh.bean.PersonBean;
    
    public interface PersonMapper {
    
        /**
         * @Description: 新增
         * @Author: 
         * @CreateTime: 
         * @param personBean
         * @return
         * @throws Exception
         */
        public Integer insert(PersonBean personBean) throws Exception;
    
    }

    5. 在 classpath 下创建 MyBatis 映射文件 com/enh/mapper/PersonMapper.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="com.enh.mapper.PersonMapper">
        
        <insert id="insert" useGeneratedKeys="true" keyProperty="id" parameterType="personBean">
            INSERT INTO 
                person (
                    nickName,
                    age,
                    sex,
                    birthday
                ) VALUES (
                    #{nickName},
                    #{age},
                    #{sex},
                    #{birthday}
                )
        </insert>
        
    </mapper>

    6. 在classpath下创建 MyBatis 配置文件 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="application.properties"></properties>
        
        <!-- 为Java Bean起别名 -->
        <typeAliases>
            <typeAlias alias="personBean" type="com.enh.bean.PersonBean" />
        </typeAliases>
    
        <!-- 配合MyBatis运行环境 -->
        <environments default="cybatis">
            <environment id="cybatis">
                <!-- 使用JDBC的提交和回滚来管理事物 -->
                <transactionManager type="JDBC"/>
                
                <!-- mybatis提供了三种数据源类型,分别是 POOLED UNPOOLED JNDI -->
                <!-- POOLED 表示支持JDBC数据源连接池 -->
                <!-- UNPOOLED 表示不支持数据源连接池 -->
                <!-- JNDI 表示支持外部数据源连接池 -->
                <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="com/enh/mapper/PersonMapper.xml" />
        </mappers>
        
    </configuration>

    7. 在 classpath 路径下创建参数集文件 application.properties

    jdbc.driver=com.mysql.jdbc.Driver
    jdbc.url=jdbc:mysql://127.0.0.1:3306/erim
    jdbc.username=root
    jdbc.password=root

    8. 需要建立一个初始化 SqlSession 的工具类

    package com.enh.common;
    
    import java.io.Reader;
    
    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 DBTools {
    
        public static SqlSessionFactory sessionFactory;
        
        static {
            try {
                // 使用MyBatis的Resources类加载配置文件
                Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
                // 构建SessionFactory实例
                sessionFactory = new SqlSessionFactoryBuilder().build(reader);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        
        public static SqlSession getSqlSession() {
            return sessionFactory.openSession();
        }
    }

    9. 测试

    public static void main(String[] args) {
        SqlSession sqlSession = null;
        try {
            // 获取sqlSession
            sqlSession = DBTools.getSqlSession();
            PersonMapper personMapper = sqlSession.getMapper(PersonMapper.class);
            PersonBean personBean = new PersonBean("张三", 18, 1, new Date());
            personMapper.insert(personBean);
            System.out.println(personBean.toString());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }    
  • 相关阅读:
    USACO 玛丽卡(最短路+枚举)
    POJ 1161 Walls(最短路+枚举)
    Windows 上配置Docker Desktop 的k8s
    菜鸡学算法--70. 爬楼梯
    CLR 异步函数
    【.NET Core开发实战学习笔记】依赖注入框架:管理服务的依赖与生命周期
    【.NET Core 开发实战学习笔记】StartUp:理解程序的启动过程
    .ef core 多对对关系的关联方法
    HttpGet请求传递数组(集合)
    使用wkhtmltopdf工具生成pdf
  • 原文地址:https://www.cnblogs.com/libra0920/p/6208220.html
Copyright © 2020-2023  润新知