美文网首页
MyBatis基本使用

MyBatis基本使用

作者: 蓝Renly | 来源:发表于2018-10-19 19:38 被阅读0次

    一.介绍

    1.1.简介

    MyBatis支持普通的SQL查询,存储过程,和高级映射的优秀==持久层框架==.MyBatis了几乎所有的JDBC和参数的手工设置以及对结果集的检索封装.MyBatis可以使用简单的==XML或注解==用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录;

    1.2.MyBatis和Hibernate

    MyBatis:灵活性更高,因为可以自定义写sql语句,对需求变化应对的较好;数据库练习紧密;

    Hibernate:自动化程序高,数据库无关性较高;

    二.MyBatis的逆向工程

    2.1.在java中的src下创建如下注入类GeneratorSqlmap

    
    import java.io.File;
    import java.io.IOException;
    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.exception.XMLParserException;
    import org.mybatis.generator.internal.DefaultShellCallback;
    
    public class GeneratorSqlmap {
        public void generator() throws Exception{
            List<String> warnings = new ArrayList<String>();
            boolean overwrite = true;
            //指定 逆向工程配置文件,要写generatorConfig.xml文件在工程中的本地路径
            File configFile = new File("D:\\Workspace\\mybatis\\CustomerMybatisGenerator\\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);
    
        } 
        public static void main(String[] args) throws Exception {
            try {
                GeneratorSqlmap generatorSqlmap = new GeneratorSqlmap();
                generatorSqlmap.generator();
            } catch (Exception e) {
                e.printStackTrace();
            }   
        }
    }
    

    2.2.配置xml文件

    <?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">
    
            <plugin type="org.mybatis.generator.plugins.SerializablePlugin"></plugin>
    
            <commentGenerator>
                <!-- 是否去除自动生成的注释 true:是 : false:否 -->
                <property name="suppressAllComments" value="true"/>
            </commentGenerator>
            <!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->
            <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                            connectionURL="jdbc:mysql://localhost:3306/mybatis"
                            userId="root"
                            password="123">
            </jdbcConnection>
            <!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL 和
                NUMERIC 类型解析为java.math.BigDecimal 
            -->
            <javaTypeResolver>
                <property name="forceBigDecimals" value="false"/>
            </javaTypeResolver>
    
            <!-- targetProject:生成PO类的位置 -->
            <javaModelGenerator targetPackage="pers.lansir.mybatis.pojo"
                                targetProject=".\src">
                <!-- enableSubPackages:是否让schema作为包的后缀 -->
                <property name="enableSubPackages" value="false"/>
                <!-- 从数据库返回的值被清理前后的空格 -->
                <property name="trimStrings" value="true"/>
            </javaModelGenerator>
            <!-- targetProject:mapper映射文件生成的位置 -->
            <sqlMapGenerator targetPackage="pers.lansir.mybatis.mapper"
                             targetProject=".\src">
                <!-- enableSubPackages:是否让schema作为包的后缀 -->
                <property name="enableSubPackages" value="false"/>
            </sqlMapGenerator>
            <!-- targetPackage:mapper接口生成的位置 -->
            <javaClientGenerator type="XMLMAPPER"
                                 targetPackage="pers.lansir.mybatis.mapper"
                                 targetProject=".\src">
                <!-- enableSubPackages:是否让schema作为包的后缀 -->
                <property name="enableSubPackages" value="false"/>
            </javaClientGenerator>
            <!-- 指定数据库表  注:可以在tableName后面指定需要的表名 -->
            <table schema="" tableName="%"></table>
        </context>
    </generatorConfiguration>
    
    

    2.3.注意事项

    2.3.1.前提是已经在数据库中定义好了表的字段;

    2.3.2.在运行逆向工程前,要把包中(src下的)全部删除,不然可能存在问题;

    2.3.3.一旦逆向工程生成之后,包名就不能再修改,因此生成之前需要定义好;

    2.3.4.逆向工程只能生成单表,也就是无关联的,如果要关联需要自己手动进行关联;

    三.自定义方法

    3.1.在需要定义的pojo类中定义方法名(以及返回值类型和参数类型;

    3.2.在pojo类对应的xml文件中通过sql语句对应着实现pojo中类的方法;

    <select id=""></select>:查找数据相关操作使用的标签;
    <update id=""></update>:更新数据相关操作使用的标签;
    <insert id=""></insert>:插入数据相关操作使用的标签;
    <delete id=""></delete>:删除数据相关操作使用的标签;
    
    id:必须和自定义的方法名一致!
    
    以下面为例说明;
    <update id="updateByPrimaryKey" resultTtpe="string" parameterType="pers.lansir.pojo.User" >
        update user
        set username = #{username,jdbcType=VARCHAR},
          birthday = #{birthday,jdbcType=DATE},
          sex = #{sex,jdbcType=CHAR},
          address = #{address,jdbcType=VARCHAR}
        where id = #{id,jdbcType=INTEGER}
    </update>
    
    1.标签中写sql语句;
    2.resultTtpe/parameterType:返回值/参数类型;
        注意:
            1).如果是基本数据类型/string,不分大小写;
            2).如果是List<Integer>这种集合类型,只写泛型类型即可;
            3).如果是bean,需要写bean所在的包名;
            4).id = #{id,jdbcType=INTEGER},如果传入的参数是基本数据类型{}内可以随意写,如果传入的参数           是bean类,必须写该bean类中对应的属性名;
    

    相关文章

      网友评论

          本文标题:MyBatis基本使用

          本文链接:https://www.haomeiwen.com/subject/vauuzftx.html