MyBatis#(二)---配置文件的编写

使用MyBatis的依赖导入

<!--        mysql Deiver-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.47</version>  
        </dependency>
<!--        mybatis-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.2</version>
        </dependency>

MyBatis的结构配置文件(核心配置)

属性配置

一般用于引入properties文件,必须防止在核心配置文件的前部分
properties文件用于存放链接数据库的信息(url,username,password),可以实现数据库环境的动态修改

url=jdbc:mysql://localhost:3306/mybatis?		serverTimezone=UTC&amp;useSSL=false&amp;useUnicode=true&amp;characterEncoding=UTF-8
#mysql版本8.0以上的useSSL要为false,同时要加时区serverTimezone=UTC
username=root
password=123456

设置配置

一般用于配置日志实现配置,实现日志输出

### set log levels ###
log4j.rootLogger = debug ,  stdout ,  D 

### 输出到控制台 ###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern =  %d{ABSOLUTE} %5p %c{ 1 }:%L - %m%n

### 输出到日志文件 ###
log4j.appender.file = org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.File = logs/log.log
log4j.appender.file.Append = true
log4j.appender.file.Threshold = DEBUG ## 输出DEBUG级别以上的日志
log4j.appender.file.layout = org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

### 保存异常信息到单独文件 ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = logs/error.log ## 异常日志文件名
log4j.appender.D.Append = true
log4j.appender.D.Threshold = ERROR ## 只输出ERROR级别以上的日志!!!
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

类别名配置

一般用于可以对实体类或者包起别名,方便使用,在实体类很多时可以对包起名(注解可以改包别名)

环境配置

就是对数据库连接进行配置,可以配置数据源,事务管理模式
不同的环境可设置不同的数据库连接等等,可以配置多套环境,通过默认关键词选择用那一套环境.
MyBatis的默认事务管理类型为JDBC,默认数据连接池是POOLED
连接池增加数据传输速度,事务管理类型不仅仅有JDBC

映射配置

将映射文件注册在核心配置文件中,才能在通过核心配置文件得到sqlSession时能够得到映射接口的dao实现类

核心配置文件按如下=

<?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="db.properties">
        <property name="driver" value="com.mysql.jdbc.Driver"/>
        <!--Deiver要是最新的,那么驱动名修改<property name="driverClassName" 		value="com.mysql.cj.jdbc.Driver"/>-->
    </properties>

    <settings>
<!--        <setting name="logImpl" value="STDOUT_LOGGING"/>-->
        <setting name="logImpl" value="log4j"/>
    </settings>

    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${driver}"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
        <environment id="text">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC&amp;useSSL=false&amp;useUnicode=true&amp;characterEncoding=UTF-8"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>
<!--绑定配置文件-->
<!--    <mappers>-->
<!--        <mapper resource="com/cs/dao/UserMapper.xml"/>-->
<!--    </mappers>-->

<!--    绑定接口-->
    <mappers>
        <mapper resource="com/cs/dao/BlogMapper.xml"/>
    </mappers>

</configuration>

MyBatis的映射文件配置

映射配置文件用于实现dao层的接口,代替dao实现类
映射配置文件可以实现sql语句的动态拼接,实现多种功能

step1:绑定接口,确定要实现的接口

step2:在mapper中写sql语句

sql语句参数传递的符号是#
可以用map实现代替实体类参数传递
使用通配符,字符串拼接,解决sql注入
结果集映射:可以对实体类属性和数据库的列进行映射(property—column)

1.普通操作
CRUD
2.嵌套查询
利用结果集映射中的association将实体类的属性T(对象)和数据库字段对应起来,同时确定属性T的实体类型(javaType)和T的查询方法比如:
3.联表查询
当出现;联表查询时,你需要多个表的数据,写了sql语句后,返回值必然只能用结果映射集,此时需要你在结果映射集中写好对应的关系,在联表信息区域,通过association关键字进行修饰,然后在对association进行修饰对应比如:
4.动态SQL
用以下标签可以在sql上进行逻辑拼接:if,choose,when,otherwise,where,set,trim,foreach
用sql标签可以实现sql语句的复用,但是注意不要存在where标签,最好sql语句仅仅作用于单表

以我的博客数据库中的用户表为例,userDao的实现类的配置文件如下

<?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="com.cs.dao.BlogMapper">
    <sql id="if-title-author">
        <if test="title != null">
            title = #{title}
        </if>
        <if test="author != null">
            and author = #{author}
        </if>
    </sql>

    <insert id="addBlog" parameterType="com.cs.pojo.Blog">
        insert into mybatis.blog(id,title,author,create_time,views)
        value (#{id},#{title},#{author},#{createTime},#{views});
    </insert>

    <select id="queryBlogIF" parameterType="map" resultType="com.cs.pojo.Blog">
        select * from mybatis.blog
        <where>
<!--            <if test="title != null">-->
<!--                and title = #{title}-->
<!--            </if>-->
<!--            <if test="author != null">-->
<!--                and author = #{author}-->
<!--            </if>-->
            <include refid="if-title-author"></include>
        </where>
    </select>
    <select id="queryBlogChoose" parameterType="map" resultType="com.cs.pojo.Blog">
        select * from mybatis.blog
        <where>
            <choose>
                <when test="title != null">
                    title = #{title}
                </when>
                <when test="author != null">
                    and author = #{author}
                </when>
                <otherwise>
                    and views = #{views}
                </otherwise>
            </choose>
        </where>
    </select>

    <update id="updateBlog" parameterType="map">
        update mybatis.blog
        <set>
                <if test="title != null">
                    title = #{title},
                </if>
                <if test="author != null">
                    author = #{author}
                </if>
        </set>
        where id = #{id}
    </update>

    <select id="queryBlogForeach" parameterType="map" resultType="com.cs.pojo.Blog">
        select * from mybatis.blog
        <where>
            <foreach collection="ids" item="id" open="(" close=")" separator="or">
                id = #{id}
            </foreach>
        </where>
    </select>
</mapper>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值