zoukankan      html  css  js  c++  java
  • 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();
    
  • 相关阅读:
    Optimization Landscape and Expressivity of DeepCNNs
    Requests从入门到进阶
    互联网架构师学习笔记整理
    使用Psutil监控系统资源
    Mac平台AirtestIDE adb 连接不上Genmotion Android9虚拟机的问题
    Mac版PyCharm,WebStrom闪退的处理办法 LSOpenURLsWithRole() failed with error -10810 for the file /Applications/Web
    Django Admin Cookbook-42如何在Django Admin后台控制台中设置应用程序和模型的顺序
    Django Admin Cookbook-41如何将数据库视图添加到Django Admin后台
    Django Admin Cookbook-40如何为Django Admin覆盖保存操作
    Django Admin Cookbook-39如何两次向Django管理员添加模型
  • 原文地址:https://www.cnblogs.com/dcy521/p/14742898.html
Copyright © 2011-2022 走看看