IDEA使用Maven创建MyBatis项目

1 篇文章 0 订阅
1 篇文章 0 订阅

工欲善其事,必先利其器。首先必须要先了解MyBatis工作原理

实例:实现图书的全部查询操作

环境搭建

1.搭建数据库:

2.在IDEA中新建一个项目:

3.pom.xml中导入依赖:

<dependency>
    <!--添加mybatis依赖-->
  <groupId>org.mybatis</groupId>
  <artifactId>mybatis</artifactId>
  <version>x.x.x</version>
</dependency>
<dependency><!--配置sql连接-->
   <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
   <version>8.0.32</version>
 </dependency>

4.添加mybatis核心配置文件: 创建 mybatis-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>
    <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/bookdb"/>
                <property name="username" value="root"/>
                <property name="password" value="根据自身mysql密码而定"/>
            </dataSource>
        </environment>
    </environments>
     <mappers>
        <mapper resource="com/itFuml/mapper/BookMapper.xml"/>
    </mappers>
</configuration>    

5.添加会话工厂类:(这里mybatis采用工厂设计模式进行操作)

public class SqlSessionUtils {
    private  static  SqlSessionFactory sqlSessionFactory;
​
    static {//使用mybatis第一步,获取sqlSessionFactory对象
        try {
            String resources="mybatis-config.xml";
            InputStream inputStream = Resources.getResourceAsStream(resources);
            sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
    //既然有了sqlSessionFactory,顾明思议我们就可以从中获取sqlSession的实例了
    //sqlSession完全包含了面向数据库执行sql命令所需的所有方法
    public  static SqlSession getSqlsession(){
        return  sqlSessionFactory.openSession();
    }
}

6.编写代码:(实体类、dao接口、接口实现类)

注意这里的实体类名称要与数据库字段名称要相同!!!

public class Book {
    private  String number;
    private  String name;
    private  String author;
    private  String price;
    private  String pubData;
    private  String press;
//此处省略get和set、toString方法

构建mapper接口类:(相当于dao层中的BookDao)

public interface BookMapper {
    List<Book> queryAllBooks();//查询所有的图书信息
}

接口实现类由原来的BookDaoImpl转变为一个Mapper配置文件

<?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=绑定一个对应的Dao/Mapper接口-->
<mapper namespace="com.itFuml.mapper.BookMapper">
<!--    id对应接口方法的名称,resultType对应返回结果类型-->
    <select id="queryAllBooks" resultType="com.itFuml.pojo.Book">
        select * from bookdb.book
    </select>
</mapper>

namespace中的包名要和Dao/Mapper接口的包名一致!

resultType:对应返回结果类型

ParameterType:传入参数类型

测试:(新建测试类使用Junit进行统计测试连接操作)

public class SqlsessionTest {
    @Test
    public  void  test(){
        //第一步:获得SqlSession对象
        SqlSession sqlsession = SqlSessionUtils.getSqlsession();
        //方式一:getMapper
        BookMapper mapper = sqlsession.getMapper(BookMapper.class);//使用多态进行解析数据
        List<Book> books = mapper.queryAllBooks();
        books.forEach(System.out::println);
        sqlsession.close();//关闭SqlSession对象
    }
}

运行效果:

如果发生错误

解决方法:在pom.xml中添加过滤代码

<build>
    <resources>
        <resource>
            <directory>src/main/java</directory>
            <includes>
                <include>**/*.xml</include>
                <include>**/*.properties</include>
            </includes>
        </resource>
        <resource>
            <directory>src/main/resources</directory>
            <includes>
                <include>**/*.xml</include>
                <include>**/*.properties</include>
            </includes>
        </resource>
    </resources>
</build>

  • 12
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值