java maven

maven
maven安装应用
    ? 测试maven应用能否使用
    DOS窗口cmd指令  mvn-version  如果出现maven版本代表maven配置成功
    ? 在maven内部集成了很多内置插件  如jdk tomcat 数据库等…
    jdk默认版本是1.5,tomcat默认版本是6.0
    真是使用时需要手动配置,jdk为1.8/1.7 tomcat配置为7.0/8.0
maven工程目录介绍
前一天有
pom.xml文件  maven项目的核心配置文件
总结标签
            <packaging>     项目打包方式  jar war pom(父工程)
            jar  纯java工程,不包含web资源
            war web工程  java文件和web资源
            pom  父工程/父项目  子父工程  父工程里卖弄主要放的是jar包资源,让子工程去依赖使用的
            <dependencies>  多个依赖  依赖标签 内部存放的是一个个<dependency>
            <dependency>    单个依赖  jar包依赖标签  内部需要有四个标签来实现坐标查找
            <groupId>       组织或者是项目名称
            <artifactId>    模块或者项目名称
            <version>       模块或者是项目的版本
    代码:
                 <groupId>javax.servlet</groupId>
                    <artifactId>javax.servlet-api</artifactId>
                    <version>3.0.1</version>
                    <scope>provided</scope>
            2.2.1  第一个2 代表大版本 有重大变革的
                   第二个2 代表小版本 修复bug,增加少量功能
                   第三个1 代表更新
            里程碑版本
                   snapshot     快照版(开发板)
                   alpha        内部测试版
                   beta         公开测试版
                   Release|RC   发布版
                   GA           正常版本
            依赖传递
            依赖冲突
            <dependencyManagement>
maven常用命令
    ? mvn complie执行成功  生成target目录  包含编译之后的.class文件和配置文件以及打成的jar包
    ? mvn test 执行成功 编译测试文件
    ? mvn package 执行打包命令 会在target目录中生成对应的打包文件
    ? mvn install 执行发布命令/安装命令  完成以上命令,把打包之后的文件存放到本地仓库中
    ? mvn tomcat:run  执行内置服务器运行指令
    ? mvn clean  清楚target目录
    ? mvn deploy  部署
第一个:src/main/java : 存放项目的java文件(以.java结尾的)
第二个:src/main/resources : 存放项目资源文件,如db.properties,后面用到的框架的配置文件 以 .xml 结尾的 。
第三个:src/main/webapp:web工程的web资源
第四个:src/main/webapp/WEB-INF:存放webx.xml文件
第五个:src/test/java :存放单元测试的 .Java 文件 如Unit测试类
第六个:src/test/resources :存放测试用到的资源文件,如果没有就会从main中查找
第七个:target:项目的输出位置,如编译之后的 .class文件,打成的 jar包文件和war包文件
第八个:pom:项目对象模型
maven工程构建
    ? 可以自定义按照maven的目录结构去搭建
    ? 使用开发工具搭建
        ○ eclipse工具
        ○ idear工具
            § 使用骨架创建
                □ 创建纯java工程

                □ 创建web工程

            § 跳过骨架创建

            

            § 配置完 点击finish即可
添加依赖
在pom.xml文件中添加依赖  使用<dependencies>
在idear中添加依赖有两种方式
    ? 直接在项目pom文件添加<dependencies>在内部添加单个依赖<dependency>,在artifactId里面输入jar名称
    有会提示,没有会报红
    如
             <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>javax.servlet-api</artifactId>
                <version>3.0.1</version>
                <scope>provided</scope>
            </dependency>
    ? 本地没有,去maven*仓库查找你需要的jar包资源
    *仓库地址:
    https://mvnrepository.com
    如:

    


maven的插件配置
    ? build           项目构建配置 配置编译,运行插件等
    ? plugins         内部存放的是plugin,是被管理的插件
    ? plugin          内部配置的是具体的插件,在plugin内部有configuration
    如
    <!--编译器版本-->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.5.1</version>
                    <configuration>
                        <source>1.7</source>
                        <target>1.7</target>
                    </configuration>
                </plugin>
    ? configuration   需要配置插件的具体信息
依赖传递
将来我们在开发时,配置一个jar包资源,发现该jar包还依赖于另一个或多个jar煲仔园.此时就出现了依赖传递现象
依赖冲突
由于maven中存在依赖传递现象,会引发以来冲突现象
解决  路径近者优先原则  第一声明原则



mybatis
什么是框架
框架是一整套解决问题的方案,里面并没有具体的业务逻辑,框架是一个半成品软件
mybatis概述
MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
mybatis快速入门
    ? 下载安装
    去maven*仓库引入myvatis坐标依赖
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis</artifactId>
                <version>3.4.6</version>
            </dependency>
    ? 创建mybatis的核心配置文件 文件名字规范点:mybatis-config.xml/SqlMapConfig.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">
    <!--mybatis配置信息-->
    <configuration>
        <!--mybatis的配置环境-->
        <environments default="mysql">
            <!--mybatis配置的具体的环境信息-->
            <environment id="mysql">
                <!--事务管理 采用JDBC事务-->
                <transactionManager type="JDBC"/>
                <!--数据源 采用池子类型-->
                <dataSource type="POOLED">
                    <!--数据源的四大组件-->
                    <property name="driver" value="com.mysql.jdbc.Driver"/>
                    <property name="url" value="jdbc:mysql//localhost:3306/mybatis01"/>
                    <property name="username" value="root"/>
                    <property name="password" value="root"/>
                </dataSource>
            </environment>
        </environments>
        <!--
            mapper 映射器
            orm  object relationship mapping
            把实体类和数据库的表产生一一对应(映射)关系
            实体类                     表
                属性                      字段
                id                        id
                username                  username
                address                   address
                gender                    gender
            在映射时,确保实体类中的属性名称,和表中的字段名称与i及属性的数据类型和字段的数据类型高度保持一致
            带来的好处是封装便利
        -->
        <mappers>
            <!--XXXMapper.xml  存放的就是操作数据库表的一些配置信息-->
            <mapper resource="org/mybatis/example/BlogMapper.xml"/>
        </mappers>
    </configuration>
    ? 创建dao接口以及pojo实体类
//持久层 dao接口
public interface IUserDao {
    //定义查询所有用户信息
    List<User> getAllUsers();
}


package com.zhiyou100.pojo;

import java.io.Serializable;
//JavaBean  映射数据库的表user
public class User implements Serializable {
    private Integer id;
    private String username;
    private Integer age;
    private String address;
    private String gender;

    public User() {
    }

    public User(Integer id, String username, Integer age, String address, String gender) {
        this.id = id;
        this.username = username;
        this.age = age;
        this.address = address;
        this.gender = gender;
    }

    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 Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String getGender() {
        return gender;
    }

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

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

    ? 配置mapper信息创建XXXMapper.xml,但是要求和XXXMapper.java路径保持高度一致.
    <?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接口文件,形成关联映射
    -->
    <mapper namespace="com.zhiyou100.dao.IUserDao">
        <!--
            在mapper.xml文件中
            id          映射接口文件中的方法名称
            resultType  映射接口文件中方法的返回值类型  没有集合类型  填写的集合当中的泛型类型(全限定类名)
            parameterType  映射接口文件中方法参数的数据类型
        -->
        <select id="getAllUsers" resultType="com.zhiyou100.pojo.User">
        <!-- /**/ 不支持  会影响sql语句的运行 -->
        <!--查询语句-->
        select * from Blog where id = #{id}
        </select>
    
        <!--<delete id=""></delete>
    
        <update id=""></update>
    
        <insert id=""></insert>-->
    </mapper>
    注意事项:
        ○ mapper.xml文件和mapper.class文件的名称高度保持一致
        ○ mapper.xml文件和mapper.class文件的路径高度保持一致
    ? 测试配置信息
        ○ 加载mybatis核心配置文件
        ○ 创建SqlSessionFactory工厂对象
        ○ 通过工厂对象创建SqlSession对象
        ○ 通过SqlSession对象调用openSession方法建立连接
        ○ 通过SqlSession进行增删改查
    package com.zhiyou100.test;
    
    import com.zhiyou100.dao.IUserDao;
    import com.zhiyou100.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 org.junit.Test;
    import sun.nio.cs.US_ASCII;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.util.List;
    
    //测试mybatis的配置信息
    public class UserTest {
        //查询用户表中所有用户信息
        @Test
        public void testGetAllUsers() throws Exception {
            /**
             *     ? 测试配置信息
             *         ○ 加载mybatis核心配置文件
             *         ○ 创建SqlSessionFactory工厂对象
             *         ○ 通过工厂对象创建SqlSession对象
             *         ○ 通过SqlSession对象调用openSession方法建立连接
             *      ○ 通过SqlSession进行增删改查
             */
            //加载mybatis核心配置文件  使用mybatis内置的Resource IO类
            InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
            //创建SqlSessionFactory工厂对象
            //由于SqlSessionFactory是一个接口不能直接new 创建对象
            //SqlSessionFactory sqlSessionFactory = new SqlSessionFactory();//不可以
    
            //借助于构建者类SqlSessionFactoryBuilder
            SqlSessionFactoryBuilder sfb = new SqlSessionFactoryBuilder();
            //通过构建者类的build方法来构建工厂对象
            SqlSessionFactory factory = sfb.build(is);
            //通过工厂对象创建SqlSession对象
            SqlSession sqlSession = factory.openSession();
            //通过getMapper方法
            IUserDao mapper = sqlSession.getMapper(IUserDao.class);
            //有了IUserDao的实现类对象
            List<User> users = mapper.getAllUsers();
            for (User user : users) {
                System.out.println(user);
            }
        }
    }
    ? mybatis采用第二种方式:使用接口实现类方式进行开发
    public class IUserDaoImpl implements IUserDao {
        private SqlSessionFactory factory;
    
        public IUserDaoImpl(SqlSessionFactory factory){
            this.factory = factory;
        }
    
        @Override
        public List<User> getAllUsers(){
            SqlSession session = factory.openSession();
            List<User> users = session.selectList("com.zhiyou100.dao.IUserDao.getAllUsers");
            return users;
        }
    }
    
    ? 创建测试代码
    @Test
        public void testGetAllUsers2() throws Exception {
            //加载mybatis核心配置文件  使用mybatis内置的Resource IO类
            InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
            //创建SqlSessionFactory工厂对象
            //由于SqlSessionFactory是一个接口不能直接new 创建对象
            //SqlSessionFactory sqlSessionFactory = new SqlSessionFactory();//不可以
    
            //借助于构建者类SqlSessionFactoryBuilder
            SqlSessionFactoryBuilder sfb = new SqlSessionFactoryBuilder();
            //通过构建者类的build方法来构建工厂对象
            SqlSessionFactory factory = sfb.build(is);
    
            //实例化接口实现类对象
            IUserDao userDao = new IUserDaoImpl(factory);
            List<User> users = userDao.getAllUsers();
            for (User user : users) {
                System.out.println(user);
            }
        }

 

上一篇:SSMday2——掌握MyBatis的核心对象


下一篇:SqlSession获取的工具类(简单配置)