mybatis mapper动态代理
动态代理规范:
接口名称需要与映射配置文件名称相同
映射配置文件中 namespace必须是接口的全名
接口中的方法名和映射配置文件中的标签的id一致
接口中的返回值类型和映射配置文件中的 resultType的指定的类型一致。
1.创建项目
2.环境搭建
2.1添加mybatis和mysql驱动jar包,一共12个
2.2添加dtd约束
1.

2.

3.

4.

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>

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服务层

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

遇到的bug:全局配置文件中的db。properties写错了,控制台报空指针异常,查不出原因,可以用log4j日志查看,很有用
总结:动态映射时,都是通过sqlSession对象的getmapper方法获取接口对象,然后在调用接口对象的方法,获取数据库数据。

浙公网安备 33010602011771号