SpringMvc + mybatis环境搭建

450 阅读1分钟

1.相关配置

首先配置pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/maven-v4_0_0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>com.app</groupId>
	<artifactId>test</artifactId>
	<name>FirstSpring</name>
	<packaging>war</packaging>
	<version>1.0.0-BUILD-SNAPSHOT</version>
	<properties>
	<java-version>1.6</java-version>
	<org.springframework-version>4.2.0.RELEASE</org.springframework-version>
	<org.aspectj-version>1.6.10</org.aspectj-version>
	<org.slf4j-version>1.6.6</org.slf4j-version>
	
	<com.fasterxml.jackson.version>2.5.0</com.fasterxml.jackson.version>
	    <mybatis.generator.configurationFile>src\main\resources\generatorConfig.xml
	</mybatis.generator.configurationFile>
</properties>
・・・中间省略
<!-- mybatis -->
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis-spring</artifactId>
    <version>2.0.0</version>
</dependency>
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.5.0</version>
</dependency>

配置root-context.xml。也可能叫applicationContext.xml。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd
	http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd
	http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.2.xsd">
	
<!-- 配置数据源 -->
<bean id="basicDataSource" class="org.apache.commons.dbcp2.BasicDataSource">
	<property name="driverClassName" value="${jdbc.driverClassName}" />
	<property name="url" value="${jdbc.url}" />
	<property name="username" value="${jdbc.username}" />
	<property name="password" value="${jdbc.password}" />
	<property name="maxTotal" value="${jdbc.maxTotal}" />
</bean>

<!-- 配置扫描保存SQL语句的xml文件。测试用的是放在/src/main/java/com/app/mapper/下 -->
<bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">
	<property name="dataSource" ref="basicDataSource"/>
	<property name="mapperLocations" value="classpath:com/app/mapper/*.xml"/>
</bean>

<!-- 配置扫描mapper接口类 -->
<bean id="mapperScannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
	<property name="basePackage" value="com.app.mapper"/>
</bean>

<!-- 配置事务管理器 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
	<property name="dataSource" ref="basicDataSource"/>
</bean>
<tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true"/>

・・・中間省略
<!-- 添加自动生成 -->
<plugin>
    <groupId>org.mybatis.generator</groupId>
	<artifactId>mybatis-generator-maven-plugin</artifactId>
	<version>1.3.0</version>
</plugin>

2.mapper自动生成

src/main/resources/下生成generatorConfig.xml文件。用于自动生成mapper。注意classPathEntry指定自己的jdbc文件。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd" >
<generatorConfiguration>
    <classPathEntry
        location="C:/Users/lulu/.m2/repository/org/postgresql/postgresql/9.4-1206-jdbc42/postgresql-9.4-1206-jdbc42.jar" />
    <context id="context1">

        <jdbcConnection driverClass="org.postgresql.Driver"
            connectionURL="jdbc:postgresql://localhost:5432/postgres"
            userId="postgres" password="admin" />
        <javaModelGenerator
            targetPackage="com.sec.test.entity" targetProject="src/main/java/" />
        <sqlMapGenerator targetPackage="com.sec.test.mapper"
            targetProject="src/main/java/" />
        <javaClientGenerator
            targetPackage="com.sec.test.mapper" targetProject="src/main/java/"
            type="XMLMAPPER" />

        <table schema="public" tableName="%" />
    </context>
</generatorConfiguration>

接下来,试一下自动生成。假设数据库中添加了以下的表

CREATE TABLE users( 
  userid CHAR (4) NOT NULL
  , password VARCHAR(16) NOT NULL
  , auth VARCHAR (10) NOT NULL
  , PRIMARY KEY (userId)
);

Eclipse中选择Maven Build。Goals填写mybatis-generator:generate

像下面这样显示build success就成功了

对当前工程按F5刷新文件,会发现entity下跟mapper下生成相关的mapper接口跟mapper文件。

3.测试能否使用mybatis

建一个测试用service

@Service
public class TestSqlService {
	@Autowired
	UsersMapper mapper;
	
	public Users getUsers() {
		return mapper.selectByPrimaryKey("0001");
	}
}

跟一个测试用controller

@RestController
public class TestSqlController {
	@Autowired
	TestSqlService service;
	
	@RequestMapping("testMybatis")
	public Users show() {
		System.out.println("test mybatis");
		Users usr = service.getUsers();
		System.out.println(usr);
		return usr;
	}
	
}

浏览器访问http://localhost:8080/test/testMybatis,发现控制台输出了select的结果,测试成功。

如果浏览器返回406,说明不接收json,可以添加以下依赖

<dependency> <!-- json处理jar包 -->
	<groupId>com.fasterxml.jackson.core</groupId>
	<artifactId>jackson-core</artifactId>
	<version>${com.fasterxml.jackson.version}</version>
</dependency>
<dependency> <!-- json处理jar包 -->
	<groupId>com.fasterxml.jackson.core</groupId>
	<artifactId>jackson-annotations</artifactId>
	<version>${com.fasterxml.jackson.version}</version>
</dependency>
<dependency>  <!-- json处理jar包 -->
	<groupId>com.fasterxml.jackson.core</groupId>
	<artifactId>jackson-databind</artifactId>
	<version>${com.fasterxml.jackson.version}</version>
</dependency>