码迷,mamicode.com
首页 > 其他好文 > 详细

MyBatis学习存档(1)——入门

时间:2017-12-13 14:50:03      阅读:213      评论:0      收藏:0      [点我收藏+]

标签:key   mat   time   main   acl   com   agg   lis   ntb   

一、简介

MyBatis的前身是iBatis,本是Apache的一个开源的项目

MyBatis是一个数据持久层(ORM)框架,把实体类和SQL语句之间建立了映射关系,是一种半自动化的ORM实现

MyBatis小巧,简单易学,优点如下:

基于SQL语法,简单易学

能了解底层组装过程

SQL语句封装在配置文件中,便于统一管理与维护,降低了程序的耦合度

程序调试方便

二、入门

2.1 环境搭建

1、创建项目,Java或Web项目均可,此处以Java项目为例:

技术分享图片

2、下载mybatis及其他所需jar包,导入工程

MyBatis:下载地址为https://github.com/mybatis/mybatis-3/releases

技术分享图片此处以3.2.7版本为例,核心jar包为mybatis-3.2.7.jar,lib中为可选依赖包

mybatis-generator-core.jar:用于反向生产

(以上jar包可在https://gitee.com/shizuru/MyBatis下载,不放心的也可以自行网上下载)

JDBC驱动包:下载数据库相对应的驱动包即可

 3、建立数据库并加入几条测试数据(此处以SqlServer为例)

sql脚本:

CREATE DATABASE test;
USE test;
CREATE TABLE users(id INT PRIMARY KEY identity(1,1), name VARCHAR(20), password VARCHAR(20));
INSERT INTO users(name, password) VALUES (aaa, 123);
INSERT INTO users(name, password) VALUES (bbb, 456);

至此环境搭建完毕

2.2 反向生成实体类和映射文件

1、编写反向生成配置文件generatorConfig.xml(在src目录下)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
  PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
  "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">

<generatorConfiguration>
    <context id="testTables" targetRuntime="MyBatis3">
        <commentGenerator>
            <!-- 是否去除自动生成的注释 true:是 : false:否 -->
            <property name="suppressAllComments" value="true" />
        </commentGenerator>
        <!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->
        <jdbcConnection driverClass="com.microsoft.sqlserver.jdbc.SQLServerDriver"
            connectionURL="jdbc:sqlserver://127.0.0.1:1433;DatabaseName=test" userId="sa"
            password="123456">
        </jdbcConnection>

        <!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL 和 
            NUMERIC 类型解析为java.math.BigDecimal -->
        <javaTypeResolver>
            <property name="forceBigDecimals" value="false" />
        </javaTypeResolver>

        <!-- targetProject:生成实体类的位置 -->
        <javaModelGenerator targetPackage="com.pojo"
            targetProject=".\src">
            <!-- enableSubPackages:是否让schema作为包的后缀 -->
            <property name="enableSubPackages" value="false" />
            <!-- 从数据库返回的值被清理前后的空格 -->
            <property name="trimStrings" value="true" />
        </javaModelGenerator>
        <!-- targetProject:mapper映射文件生成的位置 -->
        <sqlMapGenerator targetPackage="com.mapper" 
            targetProject=".\src">
            <!-- enableSubPackages:是否让schema作为包的后缀 -->
            <property name="enableSubPackages" value="false" />
        </sqlMapGenerator>
        <!-- targetPackage:mapper接口生成的位置 -->
        <javaClientGenerator type="XMLMAPPER"
            targetPackage="com.mapper" 
            targetProject=".\src">
            <!-- enableSubPackages:是否让schema作为包的后缀 -->
            <property name="enableSubPackages" value="false" />
        </javaClientGenerator>
        <!-- 指定数据库表 -->
        <table tableName="users"  selectByExampleQueryId="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" enableCountByExample="false" ></table>
    
    </context>
</generatorConfiguration>

2、编写映射java代码

package com.util;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

import org.mybatis.generator.api.MyBatisGenerator;
import org.mybatis.generator.config.Configuration;
import org.mybatis.generator.config.xml.ConfigurationParser;
import org.mybatis.generator.internal.DefaultShellCallback;

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

        List<String> warnings = new ArrayList<String>();
        boolean overwrite = true;
        //映射配置文件
        File configFile = new File("generatorConfig.xml");
        ConfigurationParser cp = new ConfigurationParser(warnings);
        Configuration config = cp.parseConfiguration(configFile);
        DefaultShellCallback callback = new DefaultShellCallback(overwrite);
        MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
        myBatisGenerator.generate(null);  
        System.out.println("映射完成");
        
    }
}

3、执行反向程序,刷新项目,可看见已经在配置路径下生成实体类和映射文件了

技术分享图片

2.3 使用MyBatis对数据库进行操作

 1、编写MyBatis核心配置文mybatis-config.xml及数据库配置文件database.properties

<?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="database.properties"></properties>
      
      <settings>
          <!-- 开启二级缓存总开关 -->
          <setting name="cacheEnabled" value="true"/>
          <!--设置懒 加载 -->
        <setting name="lazyLoadingEnabled" value="true"/>
        <!-- 积极加载设置  不积极==懒 -->
          <setting name="aggressiveLazyLoading" value="false"/>
          <!-- 设置自动装配形式  -->
          <setting name="autoMappingBehavior" value="FULL"/>
      </settings>
      
      <!-- 起别名 -->
      <typeAliases>
          <package name="com.pojo"/>
      </typeAliases>
      
     <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
               <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>
        <package name="com.mapper"/>
      </mappers>
      
</configuration>
jdbc.driver=com.microsoft.sqlserver.jdbc.SQLServerDriver
jdbc.url=jdbc:sqlserver://127.0.0.1:1433;DatabaseName=test
jdbc.username=sa
jdbc.password=123456

2、编写测试类

由于反向生成的映射文件中自带了6种查询方法,所以此处直接使用其中的selectByPrimaryKey方法进行查询操作

package com.test;

import java.io.InputStream;

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 com.pojo.Users;

public class Test1 {
    
    public static void main(String[] args) throws Exception {
        //mybatis的核心配置文件
        String resource = "mybatis-config.xml";
        //使用MyBatis提供的Resources类加载mybatis的配置文件
        InputStream  is = Resources.getResourceAsStream(resource);
        //构建SqlSession的工厂
        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
        //开启SqlSession
        SqlSession session = factory.openSession();
        String statement = "com.mapper.UsersMapper.selectByPrimaryKey";//映射sql的标识字符串
        //执行查询
        Users user = session.selectOne(statement, 1);
        //输出结果
        System.out.println(user.getName() + "=======" + user.getPassword());
    }

}

输出结果如下:

技术分享图片

 

最终项目目录结构如下:

技术分享图片

MyBatis学习存档(1)——入门

标签:key   mat   time   main   acl   com   agg   lis   ntb   

原文地址:http://www.cnblogs.com/s1165482267/p/8031952.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!