MyBatis日志
MyBtais动态拼接sql的功能大大减少了我们在进行开发的时候被繁琐的JDBC代码困扰,但这也造成了一定的问题,当我们进行动态拼接sql的语句很多的时候,我们难以从mapper.xml文件中找到对应的完整sql,这对于代码的维护非常不利,因此我们经常需要把组合好的完整sql打印出来,让我们时刻把握代码的问题所在。
MyBatis内置的日志工厂提供了日志功能可以很好的帮我们解决这个问题,具体的日志实现由以下几种方式:SLF4J | LOG4J | LOG4J2 | JDK_LOGGING | COMMONS_LOGGING | STDOUT_LOGGING | NO_LOGGING,具体选择哪个日志实现由MyBatis的内置工厂确定。
以LOG4J日志为例:
1.在pom.xml文件中导入log4j的日志组件
<!--导入log4j日志组件-->
<!-- https://mvnrepository.com/artifact/log4j/log4j -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
2.在MyBatis全局配置文件(MyBtaisConfig.xml)中配置
<!--mybatis的全局设置-->
<settings>
<setting name="logImpl" value="LOG4J"/>
</settings>
<!--
属性名:logImpl
描述:指定MyBatis所用日志的具体实现,未指定时自动查找
-->
3.测试
MyBatis参数
设置对象别名
我们在Mapper.xml文件中配置操作数据库的sql语句时,如果传入的参数是对象,总是需要在parameterType中对参数进行类型定义,例如parameterType=“com.cwd.mybatis.bean.User”,这样的传入的参数是以全类名的形式存在,比较繁琐,因此我们可以通过设置对象别名来传递参数。
方式一
在MyBatis全局配置文件中使用typeAliases标签设置对象类型别名。
<!--为java类设置别名-->
<typeAliases>
<typeAlias type="com.cwd.mybatis.bean.User" alias="User"></typeAlias>
</typeAliases>
方式二
1.在新建的对象类中使用注解标签@Alias设置别名
import org.apache.ibatis.type.Alias;
@Alias("User")
public class User {
}
2.在MyBatis全局配置文件中的typeAliases标签中使用package标签设置对象类型别名。
<!--为java类设置别名-->
<typeAliases>
<package name="com.cwd.mybatis.bean"/>
</typeAliases>
参数传递
简单参数传递
简单的参数传递不需要使用parameterType参数定义,例如:
在接口中的方法是:
void updateUser(int id);
在mapper.xml文件中的配置就是:
<update id="updateUser">
UPDATE t_user SET NAME='张三',age='18' where id = #{id}
</update>
多个参数传递
多个参数使用注解标签@param绑定传递,例如:
在接口中的方法是:
void updatePart(@Param("Id") int id, @Param("Name") String name);
在mapper.xml文件中的配置就是:
<update id="updatePart" >
update t_user set name=#{Name} where id=#{Id}
</update>
对象参数传递
如果我们传入的参数是一个复杂的对象,就需要使用parameterType参数进行类型定义,这里可以设置别名,例如:
在接口中的方法是:
void saveUser(User user);
在mapper.xml文件中的配置就是:
<insert id="saveUser" parameterType="com.cwd.mybatis.bean.User">
insert into t_user(name,age,birthday) values(#{name},#{age},#{birthday});
</insert>
Map对象传递
在接口中的方法是:
void updateContent(Map<String, Object> map);
在mapper.xml文件中可以使用表达式获取map的键即可。
MyBatis注解
MyBatis注解标签也是MyBtais的特色之一,可以使我们简化工作流程,减少mapper.xml文件中的配置。
常用的注解标签如下:
@Insert:插入sql,语法和mapper.xml文件的insert标签一致;
@Select:查询sql,语法和mapper.xml文件的select标签一致;
@Update:更新sql,语法和mapper.xml文件的update标签一致;
@Delete:删除sql,语法和mapper.xml文件的delete标签一致;
@Param:绑定参数进行入参;
@Result:设置结果,参数column为数据库表的列,参数property表示对象类的变量,参数id=true表示主键;
@Results:设置结果集合,参数id设置结果类型,参数@Result设置结果