Mybatis入门

Mybatis入门

配置maven依赖

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.49</version>
</dependency>

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

创建数据库,数据表

DROP DATABASE IF EXISTS mybatis;
CREATE DATABASE mybatis DEFAULT CHARACTER SET utf8;

USE mybatis;
CREATE TABLE student(
	id int(11) NOT NULL AUTO_INCREMENT,
	studentID INT(11) NOT NULL UNIQUE,
	name VARCHAR(255) NOT NULL,
	PRIMARY KEY (id)
) ENGINE=INNODB DEFAULT CHARSET=utf8;

INSERT INTO student VALUES(null,1,"我没有三颗心脏");
INSERT INTO student VALUES(null,2,"我没有三颗心脏");
INSERT INTO student VALUES(null,3,"我没有三颗心脏");

SELECT * FROM student;

创建实体类

创建实体类Student,添加set,get方法

创建配置文件

db.properties 数据库信息

db.properties 前缀“mysql” 可以自定义,用来保存数据相关信息

mysql.driver=com.mysql.jdbc.Driver
mysql.url=jdbc:mysql://localhost:3306/sakila
mysql.username=root
mysql.password=1234

mybatis.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>
    <!--使用属性读取配置数据-->
    <properties resource="db.properties"/>
    <typeAliases>
        <package name="pojo"/>
    </typeAliases>
    <environments default="mysql_developer">
        <environment id="mysql_developer">
            <!--使用jdbc管理方式-->
            <transactionManager type="jdbc"/>
            <!--设置数据源,配置驱动,连接字符串,用户名,用户密码-->
            <dataSource type="pooled">
                <property name="driver" value="${mysql.driver}"/>
                <property name="url" value="${mysql.url}"/>
                <property name="username" value="${mysql.username}"/>
                <property name="password" value="${mysql.password}"/>
            </dataSource>
        </environment>
    </environments>
</configuration>

参考:4、在mybatis中使用db.properties

mapper.xml 文件的创建

方式一:文件创建位置一般为对于实体类所在的包下,通过mave中的maven-resources-plugin插件

拷贝mapper.xml 资源文件到对应的包下(没有生效)

方式二:直接在resource目录下创建对应的包,maven在构建的时候会自动将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">

<mapper namespace="pojo">
    <select id="listStudent" resultType="Student">
        select * from  student
    </select>
</mapper>
  • 在mybatis.xml中声明了别名typeAliases,resultType就不需要使用完全限定名称,直接写类名
  • id 是这条sql语句的唯一标识,java代码中使用 session.select(),session.update() 等语句执行对应sql

在mybatis.xml中添加mapper

<mappers>
     <mapper resource="pojo/Student.xml"/>
</mappers>

解析配置文件,拿到Session对象

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 pojo.Student;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

public class StudentTest {

    @Test
    public void getStudent() throws IOException {
        String resource = "mybatis_cfg.xml";
        //使用ibatis包下得Resources工具类解析加载mybatis_cfg.xml
        InputStream inputStream = Resources.getResourceAsStream(resource);
        //使用SqlSessionFactoryBuilder-->SqlSessionFactory-->SqlSession
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        SqlSession sqlSession = sqlSessionFactory.openSession();
        List<Student> liststudent = sqlSession.selectList("listStudent");
        for (Student stu :
                liststudent) {
            System.out.println(stu);
        }
    }
}

mybatis能够做什么?

mybatis 再mybatis中配置数据库连接,在mapper.xml中写sql,获取到session后执行对应的sql,并且返回值是mapper中配置实体类对象,不需要手动实例化对象之后再封装到集合中

mybatis的优点

  • 从数据库中查询出来的数据不需要手动再封装,自动实例化到实体类
  • 在代码中不包含sql语句,sql语句的集中管理

mybatis使用总结

  • 配置maven依赖

  • 配置文件:db.properties, mybatis.xml, mapper.xml

  • 创建对应的实体类

  • 拿到session会话,执行对应的sql语句,拿到查询结果

问题:

新建mybatis_cfg.xml, entity_mapper.xml的时候,命名空间那么长一串怎么记得住?

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值