开发者社区 问答 正文

Spring3+MyBatis3整合配置问题???求大神给个优秀的配置有木有!!!:报错

在下有一个疑问,在使用MyBatis做orm时,是不是一定要配置如下几步啊:
实体类,实体类对应的Mapper接口,Mapper接口的xml文件,这些配置每个实体都对应一份,感觉太冗余,如果不写Mapper接口在持久层调用(要写实体类全名称和操作id)com.test.bean.User.insert也很麻烦!!!各位大神,有没有一套优秀的配置给个分享学习学习,在下感激不尽!!!

展开
收起
kun坤 2020-06-09 10:39:55 550 分享 版权
1 条回答
写回答
取消 提交回答
  • 去这里看看,应该有你想要的东西: https://code.google.com/p/mybatis/wiki/Spring######谢谢分享######提问时请一定要正确关联提问涉及的软件,否则难有人回答######嗯嗯,好的###### 我以前整合的,你可以看看
    http://git.oschina.net/wz2520020/ssb ######谢谢了###### 在Application中做如下的配置:

    <!-- 配置mybatis --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="mapperLocations" value="classpath*:sqlmapper/*.xml" /> <property name="dataSource" ref="dataSource" /> </bean>

    <bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate"> <constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory" /> </bean>

    这样配置后在classpath下建立一下sqlmapper的文件夹(和上述配置中的一样)。在里面任意建.xml的文件,里面直接写SQL语句。如下:
    <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

    <mapper namespace="com.test.sqlmapper.DepInfo">

    <!-- 向数据库存储DepInfo的SQL语句 -->
    <insert id="save" parameterType="com.****.model.DepInfo">
    	<![CDATA[
    		insert into DepInfo (departmentId, enterNumber, departmentName, fDepartmentId, departmentDes, departmentOrder)
    		 values (#{departmentId}, #{enterNumber}, #{departmentName}, #{fDepartmentId}, #{departmentDes}, #{departmentOrder})
    	]]>
    </insert>
    

    </mapper>

    然后使用SqlSessionTemplate就可以了。例如按上面的例子:

    sqlSessionTemplate.insert("com.test.sqlmapper.DepInfo.save", depInfo);
    有关SqlSessionTemplate你可以查看相关文档。 ######谢谢分享!###### xml配置
    <!-- 配置事务 -->
    	<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    		<property name="dataSource" ref="dataSource" />
    	</bean>
    	<!-- SessionFactory -->
    	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    		<property name="dataSource" ref="dataSource" />
    		<!-- 指向实体类包路径 
    			设置此属性在mapper的xml文件当中可以不用写resultMap对象映射-->
    		<property name="typeAliasesPackage" value="com.test.model" />
    	</bean>
    	<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    		<!-- mapper文件路径 -->
    		<property name="basePackage" value="com.test.dao" />
    	</bean>
    Java:Mapper接口
    public interface TestMapper {
    	
    	@Select("select * from table_name")
    	public List<Model> queryAll();
    	
    	@Delete("delete from table_name where id = #{id}")
    	public int delete(long id);
    	
    	// 多个参数使用注解方式,要加是@Param,单个参数不用加
    	@Delete("update table_name set name = #{name} where id = #{id}")
    	public int update(@Param("name") String name,@Param("id")  long id);
    }
    Mapper配置文件,在TestMapper接口同目录下,名字要相同,复杂的处理可以在xml里写,不写接口注解
    <mapper namespace="com.zhangxuan.test.dao.TestMapper">
    然后直接写service就行了,TestMapper接口不用写实现类。 ######谢谢分享!###### 推荐你看看springside中的实现 http://www.oschina.net/p/springside ######谢谢分享~!
    2020-06-09 10:40:03
    赞同 展开评论