MyBatis作为一个轻量级的ORM框架,提供了多种灵活的参数传递方式,包括单个参数、多个参数、Map对象、JavaBean对象、数组或集合类型等。使用不同的参数传递方式,可以根据具体情况灵活选择,提高开发效率。
MyBatis的参数传递方式非常灵活,可以根据具体情况灵活选择,提高开发效率。
单个参数 单个参数可以是基本类型、包装类型或JavaBean对象。如果是JavaBean对象,MyBatis会根据属性名来映射参数。
例如,假设有一个查询用户信息的方法,传入参数为用户id:
复制 public User getUserById( int id) ;
在SQL语句中,可以使用#{id}来引用参数值:
复制 < select id= "getUserById" resultType= "com.example.User" >
select * from user where id = #{ id}
</ select >
多个参数 多个参数可以使用@Param注解或Map对象传递。
@Param注解
@Param("name")表示参数为name属性的值,@Param("age")表示参数为age属性的值。例如,假设有一个查询用户信息的方法,传入参数为用户名和年龄:
复制 public List< User> getUsersByNameAndAge( @Param( "name" ) String name, @Param( "age" ) int age) ;
在SQL语句中,可以使用#{name}和#{age}来引用参数值,对应的XML配置文件如下:
复制 < select id= "getUsersByNameAndAge" resultType= "com.example.User" >
select * from user where name = #{ name} and age = #{ age}
</ select >
Map对象
Map的key表示参数名,value表示参数值:
复制 public List< User> getUsers( Map< String, Object> paramMap) ;
在SQL语句中,可以使用#{name}和#{age}来引用参数值:
复制 < select id= "getUsers" resultType= "com.example.User" >
select * from user where name = #{ name} and age = #{ age}
</ select >
数组或集合类型 数组
使用数组或集合类型作为参数传递时,MyBatis会将数组或集合中的每个元素作为一个单独的参数进行处理。可以在SQL语句中使用#{0}、#{1}、#{2}等形式引用每个参数。
例如,假设有一个查询用户信息的方法,传入参数为用户id列表,可以使用以下代码实现:
复制 public List< User> getUsersByIds( Integer [ ] ids) ;
在SQL语句中,使用foreach标签来遍历id数组:
复制 < select id= "getUsersByIds" resultType= "com.example.User" >
select * from user where id in
< foreach item= "item" collection= "array" open= "(" separator= "," close= ")" >
#{ item}
</ foreach>
</ select >
调用时,可以使用数组传递参数:
复制 Integer [ ] ids = { 1 , 2 , 3 } ;
List< User> users = userDao.getUsersByIds ( ids) ;
集合
使用集合类型作为参数传递时,可以使用List或Set。例如,假设有一个查询用户信息的方法,传入参数为用户名列表,可以使用以下代码实现:
复制 public List< User> getUsersByNames( List< String> names) ;
在SQL语句中,使用foreach标签遍历name列表:
复制 < select id= "getUsersByNames" resultType= "com.example.User" >
select * from user where name in
< foreach item= "item" collection= "list" open= "(" separator= "," close= ")" >
#{ item}
</ foreach>
</ select >
调用时,可以使用List传递参数:
复制 List< String> names = new ArrayList<> ( ) ;
names.add ( "Tom" ) ;
names.add ( "Jerry" ) ;
names.add ( "Kate" ) ;
List< User> users = userDao.getUsersByNames ( names) ;
最后 MyBatis作为一个轻量级的ORM框架,提供了多种灵活的参数传递方式,包括单个参数、多个参数、Map对象、JavaBean对象、数组或集合类型等。使用不同的参数传递方式,可以根据具体情况灵活选择,提高开发效率。