• mybatis入门


    1.MyBatis 概念

      1.1 MyBatis 简介

      MyBatis是一个可以自定义SQL、存储过程和高级映射的持久层框架。MyBatis避免了几乎所有的JDBC代码、
    手工设置参数和结果集重获。MyBatis只使用简单的XML 和注解来配置和映射基本数据类型、Map 接口和POJO
    到数据库记录。
      相对Hibernate和ApacheOJB等“一站式”ORM解决方案而言,Mybatis 是一种“半自动化”的ORM实现。

      1.2 MyBatis的特点

    1.简单易学:本身就很小且简单。没有任何第三方依赖,最简单安装只要两个jar文件+配置几个sql映射文件易于学习,           易于使用,通过文档和源代码,可以比较完全的掌握它的设计思路和实现
    2.灵活:mybatis不会对应用程序或者数据库的现有设计强加任何影响。 sql写在xml里,便于统一管理和优化。通过           sql基本上可以实现我们不使用数据访问框架可以实现的所有功能,或许更多。
    3.解除sql与程序代码的耦合:通过提供DAL层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更      易单元测试。sql和代码的分离,提高了可维护性。
    4.提供映射标签,支持对象与数据库的orm字段关系映射。
    5.提供对象关系映射标签,支持对象关系组建维护。
    6.提供xml标签,支持编写动态sql。 

    2. 入门程序搭建

      2.1 准备数据库和数据

     CREATE TABLE `aa`.`user`(    
         `id` INT NOT NULL ,     
         `name` VARCHAR(255) ,     
         `age` INT ,    
          PRIMARY KEY (`id`)  
        );
        INSERT INTO `user`(`id`,`name`,`age`) VALUES ( '1','aa','12');
        INSERT INTO `user`(`id`,`name`,`age`) VALUES ( '2','bb','13');
        INSERT INTO `user`(`id`,`name`,`age`) VALUES ( '3','cc','14');
        INSERT INTO `user`(`id`,`name`,`age`) VALUES ( '4','dd','15'); 

      2.2 创建一个maven工程,并导入mybatis核心包、依赖包以及mysql驱动

    <dependencies>
            <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis</artifactId>
                <version>3.4.5</version>
            </dependency>
            <!-- https://mvnrepository.com/artifact/log4j/log4j -->
            <dependency>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
                <version>1.2.17</version>
            </dependency>
            <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.38</version>
            </dependency>
      <!-- https://mvnrepository.com/artifact/junit/junit -->
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.12</version>
                <scope>test</scope>
            </dependency>
        </dependencies> 

       2.3 准备pojo实体类

    package com.sky.pojo;
    public class Dept{
         private Integer id;
         private String name;
      
    //省略set/get方法 }

      2.4 创建配置文件

        1.配置全局核心配置文件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中节点的位置是有先后顺序的-->
    <configuration>
        <!--配置别名,在mapper中可以直接使用别名-->
        <typeAliases>
            <typeAlias type="pojo.Dept" alias="Dept"/>
            <typeAlias type="pojo.Employee" alias="Employee"/>
        </typeAliases>
        <environments default="default">
            <environment id="default">
                <transactionManager type="JDBC"/>
                <dataSource type="POOLED">
                    <!-- 数据库连接信息-->
                    <property name="driver" value="com.mysql.jdbc.Driver"/>
                    <!--必须配置characterEncoding=UTF-8-->
                    <property name="url" value="jdbc:mysql://localhost:3306/ssh?characterEncoding=UTF-8"/>
                    <property name="username" value="root"/>
                    <property name="password" value="1111"/>
                </dataSource>
            </environment>
        </environments>
        <!--实体类的映射文件,在dao包下创建完Mapper文件后在此追加即可-->
        <mappers>
            <mapper resource="dao/DeptMapper.xml"/>
        </mappers>
    </configuration> 

        2.配置实体类对应的映射文件

    <?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">
    <!-- namespace:配置名称空间,对配置的statement进行分类管理,此时名称可以任意
    当使用Mapper代理时,namespace具有特殊的含义与功能-->
    <mapper namespace="DEPT">
        <!-- 插入语句:
            id:可以通过id找到执行的statement,statement唯一标识
            resultType:结果类型  -->
        <!-- 查询所有用户 -->
        <select id="getAllDept" resultType="com.sky.pojo.Dept">
            SELECT ID,NAME FROM DEPT
        </select>
    </mapper> 

        3.配置log4j.properties属性文件

    # For all other servers: Comment out the Log4J listener in web.xml to activate Log4J.
    log4j.rootLogger=DEBUG, stdout, 
    
    log4j.appender.stdout=org.apache.log4j.ConsoleAppender
    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
    log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n 

      3.测试

        @Test
        public void  test01() throws IOException {
            //1.加载核心全局配置文件
             InputStream inputStream = Resources.getResourceAsStream("SqlMapConfig.xml");
            //2.构建SqlSessionFactory对象:会话工厂
             SqlSessionFactory factory=  new  SqlSessionFactoryBuilder().build(inputStream);
             //3.构建SqlSession对象:执行已经映射的sql语句,调用openSession()默认开启事务不自动事务。
             SqlSession session = factory.openSession();
             List<User> list  = session.selectList("queryAllUser");
             //提交事务
             session.commit();
             //关闭SqlSession对象
             session.close(); 
             System.out.println(list);
        }
  • 相关阅读:
    解决ORACLE存储过程锁定的问题
    #{propName,attr1=val1,attr2=val2}
    集成confluence与jira
    jira4.1.1安装
    Mac OS X 10.6下安装MySQL 5.1.45
    JIRA+MySQL配置
    xcode4.5 iOS6 cocos2dx 横屏解决方案
    gSoap
    Jira5.0.2安装及破解
    MFC中显示cocos2dx
  • 原文地址:https://www.cnblogs.com/a77355699/p/8119240.html
Copyright © 2020-2023  润新知