建議在resources下配置接口的mapper類,並且和接口具有相同的路徑

1. 導入mybatis和mysql相關驅動
<!--導入相關依賴-->
<!--lombok-->
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.20</version>
<scope>provided</scope>
</dependency>
<!--mysql驅動-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.17</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>
<scope>provided</scope>
</dependency>
<!--log4j依賴-->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
</dependencies>
log4j配置文件
2. 配置 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>
<!--配置-->
<properties>
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="jdbc.url" value="jdbc:mysql://localhost:3306/demo1?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</properties>
<settings>
<!--Log4j 日志-->
<setting name="logImpl" value="LOG4J"/>
<!--駝峰命名對應數據庫下划線-->
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
<!--起別名,可以在mapper.xml的返回值/參數類型中用 alias 替換 type-->
<!-- package可以在特定的路徑掃描包中的類,可以使用注解@Alias("XX")來替換類的全限定名,如果不用注解則默認小寫字母的類名-->
<typeAliases>
<!--<typeAlias type="com.c21w.pojo.User" alias="User"></typeAlias>-->
<package name="com.c21w.pojo"/>
</typeAliases>
<!--多套環境 default可以默認選中哪套環境-->
<environments default="development">
<!--環境-->
<environment id="development">
<!--事務管理 默認 JDBC-->
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<!--每一個mapper都需要在xml中注冊-->
<!--package可以吧一個包內的全部xml文件導入,前提是xml文件和對應的接口在同一個包-->
<mappers>
<package name="com.c21w.dao"/>
<!--<mapper resource="com/c21w/dao/Mapper/UserMapper.xml"></mapper>-->
</mappers>
</configuration>
3. 創建mybatis工具類
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 Utils {
private static SqlSessionFactory sqlSessionFactory = null;
static{
/*獲取 sqlSessionFactory 對象 */
String resource = "mybatis-config.xml";
InputStream inputStream = null;
try {
inputStream = Resources.getResourceAsStream(resource);
} catch (IOException e) {
e.printStackTrace();
}
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
}
// 有了 SqlSessionFactory,我們可以從中獲得 SqlSession 的實例。SqlSession 提供了在數據庫執行 SQL 命令所需的所有方法。
// 你可以通過 SqlSession 實例來直接執行已映射的 SQL 語句
public static SqlSession getSqlSession(){
return sqlSessionFactory.openSession(false);
}
//傳入true可以默認開啟事務
public static SqlSession getSqlSession(boolean bl){
return sqlSessionFactory.openSession(bl);
}
}
4. 編寫dao/mapper接口
//例子:
import com.c21w.pojo.User;
import org.apache.ibatis.annotations.Param;
import java.util.Date;
import java.util.List;
import java.util.Map;
public interface UserMapper {
//查詢所有用戶信息
List<User> getUserList();
// 根據姓名查詢用戶
User getUser(String name);
// 添加一個用戶(多個參數列表可以使用注解)
void addUser(@Param("name")String name,@Param("time") Date time, @Param("math")double math, @Param("eng")double english,@Param("sex") String sex);
// 修改信息
void updateUser(User user);
// 多參數可以封裝為map
void updateUser2(Map<String,Object> map);
// 刪除
void deleteUser(String name);
}
5. 創建mapper.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 綁定一個對於的 Dao/Mapper 接口-->
<mapper namespace="com.c21w.dao.UserMapper">
<!--查詢語句-->
<!--id對應方法名字-->
<!--resultType對應返回值,集合的話對應泛型-->
<select id="getUserList" resultType="User">
select * from demo1_01
</select>
<select id="getUser" resultType="User" parameterType="String">
select * from demo1_01 where name = #{name};
</select>
<!--使用@Param注解可以不用 parameterType-->
<insert id="addUser">
insert into demo1_01 value (#{name},#{time},#{math},#{eng},#{sex});
</insert>
<update id="updateUser" parameterType="User">
update demo1_01 set math=#{math} where name=#{name}
</update>
<!--多參數封裝為 Map 集合,#{XX},XX為鍵的名字-->
<update id="updateUser2" parameterType="map">
update demo1_01 set math = #{mathed} where name = #{named};
</update>
<delete id="deleteUser" parameterType="java.lang.String" >
delete from demo1_01 where name=#{name};
</delete>
</mapper>
多對一和一對多查詢
6. 去 mybatis-config.xml中注冊Dao/Mapper接口(要用斜杠分割)
<!--例子:-->
<mappers>
<mapper resource="com/c21w/dao/Mapper/UserMapper.xml"></mapper>
</mappers>
7. 去pom文件中配置文件加載的位置
<!--配置加載位置-->
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.xml</include>
<include>**/*.properties</include>
</includes>
<filtering>true</filtering>
</resource>
<!-- 把 java 中的 xml 文件和 properties 文件 加載-->
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
<include>**/*.properties</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
</build>
8. 編寫運行
package com.c21w.dao;
import com.c21w.utils.Umybais;
import org.junit.Test;
public class UserMapperTest {
@Test
public void test(){
Utils.getSqlSession().getMapper(UserMapper.class).getUserList()
.stream().forEach(user -> System.out.println(user));
}
}