mybatis

Mybatis 官方网站:http://www.mybatis.org/mybatis-3

官方中文教程:http://www.mybatis.org/mybatis-3/zh/index.html

Mybatis 源码:https://github.com/mybatis/mybatis-3

Mybatis API:http://www.mybatis.org/mybatis-3/apidocs/index.html

推荐的blog

https://blog.csdn.net/isea533/article/category/2092001

https://www.cnblogs.com/hellokitty1/p/5216025.html

https://www.cnblogs.com/hellokitty1/p/5218892.html

 

https://blog.csdn.net/hellozpc/article/details/80878563

Mybatis 视频培训教程

http://edu.51cto.com/course/1354.html

 

 

在项目中引入 Mybatis jar 包的两种方式

1. 直接下载 mybatis-x.x.x.jar 文件,然后放到 classpath 路径中

2. 使用 Maven 管理依赖

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

配置 Mybatis 的几种方式

1. 使用 xml 配置文件,通常命名为 mybatis-config.xml (推荐)

2. 使用注解

3. 使用 Spring bean 方式进行配置

<?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>
    <settings>
<!-- logImpl 属性配置指定使用 LOG4J 输出日志 -->
<setting name="logImpl" value="LOG4J" /> </settings> <typeAliases>
<!-- 配置了一个包的别名,通常使用一个类需要使用全限定名 -->
<!-- 配置了 package 标签后,就可以只用类名,不需要写出包名 --> <package name="tk.mybatis.simple.model" /> </typeAliases>
<!-- 配置数据库的链接 --> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"> <property name="" value="" /> </transactionManager> <dataSource type="UNPOOLED"> <property name="driver" value="com.mysql.cj.jdbc.Driver" /> <property name="url" value="jdbc:mysql://192.168.100.142:3306/mybatis" /> <property name="username" value="username" /> <property name="password" value="password" /> </dataSource> </environment> </environments>
<!-- 配置完整的 Mapper.xml 路径 --> <mappers> <mapper resource="tk/mybatis/simple/mapper/CountryMapper.xml" /> </mappers> </configuration>

创建实体类和 Mapper.xml 文件

Mybatis 是一个结果映射框架,这里创建的实体类实际上是一个数据值对象(Data Value Object),是一个 JavaBean。

在实际应用中,一个表一般会对应一个实体类,一个字段对应一个实体类的属性,用于 INSERT、UPDATE、DELETE 和简单的 SELECT 操作。

Mybatis  默认遵循 “下划线转驼峰”的命名方式,所以在创建实体类的时候一般都按照这种方式进行。

一般用 Mapper 作为 XML 和接口名的后缀,这里的 Mapper 和常用的 DAO 后缀类似。

SQL 语句定义在 Mapper.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" >
<!-- 根元素,namespace属性定义了当前xml的命名空间 -->
<mapper namespace="tk.mybatis.simple.mapper.CountryMapper">
<!-- 定义一个select查询 id属性为当前查询定义唯一的id resultType属性定义了返回值类型 -->
<select id="selectAll" resultType="Country" > select id, countryname, countrycode from country </select> </mapper>

编写测试类使用 Mybatis

package tk.mybatis.simple.mapper;

import java.io.IOException;
import java.io.Reader;
import java.util.List;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import tk.mybatis.simple.model.Country;

public class CountryMapperTest {
    private static SqlSessionFactory sqlSessionFactory;
    
    //@BeforeClass
    public static void init() {
        try { 
// 该工具类用于将配置文件读入 Reader Reader reader
= Resources.getResourceAsReader("mybatis-config.xml");
// 创建 sqlSessionFactory 工厂对象,在创建过程中,首先解析 mybatis-config.xml
// 读取配置文件中的 mappers 配置后会读取全部的 Mapper.xml 进行具体方法的解析
// 在这些解析完成后,SqlSessionFactory 就包含了所有的属性配置和执行 SQL 的信息 sqlSessionFactory
= new SqlSessionFactoryBuilder().build(reader); reader.close(); } catch (IOException ignore) { ignore.printStackTrace(); } } //@Test public void testSelectAll() {
// 通过 SqlSessionFactory 工厂对象获取一个 SqlSession SqlSession sqlSession
= sqlSessionFactory.openSession(); try { // 通过 selectList 方法查找 Mapper.xml 中的 id="selectAll" select 语句,执行 SQL 查询
// Mybatis 底层使用 JDBC 执行 SQL,获得查询结果集 ResultSet 后,根据 resultType 的配置
// 将结果映射为相应类型的集合,返回查询结果
List
<Country> countryList = sqlSession.selectList("selectAll"); printCountryList(countryList); } catch (Exception e) { e.printStackTrace(); } finally { sqlSession.close(); // 关闭 sqlsession } } private void printCountryList(List<Country> countryList) { for (Country country : countryList) { System.out.printf("%-4d%4s%4s\n", country.getId(), country.getCountryName(), country.getCountryCode()); } } public static void main(String [] args) { CountryMapperTest countryMapperTest = new CountryMapperTest(); CountryMapperTest.init(); countryMapperTest.testSelectAll(); } }

 

posted on 2018-12-06 00:26  0820LL  阅读(155)  评论(0编辑  收藏  举报

导航