mybatis mapper动态代理

动态代理规范:
接口名称需要与映射配置文件名称相同
映射配置文件中 namespace必须是接口的全名
接口中的方法名和映射配置文件中的标签的id一致
接口中的返回值类型和映射配置文件中的 resultType的指定的类型一致。

1.创建项目
2.环境搭建
2.1添加mybatis和mysql驱动jar包,一共12个
2.2添加dtd约束
1.
image
2.
image
3.
image
4.
image
3.全局配置
3.1jdbc.properties配置文件

点击查看代码
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis
jdbc.username=root
jdbc.password=root

3.2log4j.properties配置文件

点击查看代码
log4j.rootLogger=info,console,logfile

### appender.console输出到控制台 ###
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=<%d> %5p (%F:%L) [%t] (%c) - %m%n
log4j.appender.console.Target=System.out

### appender.logfile输出到日志文件 ###
log4j.appender.logfile=org.apache.log4j.RollingFileAppender
log4j.appender.logfile.File=SysLog.log
log4j.appender.logfile.MaxFileSize=500KB
log4j.appender.logfile.MaxBackupIndex=7
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=<%d> %p (%F:%L) [%t] %c - %m%n

3.3全局配置文件 mybatis-cfg.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>
    <!--读取db.properties文件-->
    <properties resource="db.properties"></properties>

    <!-- 别名 包以其子包下所有类   头字母大小都行-->
    <typeAliases>
        <!--<typeAlias type="com.bjsxt.mybatis.pojo.User" alias="User"/> -->
        <package name="com.bjsxt.pojo"/>
    </typeAliases>

    <!-- environments配置    -->
    <environments default="development">
        <environment id="development">
            <!-- 使用jdbc事务管理 -->
            <transactionManager type="JDBC"/>
            <!-- 数据库连接池 -->
            <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>

    <!-- Mapper的位置  Mapper.xml 写Sql语句的文件的位置 -->
    <mappers>
        <package name="com.bjsxt.mapper"/>
    </mappers>
</configuration>

image

4.mapper配置文件和接口

点击查看代码
<?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.bjsxt.mapper.UsersMapper">
    
</mapper>

5.service服务层
image
没有 dao 持久层了,sqlSession的getMapper方法会根据给的接口字节码反射到该接口,获取方法名,并在mapper文件中执行mapper中和方法名一样的配置命令,所有动态代理的mapper映射文件要和接口名一样,sqlid要和接口方法名一样

6.工具类

image

遇到的bug:全局配置文件中的db。properties写错了,控制台报空指针异常,查不出原因,可以用log4j日志查看,很有用

总结:动态映射时,都是通过sqlSession对象的getmapper方法获取接口对象,然后在调用接口对象的方法,获取数据库数据。

他人优秀博客:https://www.cnblogs.com/x54256/p/8536118.html

posted @ 2021-11-14 14:47  风的指引  阅读(127)  评论(0)    收藏  举报