IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> MyBatis学习笔记-22.1.23 -> 正文阅读

[Java知识库]MyBatis学习笔记-22.1.23

1- MyBatis简介

1.1-是什么

是apache的一个开源持久层框架,会托管JDBC,进行一些数据库的操作

获取MyBatis

  • maven

    <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.5.9</version>
    </dependency>
    
  • github

1.2-持久化

数据持久化

持久化就是将数局在持久和瞬时转化的过程,也就是从内存-数据库转化的过程。

1.3-持久层

  • 完成持久化的代码块

  • 界限明显

1.4-Why MyBatis?

  • JDBC代码复杂。
  • 框架方便自动化
  • 用的人多…
  • 其实不用也可以

2-Hello MyBatis

2.1-搭建环境

2.1.1-搭建数据库

CREATE TABLE `user`(
	`id` INT PRIMARY KEY,
	`name` VARCHAR(30) DEFAULT NULL,
	`password` VARCHAR(30) DEFAULT NULL
)ENGINE=INNODB DEFAULT CHARSET=UTF8;

INSERT INTO `user`VALUES 
(1,'1','1'),
(2,'2','2'),
(3,'3','3')

SELECT * FROM `user`

2.1.2- 新建项目

maven依赖

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.25</version>
</dependency>
<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.5.9</version>
</dependency>

2.1.3-MyBatis核心配置文件

也就是指示如何连接数据库

dataSource中是具体连接什么数据库

environments可以加入多个environment

<?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>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="ConnectionString"/>
                <property name="username" value="UserName"/>
                <property name="password" value="PassWord"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <!--这里后面再说-->
        <mapper resource="org/mybatis/example/BlogMapper.xml"/>
    </mappers>
</configuration>

2.2-编码部分

2.2.1-编写mybatis工具类

public class MyBatisUtil {
    //工厂模式,sqlsession的一个工厂
    static SqlSessionFactory sqlSessionFactory;
    static{
        try {
            String resourse = "MyBatis-config.xml";
            InputStream inputStream = Resources.getResourceAsStream(resourse);
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    //返回sqlsession
    public SqlSession getSqlSession(){
        return sqlSessionFactory.openSession();
    }
}

2.2.2-编写实体类

同数据库表对应

package com.sunspot.dao;

public class User {
    public int id;
    public String name;
    public String password;
	//省略getter,setter,构造,tostring
}

2.2.3-编写mapper

对应对于一张表的全部操作

对应xxxxDao

package com.sunspot.dao;
import java.util.List;

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

2.2.5-编写mapper的xml

对应xxxxDaoImpl

这里namespace是作用类,id是函数名,resultType是返回类型,值是sql语句

<?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">
<mapper namespace="com.sunspot.dao.UserMapper">
    <select id="getUser" resultType="com.sunspot.dao.User" >
        select * from MyBatisLearing.user
    </select>
</mapper>

2.2.6-更改MyBatis-config.xml

这里要把之前编写的mapper添加到MyBatis-config.xml里。

<mappers>
    <mapper resource="com/sunspot/dao/UserMapper.xml"/>
</mappers>

2.2.7-注意maven

maven没有学习,但是大概是maven有个过滤机制,只有满足条件的才会放在最后的项目里,这里我们需要让他将我们写的xxxmapper.xml加入到最后的项目中,

pom.xml加入如下内容

<mappers>
    <mapper resource="com/sunspot/dao/UserMapper.xml"/>
</mappers>

2.3-测试

使用SqlSession.getMapper方法,参数为mapper的接口,返回一个接口,可以通过这个接口进行操作了

看起来,他是利用xxxmapper.xml的配置生成了一个实现接口的实现类,之后将实行类返回了。

public class UserMapperTest {
    @Test
    public void test1(){
        MyBatisUtil myBatisUtil = new MyBatisUtil();
        SqlSession sqlSession = myBatisUtil.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        List<User> user = mapper.getUser();
        for (User user1 : user) {
            System.out.println(user1);
        }
        sqlSession.close();
    }
}

3- CRUD

3.1-接口

public interface UserMapper {
    public List<User> getUserList();
    public User getUser(int id);
    public int deleteUser(int id);
    public int updateUser(User user);
    public int insertUser(User user);
}

3.2-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">
<mapper namespace="com.sunspot.dao.UserMapper">
    <select id="getUserList" resultType="com.sunspot.dao.User" >
        select * from MyBatisLearing.user
    </select>
    <select id="getUser" resultType="com.sunspot.dao.User" parameterType="int">
        select * from MyBatisLearing.user where id=#{id}
    </select>
    <insert id="insertUser" parameterType="com.sunspot.dao.User">
        insert into MyBatisLearing.user(id, name, password) VALUES (#{id},#{name},#{password})
    </insert>
    <update id="updateUser" parameterType="com.sunspot.dao.User">
        update MyBatisLearing.user set name=#{name},password=#{password} where id=#{id}
    </update>
    <delete id="deleteUser" parameterType="int">
        delete from MyBatisLearing.user where id=#{id}
    </delete>
</mapper>

3.3-测试(具体使用)

public class UserMapperTest {
    @Test
    public void getUserList(){
        MyBatisUtil myBatisUtil = new MyBatisUtil();
        SqlSession sqlSession = myBatisUtil.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        List<User> user = mapper.getUserList();
        for (User user1 : user) {
            System.out.println(user1);
        }
        sqlSession.close();
    }
    @Test
    public void getUser(){
        MyBatisUtil myBatisUtil = new MyBatisUtil();
        SqlSession sqlSession = myBatisUtil.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);

        User user1 = mapper.getUser(1);
        System.out.println(user1);
    }
    @Test
    public void insertUser(){
        MyBatisUtil myBatisUtil = new MyBatisUtil();
        SqlSession sqlSession = myBatisUtil.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);


        int i = mapper.insertUser(new User(11,"asdasd","wwwwww"));
        System.out.println(i);
        sqlSession.commit();//注意
        sqlSession.close();
    }
    @Test
    public void deleteUser(){
        MyBatisUtil myBatisUtil = new MyBatisUtil();
        SqlSession sqlSession = myBatisUtil.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);


        int i = mapper.deleteUser(11);
        System.out.println(i);
        sqlSession.commit();//注意
        sqlSession.close();
    }
    @Test
    public void updateUser(){
        MyBatisUtil myBatisUtil = new MyBatisUtil();
        SqlSession sqlSession = myBatisUtil.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);


        int i = mapper.updateUser(new User(2,"222","222"));
        System.out.println(i);
        sqlSession.commit();//注意
        sqlSession.close();
    }
}
  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-01-24 10:41:48  更:2022-01-24 10:43:00 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 9:48:18-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码