1. Mapper动态代理四项原则和注意事项
接口对应四项与xml文件中的键值对信息,一一对应即可,不用写实现类,就叫MyBatis的动态代理。
如果使用原始的DAO,要自己对其进行实现,而如果使用Mybatis的Mapper动态代理,就可以让Mybatis自动帮你实现DAO接口。
- 接口方法名需要与Mapper.xml调用的sql语句id一致
- 接口的形参类型需要与Mapper.xml的parameterType一致
- 接口的返回值需要与Mapper.xml的resultType一
- Mapper.xml的namespace要与接口的全包名一致
注意:Mapper动态代理开发中,selectList和selectOne是根据返回值来自动选择的
2. 多条件查询与条件多值查询
-
多条件查询
<if test = "id != null"> id = #{id} </if>
-
同一条件多值查询
<select id="selectByIds" resultType="student" parameterType="list"> SELECT * FROM student WHERE id IN (1,2,3); </select> <!--转化为--> <select id="selectByIds" resultType="student" parameterType="list"> SELECT * FROM student <where> <foreach collection="list" open="id IN (" close=")" item="id" separator=","> #{id} </foreach> </where> </select>
动态SQL小结
- 条件标签
- 条件判断的标签
- 循环遍历的标签
- 抽取SQL片段的标签
- 引入SQL片段的标签
3. 打印MyBatis的sql语句
Log4J的功能很强大,能配合spring,mybatis 等等很多框架
-
日常开发过程中,排查问题时难免需要输出MyBatis真正执行的SQL语句,参数,信息等信息.我们可以借助log4j的功能来执行信息的输出
-
使用步骤
-
引入log4j
-
修改MyBatis核心配置文件
<!--继承LOG4J日志信息--> <setting> <setting name="logImpl" value="log4j"/> </setting>
-
在src下编写Log4J的配置文件
### 设置### log4j.rootLogger = debug,stdout,D,E ### 输出信息到控制台 ### 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 = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n
-