mybatis笔记

中文手册:mybatis – MyBatis 3 | 简介

MyBatis是一款持久层框架。

映射配置文件

每一个接口对应一个映射配置文件,映射配置文件存储路径在resources目录下,并且要和接口的包路径保持一致,映射配置文件名需要和接口名保持一致。

idea创建映射配置文件模板,可以快速创建mybatis映射配置文件。

简单使用:

<?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.angen.dao.MemberDao">



    <!--
        id:在命名空间中唯一的标识符,可以被用来引用这条语句。一般我们就使用对应的接口中的方法名
        parameterType:对应参数的类型,没有就不写
        resultType:对应方法的返回值类型,如果返回值是list,那么对应的就是泛型类型
                    期望从这条语句中返回结果的类全限定名或别名。只有select标签才有
    -->
    <select id="findAll" resultType="com.angen.pojo.Member">
        select * from dlq_member
    </select>
    <!--
        引入参数中的数据
    -->
    <insert id="addMember" parameterType="com.angen.pojo.Member">
        insert into dlq_member values(null,#{phone},#{username},#{password})
    </insert>

    <update id="updateMember" parameterType="com.angen.pojo.Member">
        update dlq_member set username=#{username} where id=#{id}
    </update>
    <!--
        引入的参数中的数据,如果参数是一个简单类型的数据(String,基本类型,包装类型)
        那么我们可以通过#{任意字符}引入对应的参数
    -->
    <delete id="deleteMember" parameterType="java.lang.Integer">
        delete from dlq_member where id=#{id}
    </delete>
</mapper>

 核心配置文件

1,存放路径必须是resources的根路径

2,配置文件的名字,随便写

3,一定要引入约束

mybatis核心配置文件_笑霸final的博客-CSDN博客_mybatis核心配置

mybatis – MyBatis 3 | 配置

<?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>
    <!--设置连接数据库的环境-->
    <!--
    可以配置多个数据库
    default:就是要使用哪个数据库环境的id
    -->
    <environments default="dev">
        <!--开发环境-->
        <environment id="dev">
            <!--transactionManager 事务管理者-->
            <transactionManager type="JDBC"/>
            <!--
            数据源dataSource
            POOLED使用mybatis自带的连接池
            UNPOOLED不使用连接池
            JNDI使用JNDI环境里面的连接池
            -->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/test_mybatis?characterEncoding=utf8"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
        <!--测试环境-->
        <environment id="test">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">

            </dataSource>
        </environment>
        <!--生产环境-->
        <environment id="product">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">

            </dataSource>
        </environment>
    </environments>
    <!--引入映射文件-->
    <mappers>
        <mapper resource="com/angen/dao/MemberDao.xml"/>
    </mappers>
</configuration>

properties标签

 

 

<?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标签可以引入外部的配置
    -->
    <properties resource="jdbc.properties"></properties>
    <!--设置连接数据库的环境-->
    <!--
    可以配置多个数据库
    default:就是要使用哪个数据库环境的id
    -->
    <environments default="dev">
        <!--开发环境-->
        <environment id="dev">
            <!--transactionManager 事务管理者-->
            <transactionManager type="JDBC"/>
            <!--
            数据源dataSource
            POOLED使用mybatis自带的连接池
            UNPOOLED不使用连接池
            JNDI使用JNDI环境里面的连接池
            -->
            <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>
        <!--测试环境-->
        <environment id="test">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">

            </dataSource>
        </environment>
        <!--生产环境-->
        <environment id="product">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">

            </dataSource>
        </environment>
    </environments>
    <!--引入映射文件-->
    <mappers>
        <mapper resource="com/angen/dao/MemberDao.xml"/>
    </mappers>
</configuration>

 在org.apache.ibatis.type.TypeAliasRegistry我们发现有很多别名

 那么我们在配置映射文件的时候可以不可以写别名呢?

在核心配置文件中我们可以使用

typeAliases标签,来给类起别名
    <!--
        typeAliases配置别名,然后在映射文件中就可以不使用全限定名了
    -->
    <typeAliases>
        <typeAlias type="com.angen.pojo.Member" alias="Member"></typeAlias>
    </typeAliases>

由于有很多pojo类,如果按照以上方式一个一个配置很麻烦,所以有了如下这种方式:通过package标签进行包扫描批量配置别名。

表示将pojo包下的类都配置别名,别名就是类名,不区分大小写。

    <typeAliases>
        <!--<typeAlias type="com.angen.pojo.Member" alias="Member"></typeAlias>-->
        <package name="com.angen.pojo"/>
    </typeAliases>

 mappers标签作用引入加载映射配置文件。

    <!--引入映射文件-->
    <mappers>
        <mapper resource="com/angen/dao/MemberDao.xml"/>
    </mappers>

通过包扫描的方式批量加载映射配置文件

    <!--引入映射文件-->
    <mappers>
        <!--<mapper resource="com/angen/dao/MemberDao.xml"/>-->
        <package name="com.angen.dao"/>
    </mappers>

配置好,并且写好其他代码后执行 

public class TestMybatis {
    @Test
    public void testFindAll() throws IOException {
        //测试findall方法
        //创建SqlSessionFactoryBuilder
        SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
        //读取核心配置文件
        InputStream resourceAsStream = Resources.getResourceAsStream("SqlMapConfig.xml");
        //创建SqlSessionFactory对象
        SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(resourceAsStream);
        //创建SqlSession
        SqlSession sqlSession = sqlSessionFactory.openSession();
        //创建MemberDao代理对象
        MemberDao mapper = sqlSession.getMapper(MemberDao.class);
        //调用想执行的方法
        List<Member> allMember = mapper.findAll();
        for (Member member : allMember) {
            System.out.println(member);
        }
        //增删改操作需要提交事务
        sqlSession.commit();
        //关闭资源
        sqlSession.close();
    }
}

idea mybatis插件

free-idea-mybatis是一款增强idea对mybatis支持的插件,主要功能如下: 
生成mapper xml文件
快速从代码跳转到mapper及从mapper返回代码
mybatis自动补全及语法错误提示
集成mybatis generator gui界面
根据数据库注解,生成swagger model注解

 直接alt+回车,自动生成映射文件中的标签                                


配置Mybatis日志打印,mybatis底层需要使用log4j日志打印框架来打印日志。

1,引入log4j引入依赖

2,配置log4j的配置文件

        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.6.1</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.6.1</version>
        </dependency>

在 resources 目录下创建 log4j.properties 文件,复制以下代码。

可根据自身需求,将 文件输出的相关设置 中的 log4j.appender.file.File=./log/logFile.log 改变为自己的日志输出路径。

#将等级为DEBUG的日志信息输出到console和file这两个目的地,console和file的定义在下面的代码
log4j.rootLogger=DEBUG,console,file

#控制台输出的相关设置
log4j.appender.console = org.apache.log4j.ConsoleAppender
log4j.appender.console.Target = System.out
log4j.appender.console.Threshold=DEBUG
log4j.appender.console.layout = org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=[%c]-%m%n

#文件输出的相关设置
log4j.appender.file = org.apache.log4j.RollingFileAppender
log4j.appender.file.File=./log/logFile.log
log4j.appender.file.MaxFileSize=10mb
log4j.appender.file.Threshold=DEBUG
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=[%p][%d{yy-MM-dd}][%c]%m%n

#日志输出级别
log4j.logger.org.mybatis=DEBUG
log4j.logger.java.sql=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.ResultSet=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG

posted @ 2022-07-20 12:54  在线电影制作人  阅读(6)  评论(0)    收藏  举报  来源