文章目录

  • MyBatis日志
  • 以LOG4J日志为例:
  • MyBatis参数
  • 设置对象别名
  • 方式一
  • 方式二
  • 参数传递
  • 简单参数传递
  • 多个参数传递
  • 对象参数传递
  • Map对象传递
  • MyBatis注解


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.测试

java 启动开启mybatis日志_mysql

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设置结果