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&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的更高级的用法还需要我们去官网探究。

浙公网安备 33010602011771号