在spring中集成mybatis的有多种,能够彻底xml配置,也能够彻底走注解。这里记录一个自认为比较简单的配置方法。java
项目目录:mysql
一、引用jar包的maven配置。web
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.10</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.6</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>1.3.1</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.4</version> </dependency> <!--反射生成实体类--> <dependency> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-core</artifactId> <version>1.3.5</version> </dependency>
二、配置spring应用上下文。spring
在命名空间添加配置:sql
xmlns:mybatis="http://mybatis.org/schema/mybatis-spring
在xsi:schemaLocation 增长配置:数据库
http://mybatis.org/schema/mybatis-spring http://mybatis.org/schema/mybatis-spring.xsd
配置如图:apache
二、配置扫描mybatis的映射mapper接口所在的包和sqlSessionFactory。json
<!-- 定义mybaits --> <!-- mybatis:scan 会自动扫描 com.altnum.mybatis.mapper包中全部接口看成mapper配置,以后自动引入mapper类--> <mybatis:scan base-package="com.altnum.mybatis.mapper"/> <!-- 配置sqlSessionFactory org.mybatis.spring.SqlSessionFactoryBean是用于整合spring的bean--> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean" p:dataSource-ref="dataSource"/>
dataSource 这里用的是数据库链接池。这里不给出配置了。bash
三、com.altnum.mybatis.domain.TestUser. 数据库表映射bean.mybatis
package com.altnum.mybatis.domain; import java.io.Serializable; import org.apache.commons.lang.builder.ToStringBuilder; import org.apache.commons.lang.builder.ToStringStyle; public class TestUser implements Serializable { private Integer id; //id private String name; //姓名 private String password; //密码 private String sex; //性别 public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public String toString() { return ToStringBuilder.reflectionToString(this,ToStringStyle.DEFAULT_STYLE); } }
四、mybatis注解映射接口。
mybatis:scan 会自动扫描 com.altnum.mybatis.mapper包中全部接口看成mapper配置,以后自动引入mapper类。
package com.altnum.mybatis.mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import com.altnum.mybatis.domain.TestUser; public interface TestMapper { @Select("select user_id id,user_name name,user_password password,user_sex sex from thnb_user " + "where user_id = #{id}") TestUser findUserWithId(@Param("id") int id); }
五、测试调用。
在控制层直接注入引用mapper映射接口。
package com.altnum.controller; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.TimeZone; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.log4j.LogManager; import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; import com.altnum.common.GetUTCTimeUtil; import com.altnum.mybatis.domain.TestUser; import com.altnum.server.TestServer; @Controller @RequestMapping(value = "/test") public class TestController { @Resource TestServer testServerImpl; //自动注入userMapper @Autowired private com.altnum.mybatis.mapper.TestMapper TestMapper; private static final Logger logger = LogManager.getLogger(TestController.class); @RequestMapping(value = "test",method=RequestMethod.POST) @ResponseBody public Object test(HttpServletRequest request, HttpServletResponse response, @RequestBody(required = false) String json) { logger.info("test:" + json); TestUser tu = TestMapper.findUserWithId(1); logger.info("testMyabtis:" + tu.toString()); return tu.toString(); } }