MyBatis——javaweb学习笔记(二)

目录

一、MyBatis是什么?

二、MyBatis快速入门

1.导入MyBatis坐标

2.创建Mybatis的XML配置文件——配置数据库连接的

3.创建Mybatis的映射文件——配置查询表的sql语句包装

4.具体的代码实现

三、实战实现

1.导入坐标

2.创建xml配置文件

3.创建Mybaties映射文件

4.代码实现

四、Mapper代理开发

1.定义接口

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

3.在mapper接口文件书写方法

4.配置文件中的映射文件路径修改

5.执行代码

6.补充

(1)扫描mapper的包

(2)插件加成

(3).类名和属性名不一样怎么办

(4)有输入参数的

(5)大于号小于号无法使用

(6)多条件查询

(7)注解映射语句


一、MyBatis是什么?

MyBatis是一款优秀的持久性框架,用于简化JDBC开发。

持久层:负责将数据到保存到数据库的那一层代码

JavaEE三层架构:表现层,业务层,持久层

框架:一个半成品软件,可重用的,通用的,软件基础代码模型

二、MyBatis快速入门

1.导入MyBatis坐标

导入Mybatis

<dependency>
  <groupId>org.mybatis</groupId>
  <artifactId>mybatis</artifactId>
  <version>3.5.13</version>
</dependency>

导入数据库坐标

<dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
  <version>8.0.33</version>
</dependency>

2.创建Mybatis的XML配置文件——配置数据库连接的

在Mybatis官网看到,需要一个配置文件:mybatis-config.xml

里面内容下面的简单示例

 修改

(1)driver就是肯定要改成mysql的驱动:

com.mysql.jdbc.Driver

(2)url也要改,连接数据库s_app:

jdbc:mysql:///s_app?useSSL=false

(3)用户名密码也改一下就行

(4)<mapper>这是加载指定mapper的映射文件路径

3.创建Mybatis的映射文件——配置查询表的sql语句包装

官网上有示例写sql语句的文件

其中name和id可以随便取,调用的时候使用,然后resultType是返回结果,在下面写上sql语句

4.具体的代码实现

(1)先通过配置的XML文件,创建一个工厂

(2)然后花去工厂对象,来执行sql语句,最后释放资源即可

三、实战实现

1.导入坐标

在pom.xml文件下

导入两个jar包

2.创建xml配置文件

创建mybatis-config.xml

我将密码,url,driver改好(我用的是最新版的mysql,driver变了)

连接数据库mybatis,映射文件也改过了,为UserMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "https://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"/>
                <property name="url" value="jdbc:mysql:///mybatis?useSSL=false"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="UserMapper.xml"/>
    </mappers>
</configuration>

3.创建Mybaties映射文件

创建UserMapper.xml文件

我将tb_user的数据全部查询,返回类型为User这个类,类的地址也卸载resultType中

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="test">
    <select id="selectAll" resultType="com.rosen.pojo.User">
        select * from mybatis.tb_user
    </select>
</mapper>

根据表创建一个类:User,每个成员变量名必须和数据库中名字相同

4.代码实现

创建工厂,调用sql语句,把返回的user打印出来

import com.mysql.cj.protocol.ReadAheadInputStream;
import com.rosen.pojo.User;
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;
import java.util.List;

public class mytest {
    public static void main(String[] args) throws IOException {
        String resource="mybatis-config.xml";
        InputStream inputStream= Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);

        SqlSession sqlSession=sqlSessionFactory.openSession();
        List<User> users = sqlSession.selectList("test.selectAll");
        System.out.println(users);
        sqlSession.close();
    }

四、Mapper代理开发

刚才写代码,调用test.selectAll每次写一次就要查找id和name很麻烦

因此又有新的方法来替换。

1.定义接口

定义与SQL映射文同名的Mapper接口,目录也要一样(最新版不需要)

方法1:映射文件直接拖入接口目录下

为了分开

方法2:在resource使用com.rosen.mapper发现不会分层目录,改成com/rosen/mapper就是三层目录了,然后把映射文件写入。在main里面把接口文件写入com.rosen.mapper。这样两个文件就在一个目录了

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

就是把原来的namespace改成对应接口的路径

3.在mapper接口文件书写方法

就是映射文件的id为方法名字,返回还是集合列表

package com.rosen.mapper;

import com.rosen.pojo.User;

import java.util.List;

public interface UserMapper {
    List<User> selectAll();
}

4.配置文件中的映射文件路径修改

5.执行代码

直接读取接口,然后调用方法就行

import com.rosen.mapper.UserMapper;
import com.rosen.pojo.User;
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;
import java.util.List;

public class mytest {
    public static void main(String[] args) throws IOException {
        String resource= "mybatis-config.xml";
        InputStream inputStream= Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);

        SqlSession sqlSession=sqlSessionFactory.openSession();

        //List<User> users = sqlSession.selectList("test.selectAll");
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        List<User> users = mapper.selectAll();

        System.out.println(users);
        sqlSession.close();
    }
}

6.补充

(1)扫描mapper的包

因为不同表有不同的映射文件,不能一个一个加吧,就有包扫描的方式

改为package就直接扫描了

(2)插件加成

下载完后蓝色鸟和红色鸟一一对应

(3).类名和属性名不一样怎么办

起别名的方法

(4)有输入参数的

映射文件中输入参数是#{id}——>防止注入,$ {id}——>普通替换

接口里面设置id参数,其他就可以正常使用了

(5)大于号小于号无法使用

xml的小于号为开始符号,因此sql语句无法正常使用 

1)转译字符

2)CTATA区

如:

(6)多条件查询

可以参数传递,可以类里面有成员变量传递,也可以键值传递

(7)注解映射语句

不用再xml映射文件上写具体sql代码,直接在接口上写注解即可完成查询

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

rosen6664

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

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

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

打赏作者

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

抵扣说明:

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

余额充值