Mybatis快速入门

 

此文为记录Mybatis入门的第一篇

目录

1.数据库准备

2.idea创建maven项目

3.在pom.xml中导入依赖

4.参考Mybatis3官网编写Mybatis的核心配置文件

5.编写工具类

6.编写dao层接口

7.编写pojo实体类

8.编写mapper.xml映射文件

9.编写测试类

 

1.数据库准备

  首先Mybatis是来操作数据库的,所以我们首先应该建好库和表

  语句如下:

    CREATE DATABASE `mybatis`;
    USE `mybatis`;
    CREATE TABLE `user`(
      `id` INT(20) auto_increment NOT NULL,
      `name` VARCHAR(30) NOT NULL,
      `pwd` VARCHAR(30)NOT NULL,
      PRIMARY KEY(`id`)
    )ENGINE=INNODB DEFAULT CHARSET=UTF8;

 

  我们的表就已经建好了,现在处插入一些数据:

    INSERT INTO `user`(`name`,`pwd`) VALUES("田甜1号","123456"),("田甜2号","123456"),("田甜3号","123456");

  至此,我们的user表中已经有3条数据了。

 

 

 

2.idea创建maven项目

  创建的项目结构如下:

  

 

 

   我们为了以后的工作,练习,我们删除src文件夹,新建一个module,项目结构如下

 

 

   至此,我们的maven项目也已经创建好了。

3.在pom.xml中导入依赖

  首先我们考虑一下,我们需要导入什么依赖?

  ·1.因为是与数据库打交道,所以数据库的依赖不可缺少

  ·2我们是使用Mybatis去操作数据库,所以mybatis的依赖也需要导入进来

  ·3我们需要测试验证我们的代码是否有问题,所以我们再导入测试依赖Junit

--------------------------分割线---------------------------------

<!--依赖导入-->
<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>

--------------------------分割线---------------------------------

 

 

 

  至此,我们的依赖也导入完毕。

4.参考Mybatis3官网编写Mybatis的核心配置文件

  首次接触到Mybatis,我们并不知道需要配置哪些配置,所以,我们去Mybatis的官网参考:https://mybatis.org/mybatis-3/zh/getting-started.html

  在官网的入门里,我们看到了配置,如下:

--------------------------分割线---------------------------------

<?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"/>
      <dataSource type="POOLED">
        <property name="driver" value="${driver}"/>
        <property name="url" value="${url}"/>
        <property name="username" value="${username}"/>
        <property name="password" value="${password}"/>
      </dataSource>
    </environment>
  </environments>
  <mappers>
    <mapper resource="org/mybatis/example/BlogMapper.xml"/>
  </mappers>
</configuration>

--------------------------分割线---------------------------------

  XML 配置文件中包含了对 MyBatis 系统的核心设置,包括获取数据库连接实例的数据源(DataSource)以及决定事务作用域和控制方式的事务管理器(TransactionManager)。

  这里,我们修改为自己的数据库配置:

<?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"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:13306/mybatis?serverTimezone=UTC&amp;characterEncoding=UTF-8"/>
<property name="username" value="root"/>
<property name="password" value="Hui.tian"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="org/mybatis/example/BlogMapper.xml"/>
</mappers>
</configuration>

  至此,我们的核心配置文件初步配置好了。

 

 

 

5.编写工具类

  我们参考官网的文档:

 

 

  看完这一段,我们得到sqlsession这一个实例来执行映射的SQL语句。

  如果我们有许多SQL要执行,最好也是推荐的办法就是,将共有的部分抽象出来,编写为我们自己的工具类。

  代码如下:

----------------------------分割线--------------------------------------------

  

package com.tian.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 {
try {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
}

//创建sqlsession对象,以便执行SQL语句
public static SqlSession getSqlSession(){
return sqlSessionFactory.openSession();
}
}

-----------------------分割线-----------------------------------------

 

 

 

  至此,我们的工具类也已经完成了。

6.编写pojo实体类 

  编写实体类,我们的属性就和数据库对应起来

-------------------分割线---------------------------------

package com.tian.pojo;

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;
}

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

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;
}
}

-------------------分割线---------------------------------

 

 

   至此,我们的实体类编写完成。  

7.编写dao层接口

   我们编写dao层的接口

--------------------分割线---------------------------

package com.tian.dao;

import com.tian.pojo.User;

import java.util.List;

public interface UserDAO {
//获取所有用户
List<User> getAllUser();

//根据id查询用户
User getUserById(int id);

//增加一个用户
int addUser(User user);

//修改一个用户
int updateUser(User user);

//根据id删除一个用户
int deleteUserById(User user);
}

------------------分割线--------------------------

 

 

 

8.编写mapper.xml映射文件

  接下来,就是需要我们编写映射文件了,也就是sql语句

--------------------分割线-----------------------------------

<?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.tian.dao.UserDAO">

<select id="getAllUser" resultType="com.tian.pojo.User">
select * from user
</select>

<select id="getUserById" resultType="com.tian.pojo.User">
select * from user where id = #{id}
</select>

<insert id="addUser" parameterType="com.tian.pojo.User">
insert into user values (#{id},#{name},#{pwd})
</insert>

<update id="updateUser" parameterType="com.tian.pojo.User">
update user set name = #{name},pwd = #{pwd} where id = #{id};
</update>

<delete id="deleteUserById" parameterType="com.tian.pojo.User">
delete from user where id = #{id}
</delete>

</mapper>

--------------------分割线-----------------------------------

 

   至此,我们对的mapper映射文件也已经编写完成。

9.编写测试类

  我们来测试我们的代码

------------------------------分割线------------------------------

package com.tian.dao;

import com.tian.pojo.User;
import com.tian.utils.MybatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;

import java.util.List;

public class MyTest {
@Test
public void test1(){
SqlSession sqlSession = MybatisUtils.getSqlSession();

UserDAO mapper = sqlSession.getMapper(UserDAO.class);

List<User> allUser = mapper.getAllUser();
for (User user : allUser) {
System.out.println(user);
}

sqlSession.close();
}
}

------------------------------分割线------------------------------

 

  咦,怎么出错了,我们看下报错信息,没有找到资源,映射文件,那我们去绑定映射文件。

 

 还是出错的,一样的报错信息,我们查看target下并没有生成Usermapper.xml文件,所以class文件去找UserMapper.xml文件时,是找不到的。

我们的pom.xml文件中需要添加过滤,将非resources路径的下的文件也加载进来。

-------------------------------分割线---------------------------------

<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>

<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
</build>

-------------------------------分割线----------------------------------

 

可以看到,我们已经查出来数据了,至此我们就已经可以操作数据库了,但是Mybatis的更高级的用法还需要我们去官网探究。 

 

posted @ 2020-07-30 11:00  田甜001  阅读(139)  评论(0)    收藏  举报