一、什么是mybatis?
它是一款半自动的ORM持久层框架,具有较高的SQL灵活性,支持高级映射(一对一,一对多),动态SQL,延迟加载和缓存等特性,但它的数据库无关性较低。
通过这段时间的学习,我自己觉得mybatis是一个可以功能强大的数据库操作框架,他既方便编写和修改,并且功能强大,可以实现各种各样的SQL语句
二、快速入门
1.首相我们需要创建一个maven文件,这个在上篇文章中也介绍过了,不懂得可以看我的上一篇文章。创建好后大概是这样的,(创建是需要时间的,请耐心等待)
上图中的红框标记处,可以删除也可以继续在里面写,我是习惯删除然后,去创建自己的文件夹
2.导入依赖jar包
本次要用到的依赖jar,把下面的代码复制进去即可
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.6</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.2</version>
</dependency>
复制进去后记得刷新,不然是不可以使用的
3.然后创建一个entity文件,这个是根据自己使用的数据库建的例如,
我所使用的就是这个user表,并根据此表创建对应entity文件
package com.caicode.entity;
public class UserEntity {
private Integer id;
private String sname;
private String spassword;
private String nickName;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getSname() {
return sname;
}
public void setSname(String sname) {
this.sname = sname;
}
public String getSpassword() {
return spassword;
}
public void setSpassword(String spassword) {
this.spassword = spassword;
}
public String getNickName() {
return nickName;
}
public void setNickName(String nickName) {
this.nickName = nickName;
}
}
4.编写mapper文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.caicode.dao.UserDao">
<select id="queryById" resultType="com.caicode.entity.UserEntity">
select * from user where id = #{id}
</select>
</mapper>
一条简单的查询语句
5.编写全局配置文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"https://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:3306/mydb2"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="mappers/UserMapper.xml"/>
</mappers>
</configuration>
6.编写dao文件
package com.caicode.dao;
import com.caicode.entity.UserEntity;
public interface UserDao {
public UserEntity queryById(Integer id);
}
7.编写util文件,用以创建SqlSession
package com.caicode.util;
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 SqlSessionFactoryUtil {
static SqlSessionFactory sqlSessionFactory;
public static SqlSessionFactory cteateSqlSessionFactory() throws IOException {
if (sqlSessionFactory==null) {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSessionFactoryUtil.sqlSessionFactory = sqlSessionFactory;
}else {
return sqlSessionFactory;
}
return sqlSessionFactory;
}
public static SqlSession opSession(){
SqlSession sqlSession = sqlSessionFactory.openSession();
return sqlSession;
}
public static void main(String[] args) {
try {
SqlSession sqlSession = cteateSqlSessionFactory().openSession();
} catch (IOException e) {
e.printStackTrace();
}
}
}
8.编写service文件
package com.caicode.service;
import com.caicode.dao.UserDao;
import com.caicode.entity.UserEntity;
import com.caicode.util.SqlSessionFactoryUtil;
import org.apache.ibatis.session.SqlSession;
import java.io.IOException;
public class UserService {
public UserEntity queryOne(Integer id) throws IOException {
SqlSessionFactoryUtil.cteateSqlSessionFactory();
SqlSession sqlSession = SqlSessionFactoryUtil.opSession();
UserDao userDao = sqlSession.getMapper(UserDao.class);
UserEntity userEntity = userDao.queryById(id);
return userEntity;
}
}
9.编写测试类
package com.caicode.test;
import com.caicode.entity.UserEntity;
import com.caicode.service.UserService;
import java.io.IOException;
public class Test {
public static void main(String[] args) throws IOException {
UserEntity userEntity = new UserService().queryOne(1);
System.out.println(userEntity.getSname());
}
}
返回结果
到此算是完成了基础的应用