Mybatis起步

MyBatis-Logo

1 简介

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

2 快速起步

2.1 安装

为了使用Mybatis,需要将 mybatis-x.x.x.jar 添加进类路径
如果你使用Maven进行包管理,只需在pom.xml中添加如下依赖:

<dependencies>
	<dependency>
		<groupId>org.mybatis</groupId>
		<artifactId>mybatis</artifactId>
		<version>3.5.4</version>
	</dependency>
</dependencies>

在本文中,我将使用mysql数据库进行演示,因此需在pom.xml中添加mysql依赖 mysql-connector-java :

<dependencies>
	<dependency>
		<groupId>mysql</groupId>
		<artifactId>mysql-connector-java</artifactId>
		<version>8.0.18</version>
	</dependency>
</dependencies>

类似的使用Oracle或SqlServer,需要添加相应的JDBC连接依赖包

2.2 获取所有用户信息

每个MyBatis应用程序都以SqlSessionFactory的一个实例为中心,而SqlSessionFactory可以通过SqlSessionFactoryBuilder来创建,SqlSessionFactoryBuilder 可以通过读取XML配置文件,或者自定义一个配置类,来创建SqlSessionFactory实例,然后就可以通过SqlSessionFactory获得SqlSession来进行数据库操作了

2.2.1 XML方式

在项目中创建如下图所示文件目录:
项目文件目录
在mysql中,使用Navicat创建数据库test(字符集选utf8mb4,排序规则选utf8mb4_general_ci),在test数据库中创建tb_user表,并向表中插入一些数据

CREATE TABLE `tb_user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(30) DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  `addr` varchar(30) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=31 DEFAULT CHARSET=utf8mb4;
省略插入数据sql语句

编写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>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <!--在value处填写自己的数据库连接信息-->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://127.0.0.1:3306/test?useSSL=false&amp;serverTimezone=UTC&amp;characterEncoding=utf-8"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>
    <!--将resources下的mapper/UserMapper.xml配置进来-->
    <mappers>
        <mapper resource="mapper/UserMapper.xml" />
    </mappers>
</configuration>

编写User类 :

public class User {
    private int id;
    private String name;
    private int age;
    private String addr;
	省略getter、setter、toString
}

编写UserMapper接口类 :

public interface UserMapper{
	//查询所有用户
    public List<User> selectAll();
}

编写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值为对应UserMapper接口类的全名-->
<mapper namespace="com.mybatis_learn.mapper.UserMapper">
    <!--此处 id与UserMapper接口类中查询所有用户接口名保持一致 resultType值为对应User类的全名-->
    <select id="selectAll" resultType="com.mybatis_learn.entity.User">
        select * from tb_user
    </select>
</mapper>

至此基础配置已完成,下面开始测试
编写 test1 类进行测试 :

public class test1 {
    public static void main(String[] args) throws IOException {
        String resource = "mybatis-config.xml";
        // 构建xml配置文件输入流
        InputStream inputStream = Resources.getResourceAsStream(resource);
        // 通过SqlSessionFactoryBuilder创建SqlSessionFactory
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        // 通过sqlSessionFactory创建SqlSession
        try (SqlSession session = sqlSessionFactory.openSession()) {
            // 使用SqlSession.selectList方法调用UserMapper接口类中的selectAll
            // 此方法会使用对应UserMapper.xml中配置的id为selectAll的select方法,调用其sql语句进行查询并返回结果
            List<User> users = session.selectList("com.mybatis_learn.mapper.UserMapper.selectAll", User.class);
            for (User user : users) {
                System.out.println(user.toString());
            }
        }
    }
}

测试成功,控制台输出如下图所示 :
输出结果

2.2.2 配置类方式

如果个人更偏向Java类配置方式而不是XML,或者创建自己的配置生成器,MyBatis提供了一个完整的配置类,它提供了与XML文件相同的所有配置选项,下面开始尝试使用这种方式 :

修改UserMapper接口类 :

public interface UserMapper{
    @Select("select * from tb_user")
    public List<User> selectAll();
}

创建并编写测试类 test2 :

public class test2 {
    public static void main(String[] args) throws Exception {
        String driver = "com.mysql.cj.jdbc.Driver";
        String url = "jdbc:mysql://127.0.0.1:3306/test?useSSL=false&serverTimezone=UTC&characterEncoding=utf-8";
        String username = "root";
        String password = "123456";
        DataSource dataSource =  new PooledDataSource(driver,url,username,password);
        TransactionFactory transactionFactory = new JdbcTransactionFactory();
        Environment environment = new Environment("development", transactionFactory, dataSource);
        Configuration configuration = new Configuration(environment);
        configuration.addMapper(UserMapper.class);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration);
        try (SqlSession session = sqlSessionFactory.openSession()) {
    		//创建UserMapper
            UserMapper userMapper = session.getMapper(UserMapper.class);
            List<User> users = userMapper.selectAll();
            for (User user : users) {
                System.out.println(user.toString());
            }
        }
    }
}

运行结果如下所示 :
输出结果
本文内容来源于 : https://mybatis.org/mybatis-3/
可以尝试看官方文档,实现下CRUD

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值