SSM学习笔记


在这里插入图片描述

MyBaties

基本介绍

在这里插入图片描述
在这里插入图片描述

快速入门

在这里插入图片描述

1 采用maven的pom.xml方式导入jar包

maven依赖包坐标

<dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.5.7</version>
    </dependency>
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.27</version>
    </dependency>

2 mybaties核心配置文件(mybaties-config.xml)

在这里插入图片描述
文件内容

<?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>
<!--    设置日志管理log4j,settings标签应该在typeAliases标签前面-->
    <settings>
        <setting name="logImpl" value="LOG4J"/>
    </settings>
<!--    设置映射文件的数据类型别名-->
    <typeAliases>
        <typeAlias type="com.jishou.mybatis.entity.LeiXing" alias="lx"></typeAlias>
    </typeAliases>
<!--    default选择需要的环境-->
    <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://localhost:3306/mybatis_test?
characterEncoding=UTF-8&amp;useSSL=false&amp;allowPublicKeyRetrieval=true&amp;serverTimezone=UTC"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>
    <!-- 加载映射文件,只有加载了的映射文件才能用会话对数据库进行操作-->
    <mappers>

        <mapper resource="mapper/LeiXingMapper.xml"></mapper>
    </mappers>
</configuration>

3 建立实体类

在这里插入图片描述

package com.jishou.mybatis.entity;

public class LeiXing {

    private Integer id;
    private String leixing;

    @Override
    public String toString() {
        return "LeiXing{" +
                "id=" + id +
                ", leixing='" + leixing + '\'' +
                '}';
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getLeixing() {
        return leixing;
    }

    public void setLeixing(String leixing) {
        this.leixing = leixing;
    }

    public LeiXing(Integer id, String leixing) {
        this.id = id;
        this.leixing = leixing;
    }

    public LeiXing() {
    }
}

4 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">
<!--命名空间名:可以随便去但尽量与对应的类路径相同,用来区分不同类的相同id的sql语句-->
<mapper namespace="com.jishou.mybatis.dao.LeiXingDao">
    <select id="chaLeiXing" resultType="lx">
        SELECT * FROM lei_xing
    </select>
</mapper>

5 通过mybatis api把数据库的数据传到java变量的内存中

代码

package com.jishou.mybatis;

import com.jishou.mybatis.entity.LeiXing;
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.Reader;
import java.util.List;

public class test {
    public static void main(String[] args) throws IOException {
        // 1.创建SqlSessionFactoryBuilder
        SqlSessionFactoryBuilder sfb = new SqlSessionFactoryBuilder();
        // 2.解析主配置文件获得reader
        Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
        // 3.创建SQLSessionFactory工厂
        SqlSessionFactory sf = sfb.build(reader);
        // 4.打开会话
        SqlSession se = sf.openSession();
        // 5.调用SqlSession Sql的Api执行 查询
        List<LeiXing> list = se.selectList("com.jishou.mybatis.dao.LeiXingDao.chaLeiXing");

        for (LeiXing lx: list
        ) {
            System.out.println(lx.getLeixing());

        }
        // 6.关闭session
        se.close();

    }
}


mybatis优化

0. 简单优化集合

  • typealiases中导入包,包下面的类在映射(Mapper)文件中可以省略包名就找到
    导入包:在configuration中填下以下标签
<typeAliases>
<package name="com.jishou.mybatis.entity"/>
</typeAliases>

mapper.xml配置文件中
在这里插入图片描述

  • 将获取会话之前的三句话封装在一个工具类里面,利用工具类获取sqlsessionfactory对象
    工具类代码
package com.jishou.mybatis;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.IOException;
import java.io.Reader;

public class MyBatisUtil {
    private static SqlSessionFactory sqlSessionFactory;
    static {
        // 1.创建SqlSessionFactoryBuilder
        SqlSessionFactoryBuilder sfb = new SqlSessionFactoryBuilder();
        // 2.解析主配置文件获得reader
        Reader reader = null;
        try {
            reader = Resources.getResourceAsReader("mybatis-config.xml");
        } catch (IOException e) {
            e.printStackTrace();
        }
        // 3.创建SQLSessionFactory工厂
        sqlSessionFactory = sfb.build(reader);
    }
    public static SqlSessionFactory getSqlSessionFactory(){
        return sqlSessionFactory;
    }


}

1. 主配置文件数据源属性设置优化(便于更换属性值)

  • 先创建jdbc.properties文件设置变量
    在这里插入图片描述
    文件内容
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis_test?characterEncoding=UTF-8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC
jdbc.username=root
jdbc.password=123456
  • 主配置文件加载属性文件

在configuration标签中添加以下标签

<properties resource="jdbc.properties"></properties>
  • 数据源中取值
 <environment id="development">
<!--            选择事务管理器-->
            <transactionManager type="JDBC"/>
<!--            选择池化数据源,减小连接开启与关闭的开箱-->
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driver}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
            </dataSource>
        </environment>

2 mybatis使用方式优化

使用mybati方法及其步骤优化(总体与快速入门类似,但增加了sql操作接口)

  • 导入mybatis包
  • 创建mybatis主配置文件
    与快速入门相同
  • 创建需要增删查改的实体类
    直接创建即可
  • 创建sql操作接口以及sql操作Mapper.xml文件,并在主配置文件中加载Mapper.xml文件
    其他与快速入门相同但
    注意mapper.xml文件中的命名空间需要与sql操作接口类的包名相同,sql语句id需要与操作接口类的对应方法的方法名相同
  • 利用mybatis api 完成sql语句对数据库的操作
    api文件代码示例
public static void insert(){
		//得到工厂对象
        SqlSessionFactory sf = MyBatisUtil.getSqlSessionFactory();
        //得到会话
        SqlSession se = sf.openSession();
        //通过会话获取sql操作对象
        DianYingDao dianYingDao = se.getMapper(DianYingDao.class);
        DianYing dianYing = new DianYing(9,2,"dagg","不知道","不知道",54F,null);
        //通过sql操作对象调用sql语句方法
        dianYingDao.insert(dianYing);
        //提交事务
        se.commit();
        //关闭会话
        se.close();
    }

给sql语句传参

  • 传参写法1(传基本数据类型或String)

mapper.xml文件内

<!--    传基本数据类型或String时花括号填什么都可以-->
    <select id="chaLeiXingById" parameterType="int" resultType="LeiXing">
        select * from lei_xing where id = #{id}

    </select>

java代码内

//1为传进去的值
List<LeiXing> list = se.selectList("com.jishou.mybatis.dao.LeiXingDao.chaLeiXingById",1);
  • 传参写法2(传对象)

mapper.xml文件内

<!--    传对象,想要获取对象属性值,直接通过对象属性名即可获取-->
    <select id="chaLeiXingByLeiXing" parameterType="LeiXing" resultType="LeiXing">
        select * from lei_xing where id = #{id} and leixing = #{leixing}
    </select>

java代码内

LeiXing leiXing = new LeiXing(1,"呵呵");
List<LeiXing> list = se.selectList("com.jishou.mybatis.dao.LeiXingDao.chaLeiXingByLeiXing",leiXing);

log4j

基本介绍

日志框架
可用于mybatis的日志记录
在这里插入图片描述

快速入门

1.导入jar包
2.创建log4j.properties文件
3.在mybatis中设置log4j进行管理

1. 导入jar包

maven坐标

<dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-log4j12</artifactId>
      <version>1.7.5</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>1.2.17</version>
    </dependency>

2.创建log4j.properties文件进行配置

在这里插入图片描述

#全局配置
log4j.rootLogger=ERROR,file
#mybatis配置输出日志
#此处要与需要日志记录的mapper文件的命名空间相对应,有命名空间的前缀即可
log4j.logger.com.jishou.mybatis=trace,stdout,file
#控制台输出日志
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
#文件输出日志
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.File=d:/log/mylog.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

3.在mybatis中使用log4j

在mybatis主配置文件中configuration标签中添加如下语句

	<settings>
        <setting name="logImpl" value="LOG4J"/>
    </settings>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java SSM(Spring+SpringMVC+MyBatis)是一种基于Java语言的Web开发框架。学习这个框架的过程中,我深刻体会到它的强大和灵活性。 首先,Spring框架为开发者提供了一个强大的IOC(Inversion of Control)容器,它能够管理和注入对象,减少了代码之间的耦合性。通过配置文件或注解,我们可以轻松地定义和获取各种对象,提高了代码的可维护性和可扩展性。 其次,SpringMVC框架是一种MVC(Model-View-Controller)设计模式的实现,它用于处理Web请求和响应。通过配置一个请求映射表和处理器,我们可以将请求分发给相应的控制器进行处理,并将处理结果返回给客户端。SpringMVC还提供了一些便捷的注解和标签,用于简化页面的渲染和参数的绑定。 最后,MyBatis是一种优秀的持久化框架,它能够将数据库操作与Java对象之间的映射简化为简单的配置。通过编写SQL映射文件和定义POJO(Plain Old Java Object)类,我们可以方便地进行数据库的增删改查操作,而无需编写冗长的SQL语句。 在学习Java SSM框架的过程中,我深入理解了软件开发过程中的MVC思想,并学会了如何利用Spring、SpringMVC和MyBatis来实现一个完整的Web应用程序。通过不断的实践和调试,我逐渐培养了自己解决问题和调试代码的能力。 总结起来,学习Java SSM框架使我深入理解了软件开发的各个环节,并提升了我的编码能力和开发效率。我相信这些知识和经验将对我的职业发展和项目实施起到积极的促进作用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值