学习myBatis - 如何配置myBatis

这篇文章主要学习如何配置myBatis。

要学习新东西要讲究方法,我觉得要从三个层面去理解它:它是什么(what),为什么要学它(why),怎么用它(how)。有了学习方法学习的效率才高。

1、myBatis是什么(what)

  myBatis的官方用户指南上面是这样写的:MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架。MyBatis 消除 了几乎所有的 JDBC 代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML 或注解用于配置和原始映射,将接口和 Java 的 POJOs(Plan Old Java Objects,普通的 Java 对象)映射成数据库中的记录。

  说通俗一点就是myBatis可以代替原来的JDBC对数据库进行一系列操作。

2、为什么要学myBatis(why)

  有人说我可以用JDBC实现我所有想对数据库进行的操作,为什么还要学myBatis?之所以这样说,那是因为你还没有碰见复杂的操作:当你需要从多个表中查询数据并返回一个对象,这时候你就会领悟到myBatis强大的地方。(当然myBatis有很多强大的地方,这只是简单的举一个例子。)

  另外有很多公司在招软件工程师的时候都要求能熟练使用myBatis,比如阿里巴巴、华为等。

3、怎么使用myBatis(how)

  好了废话不多说,来一起看看怎么去使用它。

  要使用它得先知道怎么去配置它,能够让它顺利的运行起来。那么这篇文章就主要简单的说明怎么正确的配置myBatis。

  新建一个普通Java项目,项目结构如图:

  

  首先从myBatis的主要配置文件(conf.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>

    <!-- 给类取别名,否则你必须要用包名加类名来保证类的唯一性 -->
    <typeAliases>
        <typeAlias alias="User" type="com.tony.bean.User" />
    </typeAliases>
    <environments default="development">
        <environment id="development">
            <!-- 事务管理类型 -->
            <transactionManager type="JDBC" />
            <!-- 数据源 -->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver" />
                <property name="url" value="jdbc:mysql://localhost:3306/webtest" />
                <property name="username" value="root" />
                <property name="password" value="mian.mysql" />
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <!-- 映射文件实现-->
        <mapper resource="com/tony/mapper/UserMapper.xml" />
        <!-- 注解实现 -->
        <!-- <mapper class="com/tony/mapper/UserMapper.java" /> -->
    </mappers>
</configuration>

  当sql语句比较简单的时候采用注解的方式更方便,这时候就不用再去写xml文件了:直接在接口方法上面用注解写上需要执行的sql语句。  

  然后是配置的映射文件UserMapper.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.tony.mapper.UserMapper">

    <!-- 一条查询语句 -->
    <select id="selectUserById" parameterType="int" resultType="User">
        select * from userinfo where id = #{id}
    </select>

</mapper>

  该映射文件绑定的命名空间是 com.tony.mapper.UserMapper,意味着程序可以从直接调用该接口中的方法从而返回自己想要的Java对象而不需要强制转换。

  

  接下来是UserMapper.java接口,这个接口最主要的功能就是方便程序调用映射文件中的sql语句,免去了一些不必要的代码,使你的代码看上去更加简洁。

 1 package com.tony.mapper;
 2
 3 import org.apache.ibatis.annotations.Select;
 4
 5 import com.tony.bean.User;
 6
 7 public interface UserMapper {
 8
 9     /**
10      * 方法名必须与映射文件中的id一致!
11      * 方法名上面注释的那条语句就是用注解的实例
12      * @param id 需要查找的id
13      * @return 直接返回User对象!
14      */
15 //  @Select("select * from userinfo where id=#{id}")
16     public User selectUserById(int id);
17
18 }

  与映射文件绑定的接口里面的方法名称必须和映射文件中的id一致,否则将会报错。另外,通过注解实现的方法我也写了,就是方法名上面的那一行代码。

  

  最后是一个自定义的User类,User类的对象对应着数据库中的一条记录,每一个属性对应着一个字段,并且只有getter和setter方法;

 1 package com.tony.bean;
 2
 3 public class User {
 4     private String username;
 5     private String pwd;
 6     private String id;
 7
 8
 9     public String getId() {
10         return id;
11     }
12     public void setId(String id) {
13         this.id = id;
14     }
15     public User() {
16     }
17     public User(String username, String password) {
18         this.username = username;
19         this.pwd = password;
20     }
21     public String getUsername() {
22         return username;
23     }
24     public void setUsername(String username) {
25         this.username = username;
26     }
27     public String getPwd() {
28         return pwd;
29     }
30     public void setPwd(String pwd) {
31         this.pwd = pwd;
32     }
33     @Override
34     public String toString() {
35         return "User [username=" + username + ", password=" + pwd + "]";
36     }
37
38 }

  好了,现在myBatis的基本配置基本上就配好了。下面我们在Main.java中进行测试:

 1 package com.tony.main;
 2
 3 import java.io.InputStream;
 4 import org.apache.ibatis.session.SqlSession;
 5 import org.apache.ibatis.session.SqlSessionFactory;
 6 import org.apache.ibatis.session.SqlSessionFactoryBuilder;
 7
 8 import com.tony.bean.User;
 9 import com.tony.mapper.UserMapper;
10
11 public class Mian {
12     public static void main(String[] args) {
13
14         //加载myBatis配置文件
15         InputStream is=Mian.class.getClassLoader().getResourceAsStream("conf.xml");
16
17         //从配置文件中构建一个SqlSessionFactory
18         SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(is);
19
20         //打开一个Session会话
21         SqlSession session=factory.openSession();
22
23         //通过session获得一个mapper
24         UserMapper mapper=session.getMapper(UserMapper.class);
25
26         //通过mapper可以直接调用接口中的方法,并且不需要强制转换!!
27         //这是一个与不绑定namespace配置的一个非常大的区别和优势。
28         User u1 = mapper.selectUserById(1);
29         User u2 = mapper.selectUserById(3);
30
31         System.out.println(u1.toString());
32         System.out.println(u2.toString());
33
34         session.close();
35
36     }
37 }

  运行结果为:

  与表中记录吻合:

  

  

  好了,myBatis的比较常用的配置基本上就这些:主配置文件,映射文件,与映射文件绑定的接口。

  

  最后有几点说明:

  1、这篇文章主要讲的是如何简单配置myBatis,所以就没有对配置文件中的所有配置项进行说明。如果大家需要详细了解各个配置项的作用,我推荐大家去看myBatis的官方用户指南,这里面说的很详细。

  2、因为在代码文件中的注释写的比较详细,所以在文章中就没有用过多的篇幅去重复了。

  3、这篇文章完全是笔者自己在学习myBatis时总结的经验,不免有错误和疏漏的地方,还望大家指正。

时间: 2024-10-06 01:41:53

学习myBatis - 如何配置myBatis的相关文章

MyBatis MapperScannerConfigurer配置――MyBatis学习笔记之八

MyBatis MapperScannerConfigurer配置——MyBatis学习笔记之八 2012-09-02 20:01:42 标签:Spring MyBatis MapperScannerConfigurer bean默认命名 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://legend2011.blog.51cto.com/3018495/980150 在上一篇博文的示例中,我们在beans.xml中配置了stu

SpringBoot学习--04SpringBoot整合Mybatis(上)(配置mybatis generator,PageHelper)

陆陆续续又忙了几天,继续写. 本篇仿照着优秀的文章的书写,加上自己的理解和踩过的坑,原文地址:https://www.jianshu.com/p/5cd772c07041?utm_campaign=haruki&utm_content=note&utm_medium=reader_share&utm_source=weixin 环境/版本一览: 开发工具:eclipse springboot: 2.0.1.RELEASE jdk:1.8.0_40 maven:3.3.9 额外功能:

SpringBoot 整合MyBatis 统一配置bean的别名

所谓别名, 就是在mappper.xml配置文件中像什么resultType="xxx" 不需要写全限定类名, 只需要写类名即可. 配置方式有两种: 1. 在 application.yml中 #mybatis相关配置 mybatis: type-aliases-package: com.zzuli.domain 2. 在application.properties中 mybatis.type-aliases-package=cn.byzt.bean 两种方式选其一即可. 注意: 在S

MyBatis学习总结(三)——优化MyBatis配置文件中的配置(转载)

孤傲苍狼 只为成功找方法,不为失败找借口! MyBatis学习总结(三)--优化MyBatis配置文件中的配置 一.连接数据库的配置单独放在一个properties文件中 之前,我们是直接将数据库的连接配置信息写在了MyBatis的conf.xml文件中,如下: 1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE configuration PUBLIC "-//mybatis.org

【转】MyBatis学习总结(三)——优化MyBatis配置文件中的配置

[转]MyBatis学习总结(三)——优化MyBatis配置文件中的配置 一.连接数据库的配置单独放在一个properties文件中 之前,我们是直接将数据库的连接配置信息写在了MyBatis的conf.xml文件中,如下: 1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//E

mybatis学习笔记(六)使用generator生成mybatis基础配置代码和目录结构

原文:http://blog.csdn.net/oh_mourinho/article/details/51463413 创建maven项目 [java] view plain copy print? <span style="font-size:14px;"><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSc

SpringBoot学习笔记(1):配置Mybatis

SpringBoot学习笔记(1):配置Mybatis 参考资料: 1.AndyLizh的博客 2.xiaolyuh123的博客 快速开始 添加Mybatis依赖(其他依赖已省去) <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <dependency> <groupId

MyBatis学习(二):与Spring整合(非注解方式配置MyBatis)

搭建SpringMVC的-->传送门<-- 一.环境搭建: 目录结构: 引用的JAR包: 如果是Maven搭建的话,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

MyBatis学习笔记(3)—— 利用mybatis灌入假数据

由于第三方厂商未能按时提供实时数据,故需要纯手动导入一些实时数据,用于统计分析.正好最近自己学习了mybatis .因此使用mybatis 配置一个select.insert 的简单操作语句,用于灌入实时数据. 业务表 Ems_Standard_FormulaRelation[配置表,主要提供实时表的unitId,mediaId,standardId] Ems_StandardRuntime_Hour[实时表] 准备工作 数据库我用的是sqlserver 2008 r2 1.在lib 中导入所需