MyBatis的日志+参数传递+常用注解

文章目录

      • 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的日志组件



<dependency>
	<groupId>log4jgroupId>
	<artifactId>log4jartifactId>
	<version>1.2.17version>
dependency>

2.在MyBatis全局配置文件(MyBtaisConfig.xml)中配置


<settings>
   <setting name="logImpl" value="LOG4J"/>
settings>

3.测试

在这里插入图片描述

MyBatis参数

设置对象别名

我们在Mapper.xml文件中配置操作数据库的sql语句时,如果传入的参数是对象,总是需要在parameterType中对参数进行类型定义,例如parameterType=“com.cwd.mybatis.bean.User”,这样的传入的参数是以全类名的形式存在,比较繁琐,因此我们可以通过设置对象别名来传递参数。

方式一

在MyBatis全局配置文件中使用typeAliases标签设置对象类型别名。


<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标签设置对象类型别名。


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

你可能感兴趣的:(javaEE,数据库,mybatis,mysql,java)