mybatis-config.xml的主配置文件&jdbc.properties&lo4j日志配置文件&映射文件用于写sql语句

4 篇文章 0 订阅
2 篇文章 0 订阅

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>

    <!--    1. 引入外部的读取属性文件jdbc.properties-->
    <properties resource="jdbc.properties"></properties>

    <!--2.设置(settings)这是 MyBatis 中极为重要的调整设置,它们会改变 MyBatis 的运行时行为。-->
    <settings>
        <!--        2.1是否开启驼峰命名自动映射,即从经典数据库列名 A_COLUMN 映射到经典 Java 属性名 aColumn。-->
        <setting name="mapUnderscoreToCamelCase" value="true"/>
<!--                2.1指定mybatis中的日志类型
logImpl日志实现类 -->
        <setting name="logImpl" value="log4j"/>
<!--        在mybatis中文件中设置开启二级缓存-->
        <setting name="cacheEnabled" value="true"/>
    </settings>

    <!--    3.给实体类定义别名-->
    <typeAliases>
        <!--        a.给指定的具体的实体类起别名,type:全称 alias:别名 .多数就不适用了-->
        <!--        <typeAlias type="com.hrf.bean.Role" alias="role"/>-->
        <!--        b.给包起别名,包下的所有类的别名就是当前的类名,一般的话首字母小写就行了-->
        <package name="com.hrf.bean"/>
    </typeAliases>
<!--分页插件使用到的是拦截器的机制
interceptor拦截器.-->
    <plugins>
        <plugin interceptor="com.github.pagehelper.PageInterceptor"></plugin>
    </plugins>
    <!--    4.配置环境指定要连接的数据库-->
    <environments default="mysql">
        <!--        4.1连接mysql的数据库-->
        <environment id="mysql">
            <!--            4.1.1mybatis中的事物管理,目前事物管理和jdbc事物保持一致-->
            <transactionManager type="JDBC"></transactionManager>
            <!--            4.1.2 底层使用连接池连接数据库-->
            <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>

    <!--    5.对mapper文件进行扫描,扫描完整个内容才会生效,指定sql文件的位置-->
    <mappers>
        <!--        5.1.resource书写的是xml所在的路径-->
        <!--        <mapper resource="com/hrf/mapper/RoleMapper.xml"></mapper>-->
        <!--        <mapper resource="com/hrf/mapper/AdminMapper.xml"></mapper>-->
        <!--        5.2.通过文件夹指定不需要一个一个指定了-->
        <package name="com.hrf.mapper"/>
    </mappers>

</configuration>

jdbc.properties属性配置文件

jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/royal?useSSL=true
jdbc.username=root
jdbc.password=0429

log4j日志配置文件

# 全局日志配置
log4j.rootLogger=ERROR, stdout
# MyBatis 日志配置 mapper包下所有接口都进行日志输出
log4j.logger.com.hrf.mapper=TRACE
# 控制台输出
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

映射文件用于写sql语句

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.hrf.mapper.KingMapper">

<!--    维护列和属性值的映射关系,type="king"最终返回的结果类型,java类型-->
    <resultMap id="kingMap" type="king">
<!--        主键字段property="id"类中的属性名字,
    列 column="id"自己写的sql语句的列名(表中的列名)或者是列的别名,
一般来说如果主表属性名字和从表属性名字相同,一定要起别名,
 在association或者collection中的column=""写别名就行了,
 如果和主表列名写一样的不容易区分会出错.-->
        <id property="id" column="id"/>
<!--        普通的属性,其他字段-->
        <result property="name" column="name"/>
<!--        对象属性1:1
                property="queen" 类中的属性字段
                javaType="queen"  java类型-->
        <association property="queen"
                     javaType="queen">
            <id property="id" column="qid"/>
            <result property="name" column="qname"/>
        </association>
<!--        集合 1:n
                property="girlList"
                ofType="girl" java类型-->
        <collection property="girlList" ofType="girl">
            <id property="id" column="gid"/>
            <result property="name" column="gname"/>
        </collection>
    </resultMap>
<!--    数据来自两或多张表,多表关联的时候用resultMap="kingMap"-->
    <select id="findKingAll" resultMap="kingMap">
        select k.id,k.name,q.id qid,q.name qname,q.kid,g.id gid,g.name gname,g.kid
        from king k left join queen q on k.id=q.kid
        left join girl g on k.id = g.kid

    </select>

    <select id="findKingById" resultType="king">
        select * from king where id=#{id}
    </select>
<!--    使用动态sql
<where>如果里面有一个条件成立就会动态拼接where关键字
where里面trim会自动去重,所以第一个and会自动去掉
'%' #{name } '%'
'%${name }%'
-->
    <select id="search" resultType="king">
        select * from king
        <where>
            <if test="id!=null">
                and  id=#{id}
            </if>
            <if test="name!=null">
                and name like '%' #{name } '%'
            </if>
        </where>
    </select>
<!-- <when  otherwise>   if if else-->
    <select id="search2" resultType="king">
        select * from king
        <where>
            <choose>
                <when test="id!=null">
                    and id = #{id}
                </when>
                <otherwise>
                    and name like '%${name}%'
                </otherwise>
            </choose>
        </where>
    </select>
    <insert id="saveKing" useGeneratedKeys="true" keyProperty="id">
        insert into king(name) values (#{name})
    </insert>
    <update id="updateKing">
        update king set name=#{name} where id=#{id}
    </update>
    <delete id="deleteKing">
        delete from king where id=#{id}
    </delete>

</mapper>

在写一个mapper映射文件配置

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.hrf.mapper.GirlMapper">
<!--打开多个二级缓存-->
<!--    <cache/>-->
    <insert id="saveGirl" >
        insert into girl(name,kid) values(#{name},#{kid})
    </insert>
<!--如果属性名和列名相同可以写autoMapping="true"进行自动映射-->
    <resultMap id="girlMap" type="girl" autoMapping="true">
        <id property="id" column="id"/>
        <result property="name" column="name"/>
        <association property="king" javaType="king">
            <id property="id" column="kid"/>
            <result property="name" column="kname"/>
        </association>
    </resultMap>
<!--    useCache="false"不使用二级缓存的效果
useCache="true"当前sql语句使用二级缓存
flushCache="true"当前sql语句执行完毕以后会清空缓存
-->
    <select id="findGirlAll" resultMap="girlMap" >
        select g.id,g.name,g.kid,k.id kid,k.name kname from girl g
        left join king k on g.kid=k.id
    </select>
<!--    不是动态更新-->
    <update id="update2">
        update girl set name=#{name},kid=#{kid}
        where id=#{id}
    </update>
<!--动态更新-->
    <update id="update">
        update girl
        <set>
        <if test="name!=null">
            name=#{name},
        </if>
        <if test="kid!=null">
            kid=#{kid}
        </if>
        </set>
        where id=#{id}
    </update>
</mapper>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值