Configure mybatis in the spring project

    There are many ways to integrate mybatis in spring, which can be fully configured by xml or fully annotated. Here is a configuration method that I think is relatively simple.

Project directory:

1. Reference the maven configuration of the jar package.

    <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> 	

2. Configure the spring application context.

Add configuration in namespace:

 xmlns:mybatis="http://mybatis.org/schema/mybatis-spring

Add configuration in xsi:schemaLocation:

http://mybatis.org/schema/mybatis-spring http://mybatis.org/schema/mybatis-spring.xsd

The configuration is shown in the figure:

2. Configure the package and sqlSessionFactory where the mapping mapper interface of mybatis is scanned.

        <!-- 定义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 here is the database connection pool. Configuration is not given here.

3. com.altnum.mybatis.domain.TestUser. Database table mapping bean.

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

4. Mybatis annotation mapping interface.

mybatis:scan will automatically scan all interfaces in the com.altnum.mybatis.mapper package as mapper configuration, and then automatically introduce mapper classes.

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

5. Test call.

Directly inject the reference mapper mapping interface in the control layer.

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

 

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325999253&siteId=291194637