目录
2.设置SQL映射文件的namespace属性为Mapper接口全限定名...
解决SQL映射文件的警告提示
产生原因: ldea和数据库没有建立连接,不识别表信息
解决方式:在ldea中配置MySQL数据库连接
操作:
①确定Tool Window Bars开启
②右侧点击右侧Database,之后如图点击
③找到MySQL
④配置数据库
⑥然后test connection(第一次需要下载驱动)
apply之后ok就可以用idea操作MySQL数据库,进行增删改查等操作。
⑦成功,不再报错
Mapper 代理开发
目的:
① 解决原生方式中的硬编码
② 简化后期执行SQL
Mapper代理方式使用
1.定义与SQL映射文件同名的Mapper接口,并且将Mapper接口和SQL映射文件放置在同一目录下
为了方便管理SQL映射文件还是放在编译器的resources下,但是可以通过下图方式让它在Maven编译之后到同一目录。
注意:要写自己设置Mapper接口的相对路径下,一定要用 / 隔开
将对应SQL映射文件放在里面。
之后再Run —>Run Maven Goal —>compile,然后我们去target目录下查看
然后你就会神奇的发现!!! 他们在一块了!!!惊不惊喜!!!意不意外!!!
注意:这样做需要再mybatis-config.xml中做小改动,
需要改成Mapper.xml当前的相对路径
改好之后:
2.设置SQL映射文件的namespace属性为Mapper接口全限定名(就是要对应着写namespace属性值,不可以乱写)
![](https://i-blog.csdnimg.cn/blog_migrate/50f1cc368737b718b92bc3c22783a052.png)
3.在Mapper接口中定义方法,方法名就是SQL映射文件中sql语句的id,并保持参数类型和返回值
类型一致
package Study.Mapper;
import test1.Student;
import java.util.List;
public interface StudentMapper {
List<Student> selectAll();
}
根据sql语义来判断结果是对象的list还是一个对象。
4.编码
①通过SqISession的getMapper方法获取Mapper接口的代理对象
②调用对应方法完成sql的执行
package Study.test1;
import Study.Mapper.StudentMapper;
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 test1.Student;
import java.io.InputStream;
import java.util.List;
public class MyBatisDemo2 {
public static void main(String[] args) throws Exception{
//1.加载mybatis的核心配置文件,获取SqlSessionFactory
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//2.获取SqlSession对象
SqlSession sqlSession= sqlSessionFactory.openSession();
//3.执行sql
//List<test1.Student> students = sqlSession.selectList("test.selectAll");
//3.1获取获取Mapper接口的代理对象
StudentMapper studentmapper= sqlSession.getMapper(StudentMapper.class);
List<Student> students= studentmapper.selectAll();
System.out.println(students);
//4.释放资源
sqlSession.close();
}
}
5.运行结果:![](https://i-blog.csdnimg.cn/blog_migrate/2490c4c56b71d9ba90392b4b0a218984.png)
细节:如果Mapper接口名称和SQL映射文件名称相同,并在同一目录下,则可以使用包扫描的方式简化SQL映射文件的加载(将该包下的所有Mapper加载)
MyBatis核心配置文件
属性(properties):
这些属性可以在外部进行配置,并可以进行动态替换。你既可以在典型的 Java 属性文件中配置这些属性,也可以在 properties 元素的子元素中设置。
mybatis – MyBatis 3 | 配置propertieshttps://mybatis.org/mybatis-3/zh/configuration.html#properties
设置(settings):
这是 MyBatis 中极为重要的调整设置,它们会改变 MyBatis 的运行时行为。
mybatis – MyBatis 3 | 配置settingshttps://mybatis.org/mybatis-3/zh/configuration.html#settings
类型别名(typeAliases):
类型别名可为 Java 类型设置一个缩写名字。 它仅用于 XML 配置,意在降低冗余的全限定类名书写。
mybatis – MyBatis 3 | 配置typeAliaseshttps://mybatis.org/mybatis-3/zh/configuration.html#typeAliases
类型处理器(typeHandlers):
MyBatis 在设置预处理语句(PreparedStatement)中的参数或从结果集中取出一个值时, 都会用类型处理器将获取到的值以合适的方式转换成 Java 类型。
mybatis – MyBatis 3 | 配置typeHandlershttps://mybatis.org/mybatis-3/zh/configuration.html#typeHandlers
对象工厂(objectFactory):
每次 MyBatis 创建结果对象的新实例时,它都会使用一个对象工厂(ObjectFactory)实例来完成实例化工作。
插件(plugins):
MyBatis 允许你在映射语句执行过程中的某一点进行拦截调用。
mybatis – MyBatis 3 | 配置pluginshttps://mybatis.org/mybatis-3/zh/configuration.html#plugins
环境配置(environments):
配置数据库连接环境信息。可以配置多个environment,通过default属性切换不同的environment。
mybatis – MyBatis 3 | 配置environmentshttps://mybatis.org/mybatis-3/zh/configuration.html#environments
数据库厂商标识(databaseIdProvider):
MyBatis 可以根据不同的数据库厂商执行不同的语句.。
映射器(mappers):
在自动查找资源方面,Java 并没有提供一个很好的解决方案,所以最好的办法是直接告诉 MyBatis 到哪里去找映射文件。 你可以使用相对于类路径的资源引用,或完全限定资源定位符(包括 file:///
形式的 URL),或类名和包名等。
mybatis – MyBatis 3 | 配置mappershttps://mybatis.org/mybatis-3/zh/configuration.html#mappers