Mybatis

来源:互联网 发布:网络电影商业计划书 编辑:程序博客网 时间:2024/06/05 02:42

Mybatis介绍

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

Mybatis全局配置信息

  • 文件结构

  • config.properties文件内容

driver=org.sqlite.JDBCurl=jdbc:sqlite:src/hzj.db
  • mybatis-config.xml 【该文件名称可以随便取名】
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration>        <!--      引入外部properties配置文件,后面内容则通过${属性名}来引用属性值        在使用实例化SqlSessionFactory时,还可以通过new SqlSessionFactoryBuilder.build(config.xml的InputStream实例, Properties实例)来设置属性值。    优先级从高到低是:        1. 通过build方法入参设置        2. 通过resource引入的属性        3. 通过property标签设置的属性    -->    <properties resource="config.properties"></properties>    <!--强制指定MyBatis使用log4j作为日志日志框架,若不指定那么当部署到如Tomcat等应用容器时,会被容器设置为使用common-logging来记录日志    <settings>        <setting name="logImpl" value="LOG4J"/>    </settings>    -->    <!--设置自定义JAVA类型的别名,否则在映射文件中的resultType、parameterType等特性值就需要填写全限定类名才有效-->    <typeAliases>     <!--      这时对于包下的类,在映射文件中的resultType、parameterType等特性值,我们只需写类名或首字母小写的类名          当自定义JAVA类配合@Aliase("别名")使用时,只需写别名即可,且不区分大小写      MyBatis对JAVA原生类型定义了内置别名:        `int`,`long`等就是`_int`,`_long`        `Integer`,`String`就是`int`,`string`        -->        <package name="com.hzj.entity"/>    </typeAliases>    <environments default="dev">     <!--运行环境配置-->        <environment id="dev">       <!--           type属性用于指定事务管理器类型             JDBC:使用JDBC的提交和回滚设置,依赖从数据源获取的连接来管理事务范围。             MANAGED:让容器(如Spring)来管理事务的生命周期。默认情况会关闭连接,          若不想关闭连接则需要如下配置:             <transactionManager type="MANAGED">                  <property name="closeConnection" value="false"/>                </transactionManager>            -->            <transactionManager type="JDBC"></transactionManager>            <!--           type属性用于指定连接池类型              UNPOOLED:连接用完就关闭,不放到连接池              POOLED:连接用完则放在连接池          -->            <dataSource type="POOLED">                <property name="driver" value="${driver}"/>                <property name="url" value="${url}"/>                <!--虽然sqlite不用填写username和password,但这两个节点必须保留,否则将报错-->                <property name="username" value=""/>                <property name="password" value=""/>            </dataSource>        </environment>    </environments>    <!--向MyBatis注册映射信息-->    <mappers>        <mapper resource="com/hzj/dao/stuMapper.xml"></mapper>    </mappers></configuration>

mybatis基本xml配置方案

mybatis基本注解配置方案

实战mybatis数据库的CRUD

Eclipse插件MyBatis Generator配置信息【可以自动生成代码】

<?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>    <!-- classPathEntry:数据库的JDBC驱动的jar包地址-->    <classPathEntry location="E:\oracle\product\10.2.0\db_1\jdbc\lib\ojdbc14.jar" />  <context id="DB2Tables" targetRuntime="MyBatis3">    <commentGenerator>      <!-- 是否去除自动生成的注释 true:是 : false:否 -->      <property name="suppressAllComments" value="true" />      <!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->    </commentGenerator>    <jdbcConnection driverClass="oracle.jdbc.driver.OracleDriver"            connectionURL="jdbc:oracle:thin:@198.17.1.1:1521:ORCL"            userId="unuser"            password="password">    </jdbcConnection>      <!--  默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer            true,把JDBC DECIMAL 和 NUMERIC 类型解析为java.math.BigDecimal        -->     <javaTypeResolver >       <property name="forceBigDecimals" value="false" />    </javaTypeResolver>    <!-- targetProject:自动生成代码的位置 -->    <javaModelGenerator targetPackage="com.soft.model" targetProject="E:\WebWorkSpace\workspace_js\downAttachdemo\src">        <!-- enableSubPackages:是否让schema作为包的后缀 -->             <property name="enableSubPackages" value="true" />      <!-- 从数据库返回的值被清理前后的空格  -->         <property name="trimStrings" value="true" />    </javaModelGenerator>    <sqlMapGenerator targetPackage="sqlmap"  targetProject="E:\WebWorkSpace\workspace_js\downAttachdemo\conf">         <property name="enableSubPackages" value="false" />    </sqlMapGenerator>    <javaClientGenerator type="XMLMAPPER" targetPackage="com.soft.mapping"  targetProject="E:\WebWorkSpace\workspace_js\downAttachdemo\src">      <property name="enableSubPackages" value="true" />    </javaClientGenerator>    <!-- tableName:用于自动生成代码的数据库表;domainObjectName:对应于数据库表的javaBean类名 -->    <table schema="untodo" tableName="mocha_t_app" domainObjectName="MochaTodoApp" >    </table>  </context>  </generatorConfiguration> 
  • table其他属性

    • enableCountByExample=”false”

    • enableUpdateByExample=”false”

    • enableDeleteByExample=”false”

    • enableSelectByExample=”false”

    • selectByExampleQueryId=”false”

    • schema即为数据库名, tableName为对应的数据库表, domainObjectName是要生成的实体类,如果想要mapper配置文件加入sql的where条件查询, 可以将enableCountByExample等设为true,这样就会生成一个对应domainObjectName的Example类, enableCountByExample等设为false时,就不会生成对应的Example类了.

    • 如果table里边不配置property,默认字段都生成为类属性
<ignoreColumn column="FRED" />//忽略字段 <columnOverride column="LONG_VARCHAR_FIELD" jdbcType="VARCHAR" />//无论字段是什么类型,生成的类属性都是varchar。
0 0
原创粉丝点击