美文网首页
Maven+spring+Mybatis+Mysql环境搭建及M

Maven+spring+Mybatis+Mysql环境搭建及M

作者: 威武不能屈 | 来源:发表于2017-05-13 17:33 被阅读237次

前期

数据库准备

本文使用的是mysql数据库,默认已启动mysql,且已存在数据库mybatis
接下来,创建表,并插入数据

DROP TABLE IF EXISTS `users`;
CREATE TABLE `users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(20) NOT NULL,
  `age` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;

-- ----------------------------
--  Records of `users`
-- ----------------------------
BEGIN;
INSERT INTO `users` VALUES ('1', 'Lily', '18'), ('2', 'HanMeiMei', '60'), ('3', 'David', '30');
COMMIT;

SET FOREIGN_KEY_CHECKS = 1;

sql语句执行完成后,即完成了数据的准备工作。
接着我们开始一步步的来搭建Maven+spring+Mybatis+Mysql环境吧

Maven+spring+Mybatis+Mysql环境搭建

1.创建Maven工程

如何创建Maven工程,可参考另一篇文章:http://www.jianshu.com/p/2786d27452e7 这里就不再多述。

2.添加相关依赖

首先需要在pom.xml文件中添加spring相关依赖:

<dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>4.0.6.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>4.1.7.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>4.1.7.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-support</artifactId>
            <version>4.1.7.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>4.1.7.RELEASE</version>
        </dependency>

接着添加MyBatis-Spring依赖:

<dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>1.3.0</version>
        </dependency>

MyBatis-Spring简单介绍(官网地址点这里):
MyBatis-Spring将MyBatis与Spring无缝集成。该库允许MyBatis参与Spring事务,负责构建MyBatis映射器和SqlSession,并将它们注入到其他bean中,将MyBatis异常转换为Spring DataAccessException,最后,它允许您构建您的应用程序代码,而不依赖于MyBatis, Spring或MyBatis-Spring。
继续添加MyBatis依赖:

<dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.3.0</version>
        </dependency>

添加mysql依赖:

<dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.15</version>
        </dependency>

需要测试验证环境是否已配置ok,再添加一个testng的依赖:

<dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>6.8.8</version>
        </dependency>

至此,所需要用到的jar都已添加成功,接下来继续看如何修改配置文件

3.配置文件

spring配置文件beans.xml,spring的配置文件比较简单,这里就不多做介绍了。

<?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"
       xsi:schemaLocation="http://www.springframework.org/schema/beans   http://www.springframework.org/schema/beans/spring-beans-4.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

    <!--配置数据源 -->
    <bean id="dataSource"
          class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver" />
        <property name="url" value="jdbc:mysql://localhost:3306/mybatis" />
        <property name="username" value="root" />
        <property name="password" value="root" />
    </bean>

        <!--配置sessionfactory,spring和mybatis的完美结合,不需要mybatis的配置映射文件-->
    <bean id="sessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <!--自动扫描mapper.xml文件-->
        <property name="mapperLocations" value="classpath:com.exp.mybatis.service/**/*Mapper.xml"/>
    </bean>

    <!--装配Dao接口,spring会自动查找其下的类-->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.exp.mybatis.service.mapper" />
        <property name="sqlSessionFactoryBeanName" value="sessionFactory" />
    </bean>

    <!--声明式事务管理-->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource" />
    </bean>
</beans>

其中需要注意的是如果未配置<property name="mapperLocations" value="classpath:com.exp.mybatis.service/**/*Mapper.xml"/>则默认是在basePackage对应的目录下寻找mapper.xml文件;如果映射接口类文件(.java)与映射xml文件(.xml)不在同一个包下的话,需要配置mapperLocations属性。

实例

上面三步已经将框架基本搭好,接下来,一个实例来看看如何应用。
首先,新建Users bean(User.java)

public class User {
    private int id;
    private String name;
    private int age;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

其次,新建映射接口文件(UsersMapper.java)

public interface UsersMapper {
    User getUser(int id);
}

接着,新建映射xml文件(UsersMapper.xml)

<?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,namespace的值习惯上设置成包名+sql映射文件名,
这样就能够保证namespace的值是唯一的例如namespace="com.exp.mybatis.service.mapper.UsersMapper"
就是(包名)+UsersMapper(UsersMapper.xml文件去除后缀)
-->
<mapper namespace="com.exp.mybatis.service.mapper.UsersMapper">
    <!-- 在select标签中编写查询的SQL语句,设置select标签的id属性为getUser,id属性值必须是唯一的,不能够重复
        使用parameterType属性指明查询时使用的参数类型,resultType属性指明查询返回的结果集类型
        resultType="com.exp.mybatis.service.domain.User"就表示将查询结果封装成一个User类的对象返回
        User类就是users表所对应的实体类-->
    <!--根据id查询得到一个user对象-->
    <select id="getUser" parameterType="int" resultType="com.exp.mybatis.service.domain.User">
        select * from users where id=#{id,jdbcType=INTEGER}
    </select>
</mapper>

最后,在新建一个测试类(UserTest.java)来验证是否能够正常操作数据库数据

@ContextConfiguration(locations = {"classpath:beans.xml"})
public class UserTest extends AbstractTestNGSpringContextTests {

    @Autowired
    UsersMapper usersMapper;

    @Test
    public void test(){
        User user = usersMapper.getUser(1);
        System.out.println(user.getAge());
        System.out.println(user.getName());
    }
}

run执行test(),执行结果正确,结果:

图1

工程目录结构如下:

图2

搭环境过程中遇到的问题

1.报错:org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):xx.xx.xx(包名).xx(类名).xx(方法名)
原因分析:从异常信息的提示来看是一个无效的语句绑定错误,一般出现该错误是由于MyBatis的Mapper映射的xml文件丢失或者没配置好
解决办法:检查自己的映射文件

  • 文件名是否有错误
  • mapper映射文件路径是不是不对
  • target中是否有mapper.xml文件

相关文章

  • Maven+spring+Mybatis+Mysql环境搭建及M

    前期 数据库准备 本文使用的是mysql数据库,默认已启动mysql,且已存在数据库mybatis接下来,创建表,...

  • 第一章 基础知识回顾

    django 基础知识回顾 标签: djanjo djanjo实战环境搭建 虚拟环境搭建 具体内容详见环境搭建 m...

  • fabric1.2网络环境启动过程详解

    fabric运行机制及环境搭建 fabric运行机制及环境搭建环境依赖基于docker镜像的fabric1.2开发...

  • Centenos虚拟环境

    进入虚拟环境: python 3.6.2 搭建python的虚拟环境 python -m venv /myblog...

  • Django框架(一):Django项目与环境搭建

    1. 环境搭建 准备环境: ubuntu python 3.5+ pycharm 2017.1.5 + 专业版 M...

  • ELK 搭建及实战

    ELK 搭建及实战 JDK1.8环境搭建和Kibana实战部署 ELK介绍和JDK1.8环境搭建 实战环境 Cen...

  • Hive2.1.1集群搭建

    软件环境: 主机配置: 一共m1, m2, m3这五部机, 每部主机的用户名都为centos 集群搭建: 一.搭建...

  • 开发环境搭建

    开发环境搭建。简述如下(详细说明请参考“Nordic nRF51/nRF52开发环境搭建”): 安装Keil5 M...

  • test

    破碎可视化环境搭建及部署文档 软交换机上环境搭建及程序部署 搭建前准备 debian8 系统盘、 JDK8 压缩包...

  • Mac OS安装 mysqlclient 遇到的坑及解决办法

    学习任何语言,首先要搭建环境,而这个过程中会遇到很多坑。最近用 Python 搭建开发环境,本地 Mac 上装 m...

网友评论

      本文标题:Maven+spring+Mybatis+Mysql环境搭建及M

      本文链接:https://www.haomeiwen.com/subject/eljstxtx.html