在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(); } }