JavaWeb自我学习——进一步学习MyBatis

目录

解决SQL映射文件的警告提示

Mapper 代理开发

目的:

Mapper代理方式使用

1.定义与SQL映射文件同名的Mapper接口...

 2.设置SQL映射文件的namespace属性为Mapper接口全限定名...

​3.在Mapper接口中定义方法...

4.编码 

 5.运行结果:​

 MyBatis核心配置文件

属性(properties):

设置(settings):

 类型别名(typeAliases):

类型处理器(typeHandlers):

对象工厂(objectFactory):

插件(plugins):

环境配置(environments):

数据库厂商标识(databaseIdProvider):

映射器(mappers):


解决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属性值,不可以乱写)


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.运行结果:

细节:如果Mapper接口名称和SQL映射文件名称相同,并在同一目录下,则可以使用包扫描的方式简化SQL映射文件的加载(将该包下的所有Mapper加载)


 MyBatis核心配置文件

属性(properties):

这些属性可以在外部进行配置,并可以进行动态替换。你既可以在典型的 Java 属性文件中配置这些属性,也可以在 properties 元素的子元素中设置。

mybatis – MyBatis 3 | 配置propertiesicon-default.png?t=M276https://mybatis.org/mybatis-3/zh/configuration.html#properties

设置(settings):

这是 MyBatis 中极为重要的调整设置,它们会改变 MyBatis 的运行时行为。

mybatis – MyBatis 3 | 配置settingsicon-default.png?t=M276https://mybatis.org/mybatis-3/zh/configuration.html#settings

 类型别名(typeAliases):

类型别名可为 Java 类型设置一个缩写名字。 它仅用于 XML 配置,意在降低冗余的全限定类名书写。

mybatis – MyBatis 3 | 配置typeAliasesicon-default.png?t=M276https://mybatis.org/mybatis-3/zh/configuration.html#typeAliases

类型处理器(typeHandlers):

MyBatis 在设置预处理语句(PreparedStatement)中的参数或从结果集中取出一个值时, 都会用类型处理器将获取到的值以合适的方式转换成 Java 类型。

mybatis – MyBatis 3 | 配置typeHandlersicon-default.png?t=M276https://mybatis.org/mybatis-3/zh/configuration.html#typeHandlers

对象工厂(objectFactory):

每次 MyBatis 创建结果对象的新实例时,它都会使用一个对象工厂(ObjectFactory)实例来完成实例化工作。 

mybatis – MyBatis 3 | 配置objectFactoryicon-default.png?t=M276https://mybatis.org/mybatis-3/zh/configuration.html#objectFactory

插件(plugins):

MyBatis 允许你在映射语句执行过程中的某一点进行拦截调用。

mybatis – MyBatis 3 | 配置pluginsicon-default.png?t=M276https://mybatis.org/mybatis-3/zh/configuration.html#plugins

环境配置(environments):

配置数据库连接环境信息。可以配置多个environment,通过default属性切换不同的environment。

mybatis – MyBatis 3 | 配置environmentsicon-default.png?t=M276https://mybatis.org/mybatis-3/zh/configuration.html#environments

数据库厂商标识(databaseIdProvider):

MyBatis 可以根据不同的数据库厂商执行不同的语句.。

mybatis – MyBatis 3 | 配置databaseIdProvidericon-default.png?t=M276https://mybatis.org/mybatis-3/zh/configuration.html#databaseIdProvider

映射器(mappers):

在自动查找资源方面,Java 并没有提供一个很好的解决方案,所以最好的办法是直接告诉 MyBatis 到哪里去找映射文件。 你可以使用相对于类路径的资源引用,或完全限定资源定位符(包括 file:/// 形式的 URL),或类名和包名等。

mybatis – MyBatis 3 | 配置mappersicon-default.png?t=M276https://mybatis.org/mybatis-3/zh/configuration.html#mappers

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员Lyle

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值