MyBatis 框架 配置

mybatis包
mybatis-spring 整合包

 1.mybatis的配置文件 sqlmap-config.xml
    若使用spring框架,则可在<bean>中定义 SqlSessionFactory 和 MapperScannerConfigurer
  2.实体类的mapper.xml 

sqlmap-config.xml↓

<?xml version="1.0" encoding="UTF-8" ?>  
<!DOCTYPE configuration             PUBLIC "-//ibatis.apache.org//DTD Config 3.0//EN"  "http://ibatis.apache.org/dtd/ibatis-3-config.dtd">
<configuration>

    <!-- 控制打印底层执行过程 -->
    <settings>
        <setting name="logImpl" value="STDOUT_LOGGING"/>
    </settings>
        <!-- 自定义类型别名 -->
    <typeAliases>
        <typeAlias type="cn.xdl.entity.Comment" alias="Comment"/>
    </typeAliases>
    
    <plugins>
    <!-- com.github.pagehelper为PageHelper类所在包名 -->
    <plugin interceptor="com.github.pagehelper.PageHelper">
        <property name="dialect" value="oracle"/>
        <!-- 该参数默认为false -->
        <!-- 设置为true时,会将RowBounds第一个参数offset当成pageNum页码使用 -->
        <!-- 和startPage中的pageNum效果一样-->
        <property name="offsetAsPageNum" value="true"/>
        <!-- 该参数默认为false -->
        <!-- 设置为true时,使用RowBounds分页会进行count查询 -->
        <property name="rowBoundsWithCount" value="true"/>
        <!-- 设置为true时,如果pageSize=0或者RowBounds.limit = 0就会查询出全部的结果 -->
        <!-- (相当于没有执行分页查询,但是返回结果仍然是Page类型)-->
        <property name="pageSizeZero" value="true"/>
        <!-- 3.3.0版本可用 - 分页参数合理化,默认false禁用 -->
        <!-- 启用合理化时,如果pageNum<1会查询第一页,如果pageNum>pages会查询最后一页 -->
        <!-- 禁用合理化时,如果pageNum<1或pageNum>pages会返回空数据 -->
        <property name="reasonable" value="true"/>
        <!-- 3.5.0版本可用 - 为了支持startPage(Object params)方法 -->
        <!-- 增加了一个`params`参数来配置参数映射,用于从Map或ServletRequest中取值 -->
        <!-- 可以配置pageNum,pageSize,count,pageSizeZero,reasonable,不配置映射的用默认值 -->
        <!-- 不理解该含义的前提下,不要随便复制该配置 -->
        <property name="params" value="pageNum=start;pageSize=limit;"/>
    </plugin>
</plugins>

<!-- 定义数据源 -->
    <environments default="oracle">
        <environment id="oracle">
            <transactionManager type="JDBC"></transactionManager>
            <dataSource type="POOLED">
                <property name="driver" value="oracle.jdbc.OracleDriver"/>
                <property name="url" value="jdbc:oracle:thin:@localhost:1521:xe"/>
                <property name="username" value="system"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>
    <!-- 加载SQL定义文件 (*必须有)-->
    <mappers>
        <mapper resource="cn/xdl/sql/DeptMapper.xml" />
    </mappers>
    
</configuration> 

DeptMapper.xml↓ 隔壁mybatis+springboot里的传参方法同样可用

<?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="cn.xdl.dao.DeptDao">//映射的接口

    <!-- 如果参数只有一个string,int,date,double等类型,
    SQL使用#{xx}    ${}则使用${_parameter}格式获取 比如通过id查找一个对象↓ -->
    <select id="映射的方法" resultType="映射的实体类(将结果变成对象)"
        parameterType="要传递的参数" >
        select * from xxx where id=#{id}
    </select>

<!--  将多个参数封装成Map对象,然后在SQL中使用#{key}获取参数值 --> 
<update id="updateTitle" parameterType="map">
    update xdl_product_evaluation 
    set title=#{title}
    where id=#{id}
</update>

</mapper>

DeptDao↓

public interface DeptDao{
  public List<Dept> findAll()
}

获取session,才能实现 数据库操作

    public static SqlSession getSession() throws IOException{
//      SqlSessionFactoryBuilder
        SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
        Reader reader = Resources.getResourceAsReader("sqlmap-config.xml");
//      SqlSessionFactory
        SqlSessionFactory factory = builder.build(reader);
//      SqlSession
        SqlSession session = factory.openSession();
        return session;
    }

mybatis与spring集成 ,除了mybatis拓展功能
可将 SqlSessionFactory 和 MapperScannerConfigurer 在spring 中配置
原来在sqlmap-mybatis.xml中的定义数据源 可以去掉
若要用自定义 dao接口 和 方法 ,则要自定义 实现类

<!-- 定义数据源 -->
<bean id="dbcpDS" class="org.apache.commons.dbcp.BasicDataSource">
    <property name="driverClassName" value="oracle.jdbc.OracleDriver"></property>
    <property name="username" value="SCOTT"></property>
    <property name="password" value="TIGER"></property>
    <property name="url" value="jdbc:oracle:thin:@localhost:1521/XE"></property>
    <property name="initialSize" value="2"></property>
    <property name="maxActive" value="5"></property>
</bean>

<!-- 定义SqlSessionFactoryBean -->
<bean id="factory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="configLocation" value="classpath:sqlmap-config.xml"></property>
    <property name="dataSource" ref="dbcpDS"></property>
</bean>

<!-- 定义MapperScannerConfigurer -->
<bean id="mapperscanner" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    <!-- 注入sqlsession资源 -->
    <property name="sqlSessionFactory" ref="factory"></property>
    <!-- 注入接口所在包路径 -->
    <property name="basePackage" value="cn.xdl.dao"></property>
</bean>

<!-- 定义sqlSessionTemplate 在实现类中使用Template来使用自定义方法-->
<bean id="template" class="org.mybatis.spring.SqlSessionTemplate">
    <constructor-arg index="0" ref="factory"></constructor-arg>
</bean>

<!-- 自定义Dao接口 需要用到 spring 组件扫描技术 -->
<context:component-scan base-package="cn.xdl.dao"/>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,919评论 6 502
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,567评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,316评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,294评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,318评论 6 390
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,245评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,120评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,964评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,376评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,592评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,764评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,460评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,070评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,697评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,846评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,819评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,665评论 2 354