1.介紹
-
開發(fā)環(huán)境:
- eclipse
- Mysql 5.7.29
-
jar包
mybatis-3.5.4.jar
mysql-connector-java-8.0.15.jar
1.1什么是Mybatis
[官網(wǎng)簡介][https://mybatis.org/mybatis-3/zh/index.html]
MyBatis 是一款優(yōu)秀的持久層框架,它支持自定義 SQL、存儲過程以及高級映射。
MyBatis 免除了幾乎所有的 JDBC 代碼以及設(shè)置參數(shù)和獲取結(jié)果集的工作。
什么是框架:
比如:一張報(bào)名表,因?yàn)橛辛藯l條框框,所以你只需要在對應(yīng)的地方填你的個人信息可以了。
? 假如沒有了框架,給你一張白紙,讓你填寫報(bào)名,這肯定是不方便的。
1.2為什么要用Mybatis
- 簡單易學(xué)使用人多,方便
- 傳統(tǒng)的JDBC代碼太復(fù)雜了
- sql和代碼分離
- 等等
2.導(dǎo)入jar包
2.1 下載mybatis-×.×.×.jar包
下載過后是一個.zip的壓縮包,解壓文件,里面會有一個mybatis-×.×.×.jar的文件,
將該文件復(fù)制到項(xiàng)目中的WEB-INF/lib文件下
同時將連接mysql需要的jar包也放到同文件下
效果:
3.入門程序查詢用戶信息
3.1配置mybatis-config.xml
配置mybatis核心文件mybatis-config.xml
在項(xiàng)目中新建源文件夾,用于存放配置文件
這個文件可以實(shí)現(xiàn)數(shù)據(jù)庫的連接
為什么一定要新建源文件夾,而不能選擇在包里創(chuàng)建呢?
請移步:
Eclipse實(shí)現(xiàn)Mybatis出現(xiàn)java.io.IOException: Could not find resource XXX.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"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/><!--driver-->
<property name="url" value="jdbc:mysql://localhost:3306/mybatis01?serverTimezone=UTC"/>
<property name="username" value="root"/><!--名字-->
<property name="password" value="521314"/><!--密碼-->
</dataSource>
</environment>
</environments>
<!--mappers-mapper 標(biāo)簽,在3.4之后在進(jìn)行配置-->
<mappers>
<mapper resource="UserMapper.xml"/>
</mappers>
</configuration>
注意:
-
如果是低版本8 以下的mysql代碼如下,這個跟jdbc是一樣的
<property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/mybatis01"/> -
關(guān)于mappers元素官方話:
mappers 元素則包含了一組映射器(mapper),這些映射器的 XML 映射文件包含了 SQL 代碼和映射定義信息。
3.2創(chuàng)建user,對應(yīng)數(shù)據(jù)庫一條記錄
package mapper;
public class User {
private int id;
private String name;
private String password;
private String tel;
@Override
public String toString() {
return "User [id=" + id + ", name=" + name + ", password=" + password + ", tel=" + tel + "]";
}
//以下還有g(shù)et,set方法,篇幅問題在此省略
}
3.3定義接口和查詢?nèi)坑脩舻姆椒ǎ?/h2>
import java.util.List;
public interface UserMapper {
List<User> getUserlist();//查詢所有用戶
}
3.4 配置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">
<mapper namespace="UserMapper"> <!--空間名對應(yīng)接口名-->
<select id="selectBlog" resultType="User"> <!--id對應(yīng)接口中的抽象方法,resultType 返回值類型-->
select * from user <!--這是一個查詢語句,查詢user表-->
</select>
</mapper>
import java.util.List;
public interface UserMapper {
List<User> getUserlist();//查詢所有用戶
}
<?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="UserMapper"> <!--空間名對應(yīng)接口名-->
<select id="selectBlog" resultType="User"> <!--id對應(yīng)接口中的抽象方法,resultType 返回值類型-->
select * from user <!--這是一個查詢語句,查詢user表-->
</select>
</mapper>
配置完之后:
回到3.1,在配置文件mybatis-config.xml中加入mappers標(biāo)簽并配置
3.5從 SqlSessionFactory 中獲取 SqlSession
創(chuàng)建在utils包下創(chuàng)建mybatisUtils類
讀取mybatis-config.xml配置信息連接數(shù)據(jù)庫
package utils;
import java.io.IOException;
import java.io.InputStream;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
public class MybatisUtils {
static SqlSessionFactory sqlSessionFactory;
static {
//配置文件所在地址
String resource = "mybatis-config.xml";
try {
InputStream inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static SqlSession getsqlSession() {
//通過sqlSession工廠類獲取sqlSession對象
return sqlSessionFactory.openSession();
}
}
4 編寫測試方法
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import mapper.User;
import mapper.UserMapper;
import utils.MybatisUtils;
public class TestMapper {
@Test
public void test() {
//獲取sqlSession
SqlSession sqlSession = MybatisUtils.getsqlSession();
UserMapper mapper= sqlSession.getMapper(UserMapper.class);
List<User> userlist=mapper.getUserlist();
for(User user:userlist) {
System.out.println(user);
}
sqlSession.close();
}
}
5.舉例異常
可能出現(xiàn)的異常:
- java.io.IOException: Could not find resource XXX.xml -解決方法
- org.apache.ibatis.exceptions.PersistenceException -解決方法