Mybatis-01(创建一个Mybatis程序)

------------恢复内容开始------------

创建一个Mybatis项目:

①导入依赖包:

<dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.47</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.2</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
    </dependencies>        

②编写配置文件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核心配置文件-->
<configuration>

    <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://localhost:3306/mybatis?useSSL=true&amp;useUnicode=true&amp;characterEncoding=UTF-8"/>
                <property name="username" value="root"/>
                <property name="password" value="admin"/>
            </dataSource>
        </environment>
    </environments>

</configuration>

③编写实体类。set,get,tostring,有参无参构造函数

package pojo;

public class User {
    private int id;
    private String name;
    private String pwd;
}

④编写dao接口

public interface UserDao {
    List<User> getUserList();
}

⑤编写UserMapper.xml当中放在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="dao.UserDao">


    <select id="getUserList" resultType="pojo.User">
        select * from mybatis.user
    </select>

</mapper>

namespace绑定一个对应的dao接口,select中的id绑定接口中的方法名 resultType对应返回类型。

⑥测试,测试前需要明白,maven是约定大于配置的,他只识别resources下的xml文件,而本文是写在了main/java/dao目录下,是识别不了的,所以需要在pom.xml(父工程以及子工程)中添加以下代码:

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

⑦然后你发现你编写的UserMapper.xml,只是编写了,并没有与这个项目联系起来,这时候需要在mybatis-config.xml中添加映射代码:(这个里面目录之间用"/" 而不是".")

<mappers>
        <mapper resource="dao/UserMapper.xml"/>
    </mappers>

还有其他两个办法,一个是把使用class文件绑定注册,另一个是用使用扫描包进行注入绑定,这两个问题比较多,不建议用,如果硬要用注意两个注意点:

  • 接口和他的Mapper配置文件必须同名!本文中的接口用的是UserDao,配置文件时UserMapper.xml就不行,必须是一样的名字。比如都用UserMapper。
  • 接口和他的Mapper配置文件必须在同一个包下!

 

⑧编写测试类:

@Test
public void test(){
    //第一步:获得SqlSession对象
    SqlSession sqlSession = MybatisUtils.getSqlSession();


    //方式一:getMapper
    UserDao userDao = sqlSession.getMapper(UserDao.class);
    List<User> userList = userDao.getUserList();

    for (User user : userList) {
        System.out.println(user);
    }



    //关闭SqlSession
    sqlSession.close();
}

注意,增删改的话,要提交事务。

即close()前面加一段代码:

sqlSession.commit();

 

 

------------恢复内容结束------------

posted @ 2022-03-19 00:26  塵暘  阅读(33)  评论(0)    收藏  举报