zoukankan      html  css  js  c++  java
  • Mybatis 学习笔记1

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

    什么是 MyBatis ?

    MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。

    MyBatis 可以对配置和原生Map使用简单的 XML 或注解,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

    安装

    要使用 MyBatis, 只需将 mybatis-x.x.x.jar 文件置于 classpath 中即可。

    如果使用 Maven 来构建项目,则需将下面的 dependency 代码置于 pom.xml 文件中:

    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>x.x.x</version>
    </dependency>
    

      核心为两个配置文件:

          一个为config.xml 也就是Mybatis的配置文件

          一个为XXXMapper.xml  也就是实体类的映射文件

    XML 配置文件(configuration.XML)中包含了对 MyBatis 系统的核心设置,包含获取数据库连接实例的数据源(DataSource)和决定事务范围和控制方式的事务管理器(TransactionManager)。配置文件示例:

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <!DOCTYPE configuration
     3         PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
     4         "http://mybatis.org/dtd/mybatis-3-config.dtd">
     5 <configuration>
     6     <typeAliases>
     7         <typeAlias alias="User" type="com.jikexueyuancrm.entity.User"/>
     8     </typeAliases>
     9     <environments default="development">    默认的环境id为development
    10         <environment id="development">    为environment元素定义id
    11             <transactionManager type="JDBC"/>    事务管理器配置 类型为jdbc
                            

        JDBC – 这个配置就是直接使用了 JDBC 的提交和回滚设置,它依赖于从数据源得到的连接来管理事务范围。

    12             <dataSource type="POOLED">
    13                 <property name="driver" value="com.mysql.jdbc.Driver"/>
    14                 <property name="url" value="jdbc:mysql://192.168.0.118:3306/jikexueyuancrm"/>
    15                 <property name="username" value="admin"/>
    16                 <property name="password" value="666666"/>
    17             </dataSource>
    18         </environment>
    19     </environments>
    20     <mappers>
    21         <mapper resource="com/mybatis3/mappers/UserMapper.xml"/>
    22     </mappers>
    23 </configuration>

     实体类User:

      public class User {
      
    private int id; private String username; private String password; public String toString() { return "id: " +id+ " username: "+username +" password "+password;
        ...省略get,set方法 } }

     映射文件UserMaper.xml

    <?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.mybatis3.mappers.UserMapper">
        <select id="getUserById" parameterType="int"
                resultType="User">
                select * from User where id=#{id}
        </select>
        <insert id="addUser" useGeneratedKeys="true" keyProperty="id"
                    parameterType="User">
            insert into User(username,password) values(#{username},#{password})    
        </insert>
        <update id="updateUser">
            update user set username=#{username},
            password=#{password} where id=#{id}
        </update>
        <delete id="deleteUser" parameterType="int">
            delete from User where id=#{id}
        </delete>
    </mapper>

    输出:

    2016-07-30 22:53:02,762 [main] DEBUG [com.mybatis3.mappers.UserMapper.getUserById] - ==>  Preparing: select * from User where id=? 
      2016-07-30 22:53:02,807 [main] DEBUG [com.mybatis3.mappers.UserMapper.getUserById] - ==> Parameters: 2(Integer)
      2016-07-30 22:53:02,838 [main] DEBUG [com.mybatis3.mappers.UserMapper.getUserById] - <==      Total: 1
      2016-07-30 22:53:02,840 [main] DEBUG [com.mybatis3.mappers.UserMapper.updateUser] - ==>  Preparing: update user set username=?, password=? where id=? 
      2016-07-30 22:53:02,841 [main] DEBUG [com.mybatis3.mappers.UserMapper.updateUser] - ==> Parameters: wangwu(String), dsfsfs(String), 1(Integer)
      2016-07-30 22:53:02,879 [main] DEBUG [com.mybatis3.mappers.UserMapper.updateUser] - <==    Updates: 1
      id: 2   username: hehe   password  123123

    select

    查询语句是 MyBatis 中最常用的元素之一,光能把数据存到数据库中价值并不大,如果还能重新取出来才有用,多数应用也都是查询比修改要频繁。对每个插入、更新或删除操作,通常对应多个查询操作。这是 MyBatis 的基本原则之一,也是将焦点和努力放到查询和结果映射的原因。简单查询的 select 元素是非常简单的。比如:

    <select id="selectPerson" parameterType="int" resultType="hashmap">
      SELECT * FROM PERSON WHERE ID = #{id}
    </select>

    这个语句被称作 selectPerson,接受一个 int(或 Integer)类型的参数,并返回一个 HashMap 类型的对象,其中的键是列名,值便是结果行中的对应值。

    注意参数符号:#{id}

    这就告诉 MyBatis 创建一个预处理语句参数,通过 JDBC,这样的一个参数在 SQL 中会由一个“?”来标识,并被传递到一个新的预处理语句中,就像这样:

    // Similar JDBC code, NOT MyBatis…
    String selectPerson = "SELECT * FROM PERSON WHERE ID=?";
    PreparedStatement ps = conn.prepareStatement(selectPerson);
    ps.setInt(1,id);

    当然,这需要很多单独的 JDBC 的代码来提取结果并将它们映射到对象实例中,这就是 MyBatis 节省你时间的地方。我们需要深入了解参数和结果映射,细节部分我们下面来了解。

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

  • 相关阅读:
    复习正则表达式20190618
    python每日练习10题2
    java多线程
    资源2
    apache
    行转列,列转行
    mysql5.7安装(正确安装)实战
    常见规则引擎技术
    Spark性能优化之道——解决Spark数据倾斜(Data Skew)的N种姿势
    Vue开源项目库汇总
  • 原文地址:https://www.cnblogs.com/peng111/p/5721972.html
Copyright © 2011-2022 走看看