在上一篇中(https://blog.csdn.net/qq_38261445/article/details/91050170)我们实现了用Mybatis-generator插件快速生成mapper文件与model实体类,mapper.xml中基本上实现了对一个实体类中所有的操作,但是在我自己开发的时候依然不知道怎么使用mapper里面的方法,或者说怎么通过某些接口来实现对数据库的操作,因为这里面某些文件也相当于是模板了,对以后也会有帮助,所以就写一些吧。
1、首先mapper里面有两种文件一种相当于是一个实体类中方法的接口,二XX.xml则是具体实现的方法。但是我们在idea要想用里面的方法进行数据库操作,需要把xml文件提出来,放到资源文件resources下面,并且目录结构必须保持一致,否则mybatis在编译的时候就会找不到对应的实现文件;如图
2、创建一个conf.xml文件,用来船舰连接池的求别与原始的jdbc
<?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 resource="db.properties"></properties>
<!-- 全局参数在这里设置如: <settings> <setting name="cacheEnabled" value="false"/>
</settings> 关闭缓存,默认为开启 -->
<typeAliases>
<!-- 定义单个别名 -->
<!-- alias不区分大小写
<typeAlias type="com.example.model.Person" alias="Person"/> -->
<!-- 批量定义别名:自动将包中类的别名定义为类名 -->
<package name="com.example.model"/>
</typeAliases>
<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="com/example/mapper/personMapper.xml" />
-->
<!--引入所有 -->
<package name="com.example.mapper"/>
</mappers>
</configuration>
3、在utils工具类下面创建一个工具类MybatisUtils.java
代码
package com.example.util;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.InputStream;
public class MybatisUtils {
public static SqlSessionFactory getFactory(){
String resource="conf.xml";
//加载mybatis 的配置文件(它也加载关联的映射文件)
InputStream is=MybatisUtils.class.getClassLoader().getResourceAsStream(resource);
//构建sqlSession 的工厂
SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(is);
return factory;
}
}
4、在test文件夹下面创建一个test类
代码
import com.example.mapper.UserMapper;
import com.example.model.User;
import com.example.util.MybatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.junit.Test;
import java.util.List;
public class test {
@Test
public void test1(){
SqlSessionFactory factory = MybatisUtils.getFactory();
SqlSession session = factory.openSession();
UserMapper mapper = session.getMapper(UserMapper.class);
List<User> users = mapper.selectByExample(null);
System.out.println(users);
}
}
其中的selectByExample就是mapper接口文件里面的一个方法,你可以用这个方法实现很多中不同的查询,在这里面是null,即查询所有的数据
PS:如果上面的操作有什么不正确的地方或者有什么地方没有理清楚,欢迎留言指正,一起交流,谢谢