84669 人が学習中
152542 人が学習中
20005 人が学習中
5487 人が学習中
7821 人が学習中
359900 人が学習中
3350 人が学習中
180660 人が学習中
48569 人が学習中
18603 人が学習中
40936 人が学習中
1549 人が学習中
1183 人が学習中
32909 人が学習中
人生最曼妙的风景,竟是内心的淡定与从容!
一般的な方法は 2 つあります:
パラメータを渡すためだけに Bean を定義し、Setter/Getter メソッドを提供します。この方法は明らかに面倒です。ただし、複数のパラメータをmapに入れてmapに渡すこともできます。map,将map传入即可。
map
可以在mapper接口定义的方法入参里,使用注解org.apache.ibatis.annotations.Param标记参数名。比如:
mapper接口
org.apache.ibatis.annotations.Param
public interface UserMapper{ User login(@Param("name")String name,@Param("password")String password); }
之后,在xml里使用对应的名字映射即可:
select col1,col2,col3 from tal_name where user_name=#{name} and pwd=#{password}
要使用方法二的话,你目前的方式是不行的。因为你是使用sqlSession.selectOne(queryId)或sqlSession.selectOne(queryId,paramObj)的方来调用的。要使用方法二,你得先用sqlSession.getMapper(UserMapper.class)拿到定义的接口(DAO),拿到接口后,传递参数就相对自由了,因为接口里的方法定义就是常规的java方法定义。在定义的接口方法里就可以使用@Param注解来标记参数了。大致例子如下:
sqlSession.selectOne(queryId)
sqlSession.selectOne(queryId,paramObj)
sqlSession.getMapper(UserMapper.class)
DAO
@Param
package cn.xxx.dao; public interface UserMapper{ User login(@Param("name")String name,@Param("password")String password); }
此处应该注意:
自定义DAO接口的全类名cn.xxx.dao.UserMapper应该和中的namespace属性相对应。同时,namespace的值(cn.xxx.dao.UserMapper)和select的id属性值(login)连起来其实就是你使用的sqlSession.selectOne(queryId)中用来标记查询的queryId了。
DAO接口
cn.xxx.dao.UserMapper
namespace
select
id
queryId
如果是maven工程,你应该将xxxMapper.xml置于资源路径(src/main/resources)下而不是源代码路径(src/main/java),否则在运行时源代码路径下的xml文件是找不到的。
maven
xxxMapper.xml
src/main/resources
src/main/java
xml文件
另外有点建议就是:目测你用Spring来管理Bean的,鉴于此,还有另一种管理SqlSessionFactory的方式,可以不用直接在DAO里显示地注入SqlSessionFactory。此处是我以前从别人那里fock过来的一个SSM
Spring
Bean
SqlSessionFactory
fock
SSM
マッパーインターフェイス
DAO インターフェイス
xml ファイル
一般的な方法は 2 つあります:
方法1
パラメータを渡すためだけに Bean を定義し、Setter/Getter メソッドを提供します。この方法は明らかに面倒です。
ただし、複数のパラメータを
mapに入れてmapに渡すこともできます。map,将map传入即可。方法二
可以在
mapper接口定义的方法入参里,使用注解org.apache.ibatis.annotations.Param标记参数名。比如:之后,在xml里使用对应的名字映射即可:
注
要使用方法二的话,你目前的方式是不行的。
因为你是使用
sqlSession.selectOne(queryId)或sqlSession.selectOne(queryId,paramObj)的方来调用的。要使用方法二,你得先用
sqlSession.getMapper(UserMapper.class)拿到定义的接口(DAO),拿到接口后,传递参数就相对自由了,因为接口里的方法定义就是常规的java方法定义。在定义的接口方法里就可以使用@Param注解来标记参数了。大致例子如下:此处应该注意:
自定义
DAO接口的全类名cn.xxx.dao.UserMapper应该和中的namespace属性相对应。同时,
namespace的值(cn.xxx.dao.UserMapper)和select的id属性值(login)连起来其实就是你使用的sqlSession.selectOne(queryId)中用来标记查询的queryId了。如果是
maven工程,你应该将xxxMapper.xml置于资源路径(src/main/resources)下而不是源代码路径(src/main/java),否则在运行时源代码路径下的xml文件是找不到的。另外有点建议就是:目测你用
方法 2Spring来管理Bean的,鉴于此,还有另一种管理SqlSessionFactory的方式,可以不用直接在DAO里显示地注入SqlSessionFactory。此处是我以前从别人那里fock过来的一个SSMマッパーインターフェイスで定義されたメソッドにパラメータを入力し、アノテーションorg.apache.ibatis.annotations.Paramを使用してパラメータ名をマークできます。例: リーリー その後は、XML で対応する名前マッピングを使用するだけです: リーリー 注意 方法 2 を使用する場合、現在の方法は機能しません。sqlSession.selectOne(queryId)またはsqlSession.selectOne(queryId,paramObj)を使用して呼び出しているためです。 方法 2 を使用するには、まずsqlSession.getMapper(UserMapper.class)を使用して、定義されたインターフェイス (DAO) を取得した後、それに応じてパラメーターを渡す必要があります。インターフェイス内のメソッド定義は通常の Java メソッド定義であるため、無料です。@Paramアノテーションを使用して、定義されたインターフェイス メソッド内のパラメータをマークできます。大まかな例は次のとおりです: リーリー リーリー ここで注意してください:- カスタム
- それが
もう 1 つの提案は、DAO インターフェイスcn.xxx.dao.UserMapperの完全なクラス名は、のnamespace属性に対応します。 同時に、namespace(cn.xxx.dao.UserMapper) の値とselectのid属性 (login) の値> 実際はあなたです。クエリをマークするために使用されるsqlSession.selectOne(queryId)はqueryIdです。mavenプロジェクトの場合は、代わりにxxxMapper.xmlをリソース パス (src/main/resources) の下に配置する必要があります。ソース コード パス (src/main/java)。それ以外の場合、ランタイム ソース コード パス内のxml ファイルが見つかりません。Springを使用してBeanを管理していることを視覚的に確認することです。これを考慮すると、SqlSessionFactoryを管理する別の方法があります。SqlSessionFactoryをDAOに直接明示的に挿入する必要はありません。これは、以前にfockから得たSSM統合の例です: https://github.com/hylexus/be...