MyBatis入门

MyBatis入门

第一章 编写MyBatis第一个小程序


一、MyBatis是什么?

MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录。

二、准备工作

1.搭建环境

  • 需要在数据库中创建一个名为‘user’的表,表的属性有id、name、pwd;并插入三条数据。
CREATE DATABASE mybatis;
USE mybatis;
CREATE TABLEuser(
‘id‘ INT(20) NOT NULL PRIMARY KEY,
‘name‘ VARCHAR(30) DEFAULT NULL,
‘pwd‘ VARCHAR(30) DEFAULT NULL
)ENGINE=INNODB DEFAULT CHARSET=utf8;
INSERT INTOuser(‘id‘,‘name‘,‘pwd‘) VALUES 
(0,'薯条','123456'),
(1,'薯条','123456'),
(2,'薯条','123456')

2.新建项目

  • 新建一个普通的maven项目
    (1)打开IDEA软件,点击导航栏file
    (2)点击New->Project 在这里插入图片描述
    (3)点击Maven->Next 在这里插入图片描述
    (4)点击Artifact Coordinates,在Artifactld中输入项目名称在这里插入图片描述
    (5)点Finish完成项目创建 在这里插入图片描述

  • 删除src文件
    方便我们建立子项目 ,省去重复建立项目文件的时间

  • 目录
    在这里插入图片描述

  • 导入maven依赖

在总文件的pom.xml文件中添加

dependencies>
    <!--mysql驱动  (为了连接数据库)-->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.47</version>
    </dependency>
    <!--mybatis-->
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.5.2</version>
    </dependency>
    <!--junit-->
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
    </dependency>
</dependencies>

3.创建模块

  • 编写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核心配置文件  -->
<configuration>
    <environments default="development">   <!--environments 可以配置多套环境  default默认选择的环境 -->
        <environment id="development">
            <transactionManager type="JDBC"/>         <!--事务管理-->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>    <!--driver 驱动  -->
                <property name="url" value="jdbc:mysql://localhost:13306/mybatis?useSSL=true&amp;useUnicode= true&amp;characterEncoding=UTF-8"/>
                <property name="username" value="root"/>
                <property name="password" value="147258"/>
            </dataSource>
        </environment>
    </environments>
</configuration>

4.编写mybatis工具类

MybatisUtils

//该文件是工具类,用来获取mybatis需要的sqlSessionFactory类
//sqlSessionFactory  Factory是工厂类 ,用来构建产品的,也就是构建sqlSession
public class MyBatisUtils {
   private static SqlSessionFactory sqlSessionFactory;//提升作用域
   static {
       try {
           //使用mybatis的第一步
           //获取sqlSessionFactory对象
           String resource = "mybatis-config.xml";   //获取资源,也就是获取数据库的数据
           InputStream inputStream = Resources.getResourceAsStream(resource);  //用resource把这个类加载进来
           sqlSessionFactory =new SqlSessionFactoryBuilder().build(inputStream);  //通过Builder把流加载进来
       } catch (IOException e) {
           e.printStackTrace();
       }
      }
       //已经拥有了 SqlSessionFactory,顾名思义,可以获取 SqlSession 的实例。
       // SqlSession 绝对包含对数据库执行 SQL 命令所需的所有方法。
       // 可以直接针对 SqlSession 实例执行映射的 SQL 语句
       public static SqlSession getSqlSession(){
           return sqlSessionFactory.openSession(); 
          //优化后的,原先长这样  SqlSession sqlSession = sqlSessionFactory.openSession();
   }
}

三、编写代码

1.实体类

User

public class User {
    private int id;
    private String name;
    private String pwd;

    //构造无参
    public User() {
    }
    //有参

    public User(int id, String name, String pwd) {
        this.id = id;
        this.name = name;
        this.pwd = pwd;
    }

    //get set方法
    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 String getPwd() {
        return pwd;
    }

    public void setPwd(String pwd) {
        this.pwd = pwd;
    }
    //toString
    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", pwd='" + pwd + '\'' +
                '}';
    }
}

2.dao接口

UserMapper

//操作数据库对象的实体
//Dao等价 mapper
public interface UserDao {
    List<User> getUserList();
}

3.接口实现类(操作实体类)

在下方数据库查询语句中
如果数据库连接到了IDEA软件,查询语句应该写select * from 数据库名.表名,这样才能查询到表中的数据
如果数据库没有与IDEA软件连接,使用select * from 表名

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">
<!--namespace 名字空间    绑定一个对应的Dao/Mapper接口-->
<mapper namespace="com.shutiao.dao.UserDao">
<!-- select 查询语句   -->
<!--    id  对应UserDao中的方法名字,List<User> getUserList();中的getUserList-->
<!--    resultType  返回一个结果,Map返回多个-->
    <select id="getUserList" resultType="com.shutiao.pogo.User" >
        select * from user
    </select>
</mapper>

四、查询语句

1.namespace

namespace中的包名、路径要和Mapper接口的包名、路径一致

2.select查询语句

  • id:对应的namespace中的方法名
  • resultType:Sql语句执行的返回值
    在这里插入图片描述

五、编写测试

  • 测试文件的路径要与Dao接口文件的目录一致
    在这里插入图片描述

UserDaoTest

@Test
public void test(){
    SqlSession sqlSession = MybatisUtils.getSqlSession();
    UserMapper userDao = sqlSession.getMapper(UserMapper.class);
    List<User> userList=userDao.getUserList();
    for (User user : userList){
        System.out.println(user);
    }
    sqlSession.close();
}

六、测试结果

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值