【ssm入门#1-MyBatis】新手IDEA创建Maven项目问题:Maven安装和配置+搭建依赖+Mybatis支持实现Dao实现类的三种方式

本文介绍了新手在IDEA中创建Maven项目时遇到的依赖下载问题及其解决办法,包括使用骨架构建项目,指定阿里云国内镜像,以及在配置Maven时的注意事项。同时,文章讨论了MyBatis中实现Dao的三种方式:类xml资源代理、注解方式和手动实现,并给出了相应配置文件和注意事项。
摘要由CSDN通过智能技术生成

本文基于下述教程编写:【B站】ssm教程
新手IDEA创建Maven项目问题

关于P5的添加mybatis依赖一直爆红的原因,修改pom.xml后你都要到主界面最竖着写的右侧找到Maven,点击打开——刷新,IDEA才能下载依赖包。或者直接点击代码界面突然冒出来的悬浮按钮Load Maven Changes

但是我遇到一个问题,完全按照老师的操作,也是卡在Resolving dependencies of XXX......没法结束进度条。至于为什么会出现这种情况?希望有大佬能解答一下鄙人疑惑。(猜测墙子太厚,没办法下载到默认的maven库 http://my.repository.com/repo/path
在这里插入图片描述
没办法就只能更改创建项目的方法了,用骨架构建项目,换成指定Create from archetype选择maven- archetype-webapp,然后选择一个自定义安装的Maven库,在settings.xml设置阿里云国内镜像,完美解决问题!
借用前辈的帖子用下:Maven安装和配置
遇到两个坑:
一、Maven库项目的环境变量配置那步,一定要用M2_HOME,试了MAVEN_HOME无法识别到。
二、出现一个Warnning:No archetype found in remote catalog. Defaulting to internal catalog.
这就很难受了,不要出现问题再解决,原因是很多教程里面都缺失了这么一块,紧紧跟着上述链接指引是没问题的:
在这里插入图片描述
MyBatis不仅能够通过类xml资源代理实现Dao实现类,还能够通过注解方式实现Dao实现类,同时也支持手动实现Dao实现类。
类xml资源代理实现Dao时:
需要:主配置文件<mappers> -<mapper resource>方式指定资源+Dao实现类的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>
    <!--配置环境-->
    <environments default="mysql">
        <!--配置mysql环境-->
        <environment id="mysql">
            <!--配置事务类型-->
            <transactionManager type="JDBC"></transactionManager>
            <!--配置数据源连接池-->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/ssmtest"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>
    <!--指定映射配置文件的位置,resource指定映射文件指的是每个dao独立的配置文件-->
    <!--注解方式,class属性指定类名-->
    <mappers>
        <mapper resource="com/ssmTest/dao/IUserDao.xml"/>
        <!--<mapper class="com.ssmTest.dao.IUserDao"/>-->
    </mappers>
</configuration>

Dao的配置文件:

<?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.ssmTest.dao.IUserDao">
    <!--配置查询所有-->
    <select id="findAll" resultType="com.ssmTest.domain.User">
        select * from user
    </select>
</mapper>

注解方式实现Dao时:
需要:主配置文件<mappers> -<mapper class>方式指定资源+【删除Dao实现类的xml配置文件,不然报错】+在Dao中添加注解

public interface IUserDao {
    //查询所有操作
    //注解方式
    //@Select("select * from user")
    List<User> findAll();
}

注意实现类xml与注解方式在主配置文件Mappers路径指定的区别,resource用/划分路径,class用.划分包名。

手动实现Dao时:
需要:手写Dao实现类+Dao实现类的xml配置文件(在实现类文件中指定方法:Session调用selectList())

public class UserDaoImpl implements IUserDao {
    private SqlSessionFactory factory;

    public UserDaoImpl(SqlSessionFactory factory) {
        this.factory = factory;
    }

    @Override
    public List<User> findAll() {
        //1.使用工厂创建SqlSession对象
        SqlSession session=factory.openSession();
        //2.使用session执行查询所有方法
        List<User> users=session.selectList("com.ssmTest.dao.IUserDao.findAll");
        session.close();
        return users;
    }
}

测试类:

public class MybatisTest  {
    public static void main(String[] args) throws Exception {
        //1.读取配置文件
        InputStream in= Resources.getResourceAsStream("SqlMapConfig.xml");
        //2.创建SqlSessionFactory
        SqlSessionFactoryBuilder builder=new SqlSessionFactoryBuilder();
        SqlSessionFactory factory=builder.build(in);
        //MyBtis实现处理层Impl方式
        //UserDaoImpl userDao=new UserDaoImpl(factory);
        //3.使用工厂生产SqlSession对象
        SqlSession sqlSession = factory.openSession();
        //4.使用SqlSession创建Dao接口的代理对象
        IUserDao userDao=sqlSession.getMapper(IUserDao.class);
        //5.使用代理对象执行方法
        List<User> users=userDao.findAll();
        for(User user:users){
            System.out.println(user);
        }
        //6.释放资源
        //sqlSession.close();
        in.close();
    }
}

使用传统的手写Dao的方法,直接跳过3、4步即可实现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值