mybatis框架之mapper的xml映射配置的编写(insert、delete、update、select标签使用)

  • spring整合mybatis的配置文件applicatonContext.xml:https://blog.csdn.net/IT_CREATE/article/details/85329007
  • mybtis中的级联关系(关联关系、集合关系)association、collection(一对一关系、一对多关系、多对多关系):https://blog.csdn.net/IT_CREATE/article/details/86523101
  • mybatis中动态sql的操作(where、foreach、if、set、choose、trim标签的使用):https://blog.csdn.net/IT_CREATE/article/details/86557260
  • mybatis中的级联关系中的鉴别器(discriminator、case、result):https://blog.csdn.net/IT_CREATE/article/details/86561051

 

mybatis的xml的映射配置基本说明

      mybatis是apache提供的开源持久层框架,原本是ibatis,后来改名了,它是用于与数据库进行交互。在使用mybatis的时候,最主要的就是这个怎么用,除了配置一些与数据库建立联系的基本配置applicatonContext.xml(spring整合mybatis的配置文件),最主要的的就是xml映射配置(就是增删改查怎么写的配置)。

      用mybatis的时候,我们要用到mapper映射,也就是说,一个项目有持久层dao,业务层service,表现层contraller,现在加上一个mapper映射。创建一个mapper包,在mapper包中,定义接口和xml映射配置,接口要和xml映射配置文件名字一样,一 一对应。比如:假设你给接口名取名为UserMapper.java,那么xml配置文件也得取名为UserMapper.xml。

如:

mybatis框架之mapper的xml映射配置的编写(insert、delete、update、select标签使用)_第1张图片

      在接口中,我们可以定义一些方法,这些方法主要就是用来与数据库进行交互,就是跟数据库进行增删改查的那些操作。并且我们在持久层dao中要用到这些方法。整个程序的调用顺序是:controller(表现层)-->service(业务层)-->dao(持久层)-->mapper(映射关系层)。所以mapper接口中的方法都是我们在dao(持久层)要进行调用的。

 

mybatis的xml的映射配置文件的具体介绍

在mybatis的xml配置中,分别有四组标签对应增删改查的操作,然后在标签中写sql语句。这些标签都有id属性,这个属性对应的是接口中的方法名。看下面代码。

 

新增(insert):

接口方法:( @Param("u")就是给参数取别名,在xml映射配置中我们才能方便去使用这个参数,使用方法就是: 别名.属性)

//@Param("u") 给参数定义个别名
int addUserBean(@Param("u") UserBean user);

xml映射配置:






	insert into
	t_user(login_name,user_name,user_pwd,age,gender,birthday,create_time)
	values
	(#{u.loginName},#{u.userName},#{u.password},#{u.age},#{u.gender},#{u.birthday},now());


对于修改和删除的操作,跟新增是一样的,他们在执行操作完成之后,返回的都是受影响的条数

 

修改和删除(update、delete):

修改和删除最常用的属性也就是:id和parameterType,但是parameterType一般情况下不用指定,只要在接口方法的参数上加上@Param()注解就可以了,多个参数多个注解区分就是了。

 

查询(select)

查询与前面的增删改操作略有不同。比如:

接口方法:(注解含义请看上面)

UserBean findUserBeanByLoginNameAndPwd(@Param("loginName")String loginName,@Param("pwd")String pwd);

xml映射配置:






	
	
	
	
	
	
	
	




结果集映射:

标签,定义结果集中数据列与对象中的属性之间的映射关系 orm
标签的id属性是查询标签标签用于结果查询,查询了结果之后,我们总得有东西来装结果吧。select标签提供了两种接收结果方式:resultMap和resultType
1、resultMap接受结果,就要定义结果映射,把查询的列也就是from前面需查询的列和对象的属性对应起来,就要用到上面的结果集映射关系。比如:resultMap="userMap",就要用标签写结果集映射关系。

2、如果用的是resultType的话,传入的如果是对象,那么就要给sql语句的每列就要用as取别名,和对象的属性名保持一致;如果是Map,为列取了别名的就以别名为键,没取别名默认以列名作为键名。resultType可以是对象、Map、基本数据类型,引用数据类型。如果是后面两种的数据类型,把么查询结果返回只能是一个值,才能接收到。比如,只有一个数值返回,那么可以用int这些;只有一个字符串返回,可以用String;只有一个时间返回,可以用Data,最好写出类型的全路径,有些类型可以省略全路径,但是写上都不会报错。

 

四个标签的更多属性请参见mybatis官网:http://www.mybatis.org/mybatis-3/zh/index.html

 

完整的例子(单表):

在接口UserMapper中,定义了一些方法,在配置文件xml中去实现这些方法的增删改

public interface UserMapper {

	//@Param("u") 给参数定义个别名
	int addUserBean(@Param("u") UserBean user);
	
	/**
	 * 批量新增
	 * @param users
	 * @return
	 */
	int addBatchUserBean(@Param("users") List users);
	
	int updateUserBean(@Param("u") UserBean user);
	
	int deleteUserBean(@Param("u") UserBean user);
	
	/**
	 * 批量删除
	 * @param ids
	 * @return
	 */
	int deleteBatchUserBean(@Param("ids") int[] ids);
	
	int deleteUserBeanById(@Param("id") Integer id);
	
	UserBean getUserBeanById(@Param("id") Integer id);
	
	UserBean findUserBeanByLoginNameAndPwd(@Param("loginName")String loginName,@Param("pwd")String pwd);

	/**
	 * 多参数传递查询的方式一
	 * 按照对象传值
	 * @param user
	 * @return
	 */
	List findUserBeanByObject(@Param("u") UserBean user);

	/**
	 * 多参数传递查询的方式二
	 * 按照Map传值
	 * @param map
	 * @return
	 */
	List findUserBeanByMap(@Param("m") Map map);

}

配置文件UserMaper.xml中,代码如下:







	
	
		
		
		
		
		
		
		
		
	


	
	
	
	
		insert into
		t_user(login_name,user_name,user_pwd,age,gender,birthday,create_time)
		values
		(#{u.loginName},#{u.userName},#{u.password},#{u.age},#{u.gender},#{u.birthday},now());
	


	
		
		insert into
		t_user(login_name,user_name,user_pwd,age,gender,birthday,create_time)
		values
		
		
			(#{u.loginName},#{u.userName},#{u.password},#{u.age},#{u.gender},#{u.birthday},now())
		
	

	
		update t_user 
		
		
			
				login_name = #{u.loginName},
			
			
				user_name = #{u.userName},
			
			
				age = #{u.age},
			
			
				gender = #{u.gender},
			
			
				user_pwd = #{u.password},
			
			
				birthday = #{u.birthday},
			
			create_time = now(),
		
		 where id = #{u.id};
	

	
		delete from t_user where id = #{u.id}
	

	
		delete from t_user where id = #{id}
	


	
		

		

		delete from t_user where id in
		
			#{id}
		

		
	

	
	

	
	

	

	
	

 

你可能感兴趣的:(mybatis框架)