Maven&Mybatis简单了解

Maven&Mybatis

Maven

概念:
	Maven是一个项目管理和构建工具,基于项目对象模型(POM)的概念,通过一小段描述信息来管理项目的构建,报告和文档

项目结构(IDEA从上往下)

名称作用
maven-project项目名称
src源代码和测试代码目录
main源代码目录
java源代码Java文件目录
resources源代码配置文件目录
webappWeb项目核心目录
test测试代码目录
java测试代码Java文件目录
resources测试代码配置文件目录
pom.xml项目核心配置文件

构建流程

代码整体流程:
	编译、测试、打包、发布

Maven提供了一套简单命令:
	mvn compile : 编译
	mvn test : 测试
	mvn package : 打包
	mvn install : 安装(运行)(单独执行这一步,以上步骤会自动运行)
	mvn clean : 删除当前target目录(更改代码行才可重新编译)

仓库分类:

本地仓库: 本地计算机/服务器的某个目录

中央仓库: 由Maven团队维护的全球唯一的仓库
	地址: https://repo1.maven.org/maven2/

远程仓库: 一般由公司团队搭建的私有仓库

中央仓库在国外,下载所需jar包较慢,一般我们选用阿里巴巴公司所提供的远程仓库
修改conf/settings.xml中的<mirrors>标签:
<mirror>  
    <id>alimaven</id>  
    <name>aliyun maven</name>  
    <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
    <mirrorOf>central</mirrorOf>          
</mirror>

Maven目录结构

bin : 存放可执行命令,mvn命令重点关注
conf : 存放Maven的配置文件,settings.xml配置文件所在目录
lib : 存放Maven依赖的jar包

依赖管理

正常项目:
	1.下载jar包
	2.复制jar包到项目
	3.将jar包加入工作环境

Maven项目:
	<!--在pom.xml文件中,使用坐标配置来管理各种依赖-->

mybatis:
	<!-- mybatis 依赖-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.5</version>
        </dependency>

mysql:
	<!--mysql 驱动-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.46</version>
        </dependency>

junit:
	<!--junit 单元测试-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13</version>
            <scope>test</scope>
        </dependency>
log4j:
	<!-- 添加slf4j日志api -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.20</version>
        </dependency>
        <!-- 添加logback-classic依赖 -->
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.2.3</version>
        </dependency>
        <!-- 添加logback-core依赖 -->
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-core</artifactId>
            <version>1.2.3</version>
        </dependency>

依赖范围

依赖范围编译测试运行举例
compileYYYlogback
test-Y-Junit
providedYY-servlet-api
runtime-YYjdbc驱动
systemYY-存储在本地的jar包
如果坐标不指定 <scope></scope> 标签, 默认范围是compile值。

Maven坐标

坐标:
	Maven中的坐标是资源的唯一标识
	使用坐标来定义项目或引入项目中需要的依赖

主要组成:
	groupId:定义当前Maven项目隶属组织名称(通常是域名反写,例如:com.pauper)
	artifactId:定义当前Maven项目名称(通常是模块名称,例如 order-service、goods-service)
	version:定义当前项目版本号

注意:
	上面所说的资源可以是插件、依赖、当前项目。
	我们的项目如果被其他的项目依赖时,也是需要坐标来引入的。

Mybatis

简介:
	mybatis 是用来简化JDBC开发的持久层框架
	MyBatis 本是 Apache 的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github
	官网:https://mybatis.org/mybatis-3/zh/index.html

三层架构分为: 表现层、业务层、持久层

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

优化JDBC:
	1. 硬编码:
		注册驱动、获取链接
		SQL语句要随着表结构更改而更改,维护较为困难
	<!--Mybatis将硬编码配置转移到配置文件中进行操作-->
	2. 操作繁琐
		手动设置参数
		手动封装结果集
	<!--Mybatis将自动完成参数、封装结果集等操作-->

案例演示

1. 数据库中创建user表,添加数据
DROP TABLE
IF EXISTS tb_user;

CREATE TABLE tb_user (
	id INT PRIMARY KEY auto_increment,
	username VARCHAR (20),
	PASSWORD VARCHAR (20),
	gender CHAR (1),
	addr VARCHAR (30)
);

INSERT INTO tb_user
VALUES
	(
		1,
		'zhangsan',
		'123',
		'男',
		'北京'
	);

INSERT INTO tb_user
VALUES
	(
		2,
		'李四',
		'234',
		'女',
		'天津'
	);

INSERT INTO tb_user
VALUES
	(
		3,
		'王五',
		'11',
		'男',
		'西安'
	);

2. 创建模块,导入坐标,根据上述pom.xml文件配置即可
-- 注意:
	-- 如果添加了log4j、logback坐标,需要在resources目录下创建logback.xml配置文件(当前代码块我选用的mysql格式,会导致logback.xml中关键词不突出显示)
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <!--
        CONSOLE :表示当前的日志信息是可以输出到控制台的。
    -->
    <appender name="Console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>[%level] %blue(%d{HH:mm:ss.SSS}) %cyan([%thread]) %boldGreen(%logger{15}) - %msg %n</pattern>
        </encoder>
    </appender>

    <logger name="com.itheima" level="DEBUG" additivity="false">
        <appender-ref ref="Console"/>
    </logger>


    <!--

      level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF
     , 默认debug
      <root>可以包含零个或多个<appender-ref>元素,标识这个输出位置将会被本日志级别控制。
      -->
    <root level="DEBUG">
        <appender-ref ref="Console"/>
    </root>
</configuration>
3.编写MyBatis核心配置文件

<!-- 替换连接信息 解决硬编码问题-->
<?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>

    <typeAliases>
        <package name="com.itheima.pojo"/>
    </typeAliases>
   
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <!--注册驱动-->
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <!--连接数据库-->
                <property name="url" value="jdbc:mysql:///mybatis?useSSL=false"/>
                <!--数据库用户及密码-->
                <property name="username" value="root"/>
                <property name="password" value="1234"/>
            </dataSource>
        </environment>

    <mappers>
       <!--加载sql映射文件-->
       <mapper resource="UserMapper.xml"/>
    </mappers>
</configuration>
4.编写SQL映射文件

<!--统一管理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">
<!--namespace: 命名空间,名称自行定义-->
<mapper namespace="test">
    <!--id: 自行定义
		resultType: 指向pojo类
	-->
    <select id="selectAll" resultType="com.itheima.pojo.User">
        <!--所要执行SQL语句-->
        select * from tb_user;
    </select>
</mapper>
5. 创建pojo类


public class User {

    private Integer id;
    private String username;
    private String password;
    private String gender;
    private String addr;

    public Integer getId() {
        return id;
    }

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

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public String getAddr() {
        return addr;
    }

    public void setAddr(String addr) {
        this.addr = addr;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                ", gender='" + gender + '\'' +
                ", addr='" + addr + '\'' +
                '}';
    }
}

6. 创建测试类 MyBatisDemo.java

public class MyBatisDemo {

    public static void main(String[] args) throws IOException {

        //1. 加载mybatis的核心配置文件,获取 SqlSessionFactory
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

        //2. 获取SqlSession对象,用它来执行sql
        SqlSession sqlSession = sqlSessionFactory.openSession();
        //3. 执行sql
        List<User> users = sqlSession.selectList("test.selectAll");
        System.out.println(users);
        //4. 释放资源
        sqlSession.close();

    }
}

Mapper代理开发

优点:
	1.解决硬编码	
	2.简化后期执行SQL

以往sqlSession对象执行SQL语句时,采取的时selectList()方法传递的参数是映射配置文件中的namespace.id值,不利于维护,所以推荐采用Mapper代理方式


要求:
	定义与SQL映射文件同名的Mapper接口,并且将Mapper接口和SQL映射文件放置在同一目录下
// 注意: 映射文件在resources目录下,接口文件在java目录下
	// 只需保持接口文件与映射文件路径相同即可,无需放置一起
/*
例如:
UserMapper接口:
	java / com / pauper / UserMapper
	
UserMapper.xml映射文件:
	resources / com / pauper /UserMapper.xml
*/

设置SQL映射文件的namespace属性为Mapper接口全限定名
例如:
	<mapper resource="com\pauper\UserMapper.xml"/>Mapper接口中定义方法,方法名是SQL映射文件中sql语句的id,并保持参数类型和返回值类型一致
例如:
UserMapper.xml:
	<select id="selectAll" resultType="User">
        select *
        from tb_user;
    </select>

UserMapper接口:
	List<User> selectAll();
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值