1.添加依赖,在pom.xml中添加

<!--mybatis核心包-->
<dependency>
  <groupId>org.mybatis</groupId>
  <artifactId>mybatis</artifactId>
  <version>3.3.0</version>
</dependency>
<!--MySQL的JDBC驱动包-->
<dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
  <version>5.1.29</version>
</dependency>

2. 添加Entity

public class UsersEntity {
  private Integer userid;

  private String username;

  public Integer getUserid() {
    return userid;
  }

  public void setUserid(Integer userid) {
    this.userid = userid;
  }

  public String getUsername() {
    return username;
  }

  public void setUsername(String username) {
    this.username = username == null ? null : username.trim();
  }

}

3. 添加dao层的interface UsersEntityMapper.java

public interface UsersEntityMapper {

  UsersEntity getUsersByPhoneNo(String phoneNo);

}

4. 添加mapper的xml UsersEntityMapper.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="com.alphaomega.sunshine.dao.UsersEntityMapper">
  <select id="getUsersByPhoneNo" parameterType="String" resultType="com.alphaomega.sunshine.entity.UsersEntity">
    select * from users where phoneno = #{phoneNo}
  </select>
</mapper>

5. 添加mybatis的配置文件mybatis_config.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
  <environments default="development">
    <environment id="development">
      <transactionManager type="JDBC" />
      <!-- 配置数据库连接信息 -->
      <dataSource type="POOLED">
        <!-- 1.加载数据库驱动 -->
        <property name="driver" value="com.mysql.jdbc.Driver" />
        <!-- 2.数据库连接地址 (&->&amp;)-->
        <property name="url" value="jdbc:mysql://127.0.0.1:3306/schema_name?useUnicode=true&amp;characterEncoding=utf-8&amp;useSSL=true" />
        <!-- 数据库用户... -->
        <property name="username" value="root" />
        <!-- 数据库密码... -->
        <property name="password" value="xxxxxxx" />
      </dataSource>
    </environment>
  </environments>

  <mappers>
  <!-- 注册文件-->
    <mapper resource="com/alphaomega/sunshine/mappers/UsersEntityMapper.xml"/>
    <mapper resource="com/alphaomega/sunshine/mappers/XxxxxxEntityMapper.xml"/>
  </mappers>

</configuration>

6. mybatis配置文件mybatis_config.xml和UsersEntityMapper.xml的位置

UsersEntityMapper.xml如果放在src/main/java里的话,则需要向pom添加路径,否则package时会报错:找不到xml文件,

原因是maven默认xml文件在src/main/resources里(不过后来发现,即使放在了默认里也不行)。

<build>

  <resources>
    <resource>
      <directory>src/main/java</directory>
      <includes>
        <include>**/*.xml</include>
      </includes>
    </resource>

  </resources>

</build>

向maven项目添加src/main/resources目录,并将mybatis_config.xml放在里面。(虽然可以通过另创建文件夹,然后use as source,但还是按照maven默认比较舒服)

添加的方式可以通过Project-Properties-Java Build Path-Source-Add Folder-选中文件夹后Create new folder...

同样,测试目录src/test/resources也通过这样执行。

问题来了,测试时没有任何问题,但是jar包不能,maven会把test目录的xml文件复制到target/test-class下,但是不会将main下的xml复制到target/class里,

除了那些mapper,因为已经指定了路径。因此还需要在pom的resources标签里指定,为了maven复制过去。

<build>

  <resources>
    <resource>
      <directory>src/main/java</directory>
      <includes>
        <include>**/*.xml</include>
      </includes>
    </resource>

    <resource>
      <directory>src/main/resources</directory>
      <includes>
        <include>**/*.xml</include>
      </includes>
    </resource>

  </resources>

</build>

7. 最后使用

String resouces = "mybatis_config.xml";
InputStream in = Resources.getResourceAsStream(resouces);
//读取配置文件的配置信息,利用SqlSessionFactoryBuilder创建sqlSessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(in);
//利用sqlSessionFactory打开与数据库的会话
SqlSession sqlSession = sqlSessionFactory.openSession();
try {
  UsersEntityMapper ueMapper = sqlSession.getMapper(UsersEntityMapper.class);//通过sqlSession得到mapper
  String no = "13299999999";
  UsersEntity user = ueMapper.getUsersByPhoneNo(no);//调用mapper的方法
  //只读操作不需要sqlSession.commit()
  System.out.println("查询到用户...");
  System.out.println(user.getUsername());
} finally {
  sqlSession.close();
}

maven项目使用mybatis+mysql的更多相关文章

  1. 利用Intellij+MAVEN搭建Spring+Mybatis+MySql+SpringMVC项目详解

    http://blog.csdn.net/noaman_wgs/article/details/53893948 利用Intellij+MAVEN搭建Spring+Mybatis+MySql+Spri ...

  2. Maven项目使用mybatis报错 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):

    maven项目使用mybatis时,找不到mapper文件(.xml) 错误信息提示: 项目可以正常运行,但是在有请求到达服务器时(有访问数据库的请求),会出现报错!! 错误原因: mybatis没有 ...

  3. springmvc学习总结(二) -- maven+springmvc+spring+mybatis+mysql详细搭建整合过程讲解

    @_@ 写在最前 之前分享过下面这几篇: mybatis学习笔记(五) -- maven+spring+mybatis从零开始搭建整合详细过程(上)(附demo和搭建过程遇到的问题解决方法) myba ...

  4. maven+springmvc+spring+mybatis+mysql详细搭建整合过程讲解

    转自:https://www.cnblogs.com/lmei/p/7190755.html?utm_source=itdadao&utm_medium=referral @_@ 写在最前 之 ...

  5. Maven 项目使用mybatis的环境搭建-基于xml形式实现查询所有的功能

    首先了解一下什么是 MyBatis? MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集. ...

  6. idea 下 启动maven项目,mybatis报错 Error parsing SQL Mapper Configuration. Cause: java.io.IOException。。。。。

    我的具体报错日志是   Error parsing SQL Mapper Configuration. Cause: java.io.IOException  Could not find resou ...

  7. Spirng+SpringMVC+Maven+Mybatis+MySQL项目搭建(转)

    这篇文章主要讲解使用eclipse对Spirng+SpringMVC+Maven+Mybatis+MySQL项目搭建过程,包括里面步骤和里面的配置文件如何配置等等都会详细说明. 如果还没有搭建好环境( ...

  8. freemarker + spring mvc + spring + mybatis + mysql + maven项目搭建

    今天说说搭建项目,使用freemarker + spring mvc + spring + mybatis + mysql + maven搭建web项目. 先假设您已经配置好eclipse的maven ...

  9. eclipse下SpringMVC+Maven+Mybatis+MySQL项目搭建

    这篇文章主要讲解使用eclipse对Spirng+SpringMVC+Maven+Mybatis+MySQL项目搭建过程,包括里面步骤和里面的配置文件如何配置等等都会详细说明. 接下来马上进入项目搭建 ...

随机推荐

  1. python字典中值为列表或字典的构造方式

    1.值为列表的构造方法 dic = {} dic.setdefault(key,[]).append(value) >>dic.setdefault('a',[]).append(1) & ...

  2. ng-repeat 设定select 选择项

    <select class="form-control m-b" name="FPermissionID" ng-model="mgfunc.F ...

  3. SpringCloud+Eureka+Feign+Ribbon的简化搭建流程,加入熔断,网关和Redis缓存[2]

    目录 前提:本篇是基于 SpringCloud+Eureka+Feign+Ribbon的简化搭建流程和CRUD练习[1] 的修改与拓展 1.修改consumer的CenterFeign.java,把返 ...

  4. Linux设备驱动的软件架构思想

    驱动相关:硬件之上的软件层,负责底层硬件与用户程序的交互 设备相关:底层设备的硬件操作 总线:匹配设备和驱动     设备驱动分层的思想:为同一类设备设计一个框架,而框架中的核心层则实现了该设备的一些 ...

  5. A. Optimal Currency Exchange 兑换硬币,剩下的钱最少

    A. Optimal Currency Exchange time limit per test 1.5 seconds memory limit per test 512 megabytes inp ...

  6. 视图家族 & 路由组件

    目录 视图家族 & 路由组件 视图集与路由组件 基于 GenericAPIView 的十大接口 基于 generics 包下工具视图类的六大基础接口 视图集 路由组件:必须配合视图集使用 自定 ...

  7. 微信小程序中,如何实现显示,隐藏密码的功能

    最近在搞小程序的开发,遇到隐藏,显示密码的功能的时候,电脑上调试没问题,但是手机上面点击却没有效果,必须要跳转到其他页面再跳回来,才能正常显示. 一时间搞得我很头疼,查找资料后,终于知道了是什么原因. ...

  8. 每天一点点之vue框架 watch监听变量(深度监听)

    <div> <p>FullName: {{fullName}}</p> <p>FirstName: <input type="text& ...

  9. stm32_f103使用gcc编译的环境下printf打印函数的实现

    前记   gcc编译使用的printf打印函数需要的底层函数是和其他编译器不同的,以前的是无法使用的,这里有两种方法,一种是使用gcc库里面的printf函数,自己实现底层IO函数_write.另外一 ...

  10. JVM中 Class 文件分析

    Java 虚拟机中定义的 Class 文件格式.每一个 Class 文件都对应着唯一一个类 或接口的定义信息,但是相对地,类或接口并不一定都得定义在文件里(譬如类或接口也可以通过 类加载器直接生成). ...