Java -- MyBatis学习笔记2、入门案例

1、MyBatis框架入门案列

使用MyBatis框架、连接数据库,查询一张表数据,存放到List集合中。

2、搭建MyBatis开发环境

创建MYSQL数据库、表、创建Maven工程、在项目中创建实体类,Dao接口。

2.1、创建MYSQL数据库表

  • 数据库名StudentManage、表名UserInfo

2.2、IDEA搭建项目工程

  • 创建Maven工程、首先创建空工程、点击加号、添加Module
  • 选择Maven、在骨架模板中选择quickstart、也就是Javase项目
  • 填写名称和路径、路径选择空工程路径、在后边加上Maven名称
  • 最后点击finish、OK,等待构建Maven项目成功即可。
  • 整理pom.xml文件,删除name、url和build里边的内容、properties里边的版本从1.7改为1.8
  • 在dependencies、build里边加入依赖、如下:
<dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.5.1</version>
    </dependency>
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.49</version>
    </dependency>
  </dependencies>

  <build>
    <resources>
      <resource>
        <directory>src/main/java</directory><!--所在的目录-->
        <includes><!--包括目录下的.properties,.xml 文件都会扫描到-->
          <include>**/*.properties</include>
          <include>**/*.xml</include>
        </includes>
        <filtering>false</filtering>
      </resource>
    </resources>
  </build>
  • 点击刷新按钮、更新插件
  • 新建包、创建实体类
public class UserInfo
{
    //构造
    private int id;
    private String Name;
    private int Age;
    //get set tosting....
}
  • 在Dao层创建接口
public interface UserInfoDao
{
    List<UserInfo> selectAll();
}
  • 创建和Dao层接口对应的Mapper映射文件UserInfoDao.xml、名称和接口名称要一样、当然,后缀名肯定不一样,上边接口中有查询所有数据的方法、那么映射文件里就应该有查询标签和对应的SQL语句,这样、Java代码和SQL语句就分开了。
<?xml version="1.0" encoding="UTF-8" ?>
<!-- 
  http://mybatis.org/dtd/mybatis-3-mapper.dtd:指定约束文件、检查mapper标签里边的内容是否正确,必须符合mybatis的要求。
 -->
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--
    mapper:当前文件的根标签、必须要有,所有操作都在这个标签里边进行。在当前文件中、可以使用特定的标签表示对数据库的操作。
    namespace:命名空间、唯一值、推荐使用Dao接口全限定名称
-->
<mapper namespace="com.rg.dao.UserInfoDao">
    <!--
       select标签:完成查询操作、还可以是insert、update、delete。
       id:该SQL语法的唯一标识,mybatis会根据id值,来执行对应的SQL语句、推荐使用接口中方法名称
       resultType:sql语句返回值最终类型、这里虽然最后结果是集合、但是集合中存的是UserInfo
    -->
    <select id="selectAll" resultType="com.rg.entity.UserInfo">
        select * from UserInfo
    </select>
</mapper>
  • 在项目src/main下创建resources目录,设置resources目录为resources root创建主配置文件:名称为 mybatis.xml、说明:主配置文件名称是自定义的,内容如下:
<configuration>
    <settings>
        <!--设置mybatis输出日志-->
        <setting name="logImpl" value="STDOUT_LOGGING"/>
    </settings>
    <!--配置mybatis环境、从environments是复数就可以看出、里边可以有多个-->
    <environments default="mysql">
        <!--数据源的名称-->
        <environment id="mysql">
            <!--配置事务类型、这里使用JDBC事务-->
            <transactionManager type="jdbc"></transactionManager>
            <!--数据源dataSource:创建数据库连接对象-->
            <!--POOLED:使用连接池-->
            <dataSource type="POOLED">
                <!--连接数据库的四个要素-->
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/StudentManage"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>
    <!--SQL映射文件的位置-->
    <mappers>
        <!--从classes下开始-->
        mapper resource="com/rg/dao/UserInfoDao.xml"/>
    </mappers>

</configuration>
  • 最后、test包下创建测试类和测试方法、如下:
public void test01() throws IOException
    {
        //读取mybatis主配置文件
        //路径也是以classes为根目录开始,mybatis是在classes的下边、所以可以直接写名字
        String config = "mybatis.xml";
        //读取配置文件、这样就可以读取到数据库的信息。
        InputStream is = Resources.getResourceAsStream(config);
        //创建SqlSessionFactory对象,目的是获取SqlSession
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
        //获取SqlSession对象,SqlSession能执行sql语句
        SqlSession sqlSession = sqlSessionFactory.openSession();
        //执行SqlSession的selectList()
        //com.rg.dao.UserInfoDao这个就是映射文件里边根标签mapper的命名空间、selectAll就是里边查询标签的id值
        //通过命名空间加id值,执行对应的SQL语句。
        List<UserInfo> userList = sqlSession.selectList("com.rg.dao.UserInfoDao.selectAll");
        //循环输出集合中的结果
        userList.forEach(x -> System.out.println(x));
        //关闭selectList,释放资源
        sqlSession.close();
    }

编译一下、运行测试方法、这样、UserInfo这样表的所有数据就输出在控制台了。

  • 其中
List<Student> studentList =session.selectList("com.rg.dao.StudentDao.selectAll");
近似等价的 jdbc 代码
Connection conn = 获取连接对象
String sql=” select * from UserInfo
PreparedStatement ps = conn.prepareStatement(sql);
ResultSet rs = ps.executeQuery();
posted @ 2021-05-07 22:21  初晨~  阅读(74)  评论(0编辑  收藏  举报