Este artigo apresenta principalmente três métodos de integração comuns entre Spring e Mybatis. O pacote de estrutura de integração necessário é mybatis-spring.jar, que pode ser acessado através do link.
Baixe em http://code.google.com/p/mybatis/.
1. Usando o método mapeador de dados (MapperFactoryBean), não há necessidade de escrever arquivos de mapeamento mybatis, e as instruções SQL e parâmetros de entrada correspondentes são fornecidos usando anotações.
(1) Arquivo de configuração Spring:
<!--Introduzir arquivo de configuração jdbc--> <context:property-placeholder location="jdbc.properties"/> <!--Criar fonte de dados jdbc--> <bean id="dataSource" destroy-method="close "> <nome da propriedade="driverClassName" value="${driver}"/> <nome da propriedade="url" value="${url}"/> <nome da propriedade="nome de usuário" value="${username}"/> <property name="password" value="${password}"/> <property name="initialSize" value="${initialSize}"/> <property name="maxActive " value="${maxActive}"/> <property name="maxIdle" value="${maxIdle}"/> <property name="minIdle" value="${minIdle}"/> </bean> <!--Crie SqlSessionFactory e especifique a fonte de dados--> <bean id="sqlSessionFactory"> <property name="dataSource" ref="dataSource" /> </bean> <!--Crie dados Mapeador, o mapeador de dados deve ser uma interface --> <bean id="userMapper"> <property name="mapperInterface" value="com.xxt.ibatis.dbcp.dao.UserMapper" /> <property name="sqlSessionFactory" ref="sqlSessionFactory" /> </bean> <bean id="userDaoImpl2"> <property name="userMapper" ref="userMapper"/> </bean>(2) Mapeador de dados UserMapper, o código é o seguinte:
interface pública UserMapper { @Select("SELECT * FROM user WHERE id = #{userId}") Usuário getUser(@Param("userId") id longo });(3) classe de interface dao UserDao, o código é o seguinte:
interface pública UserDao { usuário público getUserById (usuário usuário });(4) classe de implementação dao UserDaoImpl2, o código é o seguinte:
classe pública UserDaoImpl2 implementa UserDao { private UserMapper userMapper; public void setUserMapper (UserMapper userMapper) { this.userMapper = userMapper } public User getUserById(User user) { return userMapper.getUser(user.getId());2. Use a classe de implementação org.mybatis.spring.SqlSessionTemplate da interface org.apache.ibatis.session.SqlSession.
No mybatis, sessionFactory pode ser criado por SqlSessionFactoryBuilder.
No MyBatis-Spring, SqlSessionFactoryBean é usado.
SqlSessionFactoryBean possui um atributo obrigatório dataSource e também possui um atributo comum configLocation (usado para especificar o caminho do arquivo de configuração xml de mybatis).
(1) Arquivo de configuração Spring:
<!-- Crie SqlSessionFactory e especifique a fonte de dados -->
<bean id="sqlSessionFactory">
<nome da propriedade="dataSource" ref="dataSource" />
<!-- Especifique o arquivo de configuração geral sqlMapConfig e o ambiente personalizado não terá mais efeito no contêiner Spring -->
<nome da propriedade="configLocation" value="classpath:sqlMapConfig.xml"/>
<!--Especifique o arquivo de mapeamento da classe de entidade Você pode especificar um determinado pacote e todos os arquivos de configuração no subpacote ao mesmo tempo. Somente um mapperLocations e configLocation são necessários. , você pode especificar o atributo configLocation e, em seguida, usar o mapeador para introduzir arquivos de mapeamento de classe de entidade no arquivo de configuração geral mybatis -->
<!- - <property name="mapperLocations" value="classpath*:com/xxt/ibatis/dbcp/**/*.xml"/> -->
<feijão>
(2) arquivo de configuração total mybatis sqlMapConfig.xml:
<configuration> <typeAliases> <typeAlias type="com.xxt.ibatis.dbcp.domain.User" alias="User" /> </typeAliases> <mappers> <mapper resource="com/xxt/ibatis/ dbcp/domain/user.map.xml" /> </mappers> </configuration>
(3) Arquivo de mapeamento de classe de entidade user.map.xml:
<mapper namespace="com.xxt.ibatis.dbcp.domain.User"> <resultMap type="User" id="userMap"> <id property="id" column="id" /> <result property=" nome" coluna="nome" /> <result property="password" column="password" /> <result property="createTime" column="createtime" /> </resultMap> <selecionar id="getUser" parâmetroType="User" resultMap="userMap"> selecione * do usuário onde id = #{id} </select> <mapper/>(4) classe de implementação da interface da camada dao UserDaoImpl:
Código Java
classe pública UserDaoImpl implementa UserDao { public SqlSessionTemplate sqlSession; public User getUserById(User user) { return (User)sqlSession.selectOne("com.xxt.ibatis.dbcp.domain.User.getUser", user } public void setSqlSession(). SqlSessionTemplate sqlSession) { this.sqlSession = sqlSession;3. Use a classe abstrata org.mybatis.spring.support.SqlSessionDaoSupport para fornecer SqlSession.
(1) arquivo de configuração da mola:
Código Java
<bean id="sqlSessionFactory"> <property name="dataSource" ref="dataSource" /> <property name="configLocation" value="classpath:sqlMapConfig.xml"/> <!-- <property name="mapperLocations " value="classpath*:com/xxt/ibatis/dbcp/domain/user.map.xml"/ > --> </bean> <bean id="sqlSession" > <constructor-arg index="0" ref="sqlSessionFactory" /> </bean> <bean id="userDaoImpl3"> <!--Injetar instância de SqlSessionTemplate--> <property name= "sqlSessionTemplate" ref="sqlSession" /> <!--Você também pode injetar diretamente a instância SqlSessionFactory Quando ambos são especificados, SqlSessionFactory se torna inválido--> <!-- <property name="sqlSessionFactory" ref="sqlSessionFactory" /> --> </bean>.
(2) classe de implementação da interface da camada dao UserDaoImpl3:
Código Java
classe pública UserDaoImpl3 estende SqlSessionDaoSupport implementa UserDao { public User getUserById (Usuário usuário) { return (Usuário) getSqlSession().selectOne("com.xxt.ibatis.dbcp.domain.User.getUser", usuário);