MyBatis系列目录--1. MyBatis快速接入

本文详细介绍了如何使用MyBatis框架进行数据库操作,并通过单元测试验证其功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转载请注明出处哈:http://carlosfu.iteye.com/blog/2238662


 1. 添加pom依赖:

 

<properties>
    <mybatis.version>3.2.7</mybatis.version>
    <mysql-connector-java.version>5.1.29</mysql-connector-java.version>
    <junit.version>4.11</junit.version>
</properties>
<dependencies>
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>${mybatis.version}</version>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>${mysql-connector-java.version}</version>
        <type>jar</type>
        <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>${junit.version}</version>
    </dependency>
</dependencies>
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.1</version>
            <configuration>
                <source>1.7</source>
                <target>1.7</target>
                <encoding>UTF-8</encoding>
            </configuration>
        </plugin>
    </plugins>
</build>
 

 

2. 建库建表(mysql)

 

create database football DEFAULT CHARACTER SET utf8;
use football;
create table players(
id int primary key auto_increment,
name varchar(20) not null comment '球员名',
age int
)ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='球员表';
insert into players(name, age) values('kaka', 33);
insert into players(name, age) values('ronaldo', 40);
 

 

3. mybatis基础配置 (mybatis-base.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">
            <!-- 事务使用的是jdbc的方式 -->
            <transactionManager type="JDBC" />
            <!-- 连接池 -->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver" />
                <property name="url" value="jdbc:mysql://localhost:3306/football" />
                <property name="username" value="root" />
                <property name="password" value="your password" />
            </dataSource>
        </environment>
    </environments>
</configuration>
   
1. transaction:
JDBC – 这个配置就是直接使用了 JDBC 的提交和回滚设置,它依赖于从数据源得到的连接来管理事务范围。
MANAGED – 这个配置几乎没做什么。它从来不提交或回滚一个连接,而是让容器来管理事务的整个生命周期(比如 JEE 应用服务器的上下文)。 
如果是spring+mybatis,无需配置transactionManager。

2. dataSource type: UNPOOLED|POOLED|JNDI

 

 

4. 定义实体类

 

package com.sohu.tv.bean;
/**
 * 用户实体
 * @author leifu
 * @Date 2015年7月28日
 * @Time 上午9:48:09
 */
public class Player implements Serializable{
    /**
     * 用户id
     */
    private int id;
     
    /**
     * 用户名
     */
    private String name;
     
    /**
     * 年龄
     */
    private int age;
    public Player() {
    }
    public Player(int id, String name, int age) {
        this.id = id;
        this.name = name;
        this.age = 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;
    }
    @Override
    public String toString() {
        return "Player [id=" + id + ", name=" + name + ", age=" + age + "]";
    }
     
     
}
 

 

5. 定义Dao

 

package com.sohu.tv.mapper;
import com.sohu.tv.bean.Player;
/**
 * 注解方式实现PlayerDao
 * 
 * @author leifu
 * @Date 2015年7月28日
 * @Time 上午10:16:39
 */
public interface PlayerDao {
    public Player getPlayerById(int id);
}
 

 

 

6. 定义操作players表的sql映射文件playerMapper.xml (放到classpath下 mapper目录下)

 

<?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.sohu.tv.mapper.PlayerDao">
    <select id="getPlayerById" parameterType="int" resultType="com.sohu.tv.bean.Player">
        select id,name,age from players where id=#{id}
    </select>
</mapper>

 

7. 在mybatis-base.xml文件中注册playerMapper.xml文件

<mappers>
    <!--xml方式-->
    <mapper resource="mapper/playerMapper.xml" />
</mappers>

 

8. 单元测试(最原始方式)
package com.sohu.tv.test.mapper;
import java.io.IOException;
import java.io.Reader;
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 org.junit.Test;
import com.sohu.tv.bean.Player;
import com.sohu.tv.mapper.PlayerDao;
/**
 * mybatis-xml方式配置(原始方式)
 * 
 * @author leifu
 * @Date 2015年7月28日
 * @Time 上午9:54:07
 */
public class PlayerMapperXmlTest {
    @Test
    public void testGetPlayer() throws IOException {
        String resource = "mybatis-base.xml";
        // 加载mybatis的配置文件(它也加载关联的映射文件)
        Reader reader = Resources.getResourceAsReader(resource);
        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
        // 创建能执行映射文件中sql的sqlSession
        SqlSession sqlSession = sessionFactory.openSession(true);
        //statement方式
        String statement = "com.sohu.tv.mapper.PlayerDao" + ".getPlayerById";
        Player player1 = sqlSession.selectOne(statement, 1);
        System.out.println("player1: " + player1);
         
        //Mapper代理方式
        PlayerDao playerDao = sqlSession.getMapper(PlayerDao.class);
        Player player2 = playerDao.getPlayerById(2);
        System.out.println("player2: " + player2);
    }
}

 

 

 

<think>好的,我需要解决用户关于MyBatis配置文件mybatis-config.xml路径和内容的疑问。用户提到“classpath:mybatis/mybatis-config.xml”,所以首先得明确classpath在项目中的位置。首先,classpath通常指项目编译后的资源目录,比如在Maven项目中,src/main/resources目录下的文件会直接放在classpath根目录下。如果用户配置的是classpath:mybatis/mybatis-config.xml,那这个文件应该位于resources/mybatis目录下。需要确认用户的项目结构是否正确,比如是否在正确的位置创建了mybatis文件夹,并将配置文件放入其中。接下来,关于配置文件的内容,用户提供的引用中提到了mybatis-config.xml的基本结构,比如environments配置数据源、事务管理,以及mappers指定映射文件的位置。需要把这些内容整理出来,说明各个部分的作用,比如settings中的日志配置,typeAliases别名处理等。用户可能遇到的问题是配置文件路径错误导致MyBatis无法加载,或者配置内容有误导致连接数据库失败。需要给出典型的配置示例,并指出常见配置项,如数据库驱动、URL、用户名密码,以及日志输出的设置方法,如使用STDOUT_LOGGING来在控制台打印SQL日志。另外,用户之前的问题是关于SQL日志的配置,所以需要确保在当前的回答中提到的日志配置部分与之前的指引一致,比如引用中的settingname="logImpl"value="STDOUT_LOGGING",这对应之前提到的MyBatis原生配置方法。可能需要强调在mybatis-config.xml中设置这个选项,而不是在application.yml中,取决于用户使用的是纯MyBatis还是整合了Spring Boot。 最后,生成相关问题时要围绕配置文件的路径、内容、常见配置错误以及与其他框架整合时的注意事项,帮助用户扩展可能遇到的其他问题。</think>### MyBatis配置文件`mybatis-config.xml`路径及内容解析 --- #### 一、配置文件路径说明 `classpath:mybatis/mybatis-config.xml`表示该配置文件位于**项目的资源目录(classpath)下的`mybatis`文件夹中**。具体路径取决于项目结构: 1. **Maven/Gradle项目**: - 标准资源目录:`src/main/resources/mybatis/mybatis-config.xml` - 编译后路径:`target/classes/mybatis/mybatis-config.xml`(Maven)或`build/resources/main/mybatis/mybatis-config.xml`(Gradle)[^1] 2. **非Maven项目**: - 需确保`mybatis-config.xml`位于类加载器可识别的资源路径中,例如`WEB-INF/classes/mybatis/` --- #### 二、配置文件核心内容 以下为典型的`mybatis-config.xml`结构(包含事务管理、数据源、日志配置等): ```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> <!-- 全局参数设置 --> <settings> <!-- 开启日志输出(控制台打印SQL) --> <setting name="logImpl" value="STDOUT_LOGGING"/> <!-- 开启驼峰命名映射 --> <setting name="mapUnderscoreToCamelCase" value="true"/> </settings> <!-- 数据源配置 --> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="com.mysql.cj.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/test_db"/> <property name="username" value="root"/> <property name="password" value="123456"/> </dataSource> </environment> </environments> <!-- 映射文件配置 --> <mappers> <mapper resource="mybatis/UserMapper.xml"/> </mappers> </configuration> ``` **关键配置项说明**: 1. **`<settings>`**:定义全局行为,如日志实现、缓存策略等[^4] 2. **`<environments>`**:配置数据库连接池和事务管理器[^2] 3. **`<mappers>`**:指定Mapper XML文件路径(支持`resource`、`class`、`package`等方式)[^1] --- #### 三、常见问题排查 1. **配置文件未找到**: - 检查文件是否位于`resources/mybatis`目录 - 确认Maven的`pom.xml`中是否包含资源声明: ```xml <resources> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.xml</include> </includes> </resource> </resources> ``` 2. **配置未生效**: - 确认MyBatis初始化时正确加载了配置文件(如`SqlSessionFactoryBuilder`的输入流路径) - 若整合Spring Boot,需在`application.yml`中指定配置文件路径: ```yaml mybatis: config-location: classpath:mybatis/mybatis-config.xml ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值