SSM学习笔记——Mybatis(一)

mybatis

1、第一个mybatis项目

①、创建数据库

②、创建maven项目(删掉src做父工程)

③、pom文件导入maven依赖

   <dependencies>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.2</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.47</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

④、创建一个模块,编写mybatis核心配置文件、工具类

模块下的src – main – resource 文件夹下面创建一个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"/>  <!--事务管理,默认是JDBC事务管理-->
      <dataSource type="POOLED">     <!--数据来源,连接数据库-->
        <property name="driver" value="${driver}"/><!--com.mysql.jdbc.Driver
        <property name="url" value="${url}"/>     <!--jdbc:mysql://localhost:3306/blog(这个是数据库的名字)?-->useSSL=true&amp;useUnicode=true&amp;characterEncoding=utf8
        <property name="username" value="${username}"/>
        <property name="password" value="${password}"/>
      </dataSource>
    </environment>
  </environments>
  <mappers>
    <mapper resource="org/mybatis/example/BlogMapper.xml"/>
  </mappers>
</configuration>

src – main – java – com – fu – dao + utils , 这个utils就是工具类,编写工具类
获取sqlSessionFactory对象的三步 (这三句是死的,可以直接拷)

String resource = "org/mybatis/example/mybatis-config.xml";    //加载mybatis资源
InputStream inputStream = Resources.getResourceAsStream(resource);  //通过流来获取资源
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); //获取对象

具体代码

package com.fu.utils;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
import java.io.InputStream;
public class mybatisUtils {
    static {
        String resource = "org/mybatis/example/mybatis-config.xml";
        try {
            InputStream inputStream = Resources.getResourceAsStream(resource);
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

然后写一个获取SqlSession的方法getSqlSession

因为sqlSessionFactory是在static,所以getSqlSession不能直接获取,所以需要提升作用域,再去获取SqlSession,最终工具类的目的就是为了获取SqlSession对象。

最终代码:

package com.fu.utils;
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 java.io.IOException;
import java.io.InputStream;
public class mybatisUtils {
    private static SqlSessionFactory sqlSessionFactory;
    static {
        String resource = "org/mybatis/example/mybatis-config.xml";
        try {
            InputStream inputStream = Resources.getResourceAsStream(resource);
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    public static SqlSession getSqlSession(){
        return sqlSessionFactory.openSession();
    }
}

⑤、写代码 ---- 实体类、Dao接口、接口实现类

实体类(com.fu.pojo下建一个User类)

alt + insert : 定义属性,无参,有参,get/set方法,toString方法

接口(com.fu.dao下建一个UserDao接口)

package com.fu.dao;
import com.fu.pojo.User;
import java.util.List;
public interface UserDao {
    List<User> selectUser();
}

然后写接口的实现类,也就是接口的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.fu.dao.UserDao">   //绑定接口
    <select id="selectUser" resultType="com.fu.pojo.User">  //
       select * from user;
    </select>
</mapper>

最后编写测试类

package com.fu.dao;
import com.fu.pojo.User;
import com.fu.utils.mybatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import java.util.List;
public class UserDaoTest {
    @Test
    public void test(){
        // 第一步:获取sqlsession对象 死的
        SqlSession sqlSession = mybatisUtils.getSession(); 
        //执行sql
        UserDao userDao = sqlSession.getMapper(UserDao.class);
        List<User> user = userDao.selectUser(); //方法名修改正确,参数填写需要查询的,因为查询的是所有用户信息,所以返回的是一个User类型的List
        for(User users : user){
            System.out.println(users);
        }//输出
        sqlSession.close(); //关闭sqlsession 死的
    }
会遇到的问题

1、没有注册

Type interface com.fu.dao.UserDao is not known to the MapperRegistry.

解决办法:核心配置文件中要有mapper标签,然后用/分隔,不是.

2、资源过滤,测试无法提取文件,需要手动资源过滤,再pom.xml中填上

<dependencies>
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.5.2</version>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.47</version>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.11</version>
        <scope>test</scope>
    </dependency>
</dependencies>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值