xml地图|网站地图|网站标签 [设为首页] [加入收藏]

您的位置:亚洲必赢 > 计算机尝试 > mybatis

mybatis

发布时间:2019-05-30 05:16编辑:计算机尝试浏览(100)

    一、MyBatis的介绍

    mybatis。一.mybatis是什么

    mybatis,mybatis官网

    亚洲必赢手机官网,mybatis
    usermapper.xml
    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE mapper
    PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    ";
    <mapper namespace="com.easytopit.demo.mybatis.mapper.UserMapper">
    <insert id="insert" useGeneratedKeys="true" keyProperty="id" >
    INSERT INTO et_user (username, truename, login_time) VALUES(#{username}, #{truename}, #{loginTime});
    </insert>

    <update id="update">
    UPDATE et_user SET username=#{username}, truename=#{truename}, login_time=#{loginTime} WHERE id=#{id}
    </update>

    <delete id="delete" parameterType="int">
    delete from et_user where id=#{id}
    </delete>

    <select id="queryAll" resultType="com.easytopit.demo.mybatis.bean.User">
    SELECT id, username, truename, login_time loginTime FROM et_user LIMIT 10
    </select>

    <select id="queryAllByPage" parameterType="java.util.HashMap" resultType="com.easytopit.demo.mybatis.bean.User">
    <!-- SELECT id, username, truename, login_time loginTime FROM et_user LIMIT #{param1}, #{param2} -->
    SELECT id, username, truename, login_time loginTime FROM et_user LIMIT #{pageOffset}, #{pageSize}
    </select>

    <select id="query" resultType="com.easytopit.demo.mybatis.bean.User">
    SELECT id, username, truename, login_time loginTime FROM et_user WHERE id = #{id}
    </select>
    </mapper>
    namespace:
    是为着化解一样名字的sql操作难题,有标记的效应
    比如假设访问的渠道是/add.do,若是namespace为/user,则做客路线为/user/add.do
    select id="selectid"
    id是为了唯1标记sql语句
    resultType=java.util.map
    标志当行记录的花色

    // 手工业查询(依据命名空间 - 命名空间与Mapper接口1致) -> com/easytopit/demo/mybatis/mapper/persistent/UserMapperNS.xml
    users = session.selectList("NS.queryAll");
    参数的三种方法
    1:使用#{0}索引
    二:使用参数#{param1} 从1开始
    3:注解 @param(“name”)
    jdk一.八帮助参数评释,别的的不匡助 参数名字和param(“”)名字如出一辙
    注意事项
    #{} 实际上采用的jdbc的?占位符,是安全的
    11:41:56.728 [http-bio-8080-exec-10] DEBUG c.e.c.m.AlbumMapper.deletelAlbum - ==> Preparing: delete from ab_album where id = ?
    ${} 底层实际上采用的替换,要记得加单引号,是不安全的
    11:47:29.831 [http-bio-8080-exec-10] DEBUG c.e.c.m.AlbumMapper.deletelAlbum - ==> Preparing: delete from ab_album where id = 67
    结果集映射
    resulttype
    照耀八个现实的类
    resultmap
    先定义贰个resultmap,然后映射
    多对一映射
    一定于先查询二天性质,然后自动使用质量作为参数调用别的的秘诀,再讲结果回到
    column ''deptno ,property='dept',javaType=dept.class,one = @one(select = "命名空间.方法名")
    某些多映射
    懒加载
    设置
    亟需的时候加载
    现身的案由在于,应为1对多情形,有希望出现内部存款和储蓄器不足,所以当要求的时候,重新发起sql语句
    insert selectkey标签
    先通过sql语法,查询当前的列的最大值 一,放入到map中,然后insert into语句
    <insert id="addRecord" parameterType="map" >
    <!--取主键,通过取主键的最大值 一,适合单线程,不提议接纳
    下一场将主键设置为key放到map中

    -->
    <selectKey keyColumn="mykey" keyProperty="scoreNo" order="BEFORE" resultType="int" >
    select max(s_id) 1 as mykey from ex_score
    </selectKey>
    insert into ex_score (s_id,u_id,s_score,s_create_date,s_level) values(#{scoreNo},#{userId},#{userScore},#{createTime},#{level})
    </insert>
    sql和include标签
    将一如此前的sql语句封装放到sql标签里面,然后使用include标签调用sql
    sql里面包车型大巴特殊符号
    在xml转义
    小写 <
    低于等于<=
    maven插件出故障
    C:UsersAdministrator.m2repositoryorgapachemavenpluginsmaven-resources-plugin
    删除
    致使的难题,在网路的意况下自动更新插件,倘若中途网络现身故障,就能够冒出难点
    动态sql
    trim
    prefix='where' prefixoverrides='and'
    意思是壹旦前缀有and,将and覆盖成where
    在意,要在各样条件前面加上and
    trim转set
    trim prifix = 'set' prefixoverrides='' suffix='' suffixoverride=','
    意思是将方今空格替换来set,将前边的,替换到空格
    set
    发端加多set,结尾去掉逗号
    where
    效果:借使有规则满意,自动增多上where,并且会自行去掉满意第一个规格的and
    foreach
    大许多用于循环in里面包车型地铁多少
    foreach collection='传进来对象的属性' close=') item=''变量' open='(' separator='各种数据在此以前用逗号分开'
    不提议在where1=壹 ,因为会读取全体的表,有总体性难题
    缓存
    缓存的情趣是,全部查询的过三遍的数码有的时候存款和储蓄在内部存款和储蓄器中,第一回则剖断内存是还是不是存在,不设有就去读取数据库
    要记挂的标题,当内部存款和储蓄器不足 时,思虑将有个别数据踢出去
    一流缓存
    是session品级的缓存,必须是session一样,抽取来的缓存数据才一样
    再不你每一遍插叙查询一回都会去数据库查找
    意义:同二个session操作数据时,第一回操作直接去缓存里面去,没有要求另行去数据库操作
    对增差改查
    二级缓存
    是sessionfactory级别
    职能,使用同三个sesseionfactory,当第三个sesseion的数额存入到sesseion中,然后session关闭,假若有启用了二级缓存,数据会被推送到二级缓存里面,然后下一次选用新的sesseion时,会一直从二级缓存里面读取
    启航二级缓存
    在mapper里面,使用<cache></cache>
    子主题 4
    不提出利用二级缓存
    约等于事先的全局变量
    对查询安全
    算法
    fifo
    将队列最右端的数额踢出去
    lfu:least frequently used
    行使次数最少的踢出去
    也便是多少存到数据库到删除使用次数最少的
    LRU:least recently userd
    近年利用次数最少的
    在钦点时期Nelly用次数最少的
    金镶玉裹福禄双全缓存
    缓存的每行数据必须有唯一标志符(表中的主键),也就是map
    若是有就从map中取,未有就增添
    子主题 1

    mybatis usermapper.xml ?xml version="1.0" encoding="UTF-8" ? !DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "...

    mybatis 一二事(3),mybatis

    db.properties

    1 jdbc.driver=com.mysql.jdbc.Driver
    2 jdbc.url=jdbc:mysql://localhost:3306/order
    3 jdbc.username=root
    4 jdbc.password=root
    

    SqlMapConfig.xml

     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     <!-- 加载数据库连接参数配置文件 -->
     7     <properties resource="db.properties" />
     8     
     9     <!-- 
    10         全局配置参数
    11         比如 二级缓存 延迟加载...等
    12         此全局参数会影响mybatis运行的性能,要谨慎配置    
    13      -->
    14 <!--     <settings> -->
    15 <!--     <setting name="" value=""/> -->
    16 <!--     </settings> -->
    17     
    18     <!-- 定义别名 -->
    19     <typeAliases>
    20         <!-- 单个别名定义
    21         type:pojo的路径 
    22         alias:别名的名称
    23         -->
    24         <!-- <typeAlias type="cn.itcast.mybatis.po.User" alias="user"/> -->
    25         <!-- 批量别名定义
    26         name:指定包名,将包下边的所有pojo定义别名 ,别名为类名(首字母大写或小写都行)
    27          -->
    28         <package name="com.mybatis.bean"/>
    29     </typeAliases>
    30     
    31     <!-- 和spring整合后 environments配置将废除 -->
    32     <environments default="development">
    33         <environment id="development">
    34             <transactionManager type="JDBC" />
    35             <dataSource type="POOLED">
    36                 <property name="driver" value="${jdbc.driver}"/>
    37                 <property name="url" value="${jdbc.url}"/>
    38                 <property name="username" value="${jdbc.username}"/>
    39                 <property name="password" value="${jdbc.password}"/>
    40             </dataSource>
    41         </environment>
    42     </environments>
    43 
    44     <!-- 配置mapper映射文件 -->
    45     <mappers>
    46         <!-- resource方式
    47         在UserMapper.xml,定义namespace为mapper接口的地址,映射文件通过namespace找到对应的mapper接口文件
    48          -->
    49         <!-- <mapper resource="sqlmap/UserMapper.xml" /> -->
    50         <!-- class方式
    51         class:指定 mapper接口的地址
    52         遵循规则:将mapper.xml和mapper.java文件放在一个目录 且文件名相同
    53          -->
    54         <!-- <mapper class="cn.itcast.mybatis.mapper.UserMapper"/> -->
    55         
    56         <!--
    57             批量mapper扫描
    58             遵循规则:将mapper.xml和mapper.java文件放在一个目录 且文件名相同
    59             主要以这样的方式为主来加载mapper
    60           -->
    61         <package name="com.mybatis.mapper"/>
    62         
    63         
    64     </mappers>
    65 </configuration>
    

    OrderMapper.xml

      1 <?xml version="1.0" encoding="UTF-8" ?>
      2 <!DOCTYPE mapper
      3 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
      4 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
      5 
      6 <mapper namespace="com.mybatis.mapper.OrderMapper" >
      7     
      8     <!-- 
      9         ********
     10         1 对 1 查询建议使用 resultType
     11         ********
     12      -->
     13     
     14     <!-- type 为主类,即A类包含了B类作为属性,则type就写A类 -->
     15     <resultMap type="Orders" id="orderUserResultMap">
     16         <!-- 
     17             id 和 result 这两个标签是映射到 Orders 中去的 
     18             如果有多个字段决定id唯一,则写多个id标签
     19         -->
     20         <id column="id" property="id"/>
     21         <result column="order_number" property="order_number"/>
     22         <result column="user_id" property="user_id"/>
     23 
     24         <!-- 
     25             用于映射单个关联对象
     26             property: 将关联信息映射到哪个属性
     27             javaType: 属性映射的类型
     28          -->
     29         <association property="user" javaType="com.mybatis.bean.User">
     30             <id column="user_id" property="id"/>
     31             <result column="username" property="username"/>
     32             <result column="birthday" property="birthday"/>
     33         </association>
     34     </resultMap>    
     35 
     36 
     37     <!-- 
     38         extends: 继承上一个resultMap, 公用相同属性
     39      -->
     40     <resultMap type="Orders" id="orderUserDetailResultMap" extends="orderUserResultMap">
     41 
     42         <!-- 
     43             collection: 用于映射集合对象
     44             property: 将集合信息映射到哪个属性
     45             ofType: 这个集合对象的类型,也就是<>泛型
     46          -->
     47         <collection property="orderdetails" ofType="com.mybatis.bean.Orderdetail">
     48             <id column="order_detail_id" property="id"/>
     49             <result column="item_id" property="item_id"/>
     50             <result column="item_num" property="item_num"/>
     51             <result column="item_price" property="item_price"/>
     52         </collection>
     53 
     54     </resultMap>    
     55 
     56     <!-- 
     57         1 对 1 查询
     58      -->
     59     <select id="findOrderUserList" resultType="OrderUserCustom">
     60         select 
     61             o.id,
     62             o.order_number,
     63             o.user_id,
     64             u.username,
     65             u.birthday
     66         from 
     67             orders o 
     68         inner join 
     69             user u 
     70         on 
     71             o.user_id = u.id
     72     </select>
     73 
     74     <select id="findOrderUserListByResultMap" resultMap="orderUserResultMap">
     75         select 
     76             o.id,
     77             o.order_number,
     78             o.user_id,
     79             u.username,
     80             u.birthday
     81         from 
     82             orders o 
     83         inner join 
     84             user u 
     85         on 
     86             o.user_id = u.id
     87     </select>
     88     
     89     <!-- 
     90         1 对 多 查询
     91      -->
     92      <select id="findOrderItemsList" resultMap="orderUserDetailResultMap">
     93          select 
     94                 o.id,
     95                 o.order_number,
     96                 o.user_id,
     97                 u.username,
     98                 u.birthday,
     99                 od.item_id,
    100                 od.item_num,
    101                 od.item_price,
    102                 od.id as order_detail_id
    103             from 
    104                 orders o 
    105             inner join 
    106                 user u 
    107             on 
    108                 o.user_id = u.id 
    109             left join 
    110                 orderdetail od 
    111             on 
    112                 o.id = od.orders_id
    113     </select>
    114 </mapper>
    

    OrderMapper.java

     1 package com.mybatis.mapper;
     2 
     3 import java.util.List;
     4 
     5 import com.mybatis.bean.OrderUserCustom;
     6 import com.mybatis.bean.Orders;
     7 
     8 public interface OrderMapper {
     9     
    10     public List<OrderUserCustom> findOrderUserList() throws Exception;
    11     
    12     public List<Orders> findOrderUserListByResultMap() throws Exception;
    13     
    14     public List<Orders> findOrderItemsList() throws Exception;
    15     
    16 }
    

     

    Items.java

     1 package com.mybatis.bean;
     2 
     3 /**
     4  * 商品信息
     5  * 
     6  * @author Thinkpad
     7  *
     8  */
     9 public class Items {
    10     private int id;// 商品id
    11     private String item_name;// 商品名称
    12     private Float item_price;// 商品价格
    13     private String item_detail;// 商品明细
    14 
    15     public int getId() {
    16         return id;
    17     }
    18 
    19     public void setId(int id) {
    20         this.id = id;
    21     }
    22 
    23     public String getItem_name() {
    24         return item_name;
    25     }
    26 
    27     public void setItem_name(String item_name) {
    28         this.item_name = item_name;
    29     }
    30 
    31     public Float getItem_price() {
    32         return item_price;
    33     }
    34 
    35     public void setItem_price(Float item_price) {
    36         this.item_price = item_price;
    37     }
    38 
    39     public String getItem_detail() {
    40         return item_detail;
    41     }
    42 
    43     public void setItem_detail(String item_detail) {
    44         this.item_detail = item_detail;
    45     }
    46 
    47 }
    

    Orderdetail.java

     1 package com.mybatis.bean;
     2 
     3 /**
     4  * 订单明细
     5  * 
     6  * @author Thinkpad
     7  *
     8  */
     9 public class Orderdetail {
    10     private int id;// 主键
    11     private int orders_id;// 订单id
    12     private int item_id;// 商品id
    13     private int item_num;// 商品数量
    14     private Float item_price;// 商品价格
    15 
    16     // 商品信息
    17     private Items items;// 明细对应的商品信息
    18 
    19     public int getId() {
    20         return id;
    21     }
    22 
    23     public void setId(int id) {
    24         this.id = id;
    25     }
    26 
    27     public int getOrders_id() {
    28         return orders_id;
    29     }
    30 
    31     public void setOrders_id(int orders_id) {
    32         this.orders_id = orders_id;
    33     }
    34 
    35     public int getItem_id() {
    36         return item_id;
    37     }
    38 
    39     public void setItem_id(int item_id) {
    40         this.item_id = item_id;
    41     }
    42 
    43     public int getItem_num() {
    44         return item_num;
    45     }
    46 
    47     public void setItem_num(int item_num) {
    48         this.item_num = item_num;
    49     }
    50 
    51     public Float getItem_price() {
    52         return item_price;
    53     }
    54 
    55     public void setItem_price(Float item_price) {
    56         this.item_price = item_price;
    57     }
    58 
    59     public Items getItems() {
    60         return items;
    61     }
    62 
    63     public void setItems(Items items) {
    64         this.items = items;
    65     }
    66 
    67 }
    

    Orders.java

     1 package com.mybatis.bean;
     2 
     3 import java.util.List;
     4 
     5 /**
     6  * 订单信息
     7  * 
     8  * @author Thinkpad
     9  *
    10  */
    11 public class Orders {
    12     private int id;// 订单id
    13     private int user_id;// 用户id
    14     private String order_number;// 订单号
    15 
    16     private User user;// 用户信息
    17 
    18     private List<Orderdetail> orderdetails;// 订单明细信息
    19 
    20     public int getId() {
    21         return id;
    22     }
    23 
    24     public void setId(int id) {
    25         this.id = id;
    26     }
    27 
    28     public int getUser_id() {
    29         return user_id;
    30     }
    31 
    32     public void setUser_id(int user_id) {
    33         this.user_id = user_id;
    34     }
    35 
    36     public String getOrder_number() {
    37         return order_number;
    38     }
    39 
    40     public void setOrder_number(String order_number) {
    41         this.order_number = order_number;
    42     }
    43 
    44     public User getUser() {
    45         return user;
    46     }
    47 
    48     public void setUser(User user) {
    49         this.user = user;
    50     }
    51 
    52     public List<Orderdetail> getOrderdetails() {
    53         return orderdetails;
    54     }
    55 
    56     public void setOrderdetails(List<Orderdetail> orderdetails) {
    57         this.orderdetails = orderdetails;
    58     }
    59 
    60 }
    

    OrdersCustom.java

     1 package com.mybatis.bean;
     2 
     3 public class OrdersCustom extends User {
     4 
     5     private String user_id;// 用户id
     6     private String order_number;// 订单号
     7 
     8     public String getUser_id() {
     9         return user_id;
    10     }
    11 
    12     public void setUser_id(String user_id) {
    13         this.user_id = user_id;
    14     }
    15 
    16     public String getOrder_number() {
    17         return order_number;
    18     }
    19 
    20     public void setOrder_number(String order_number) {
    21         this.order_number = order_number;
    22     }
    23 
    24 }
    

    OrderUserCustom.java

     1 package com.mybatis.bean;
     2 
     3 import java.util.Date;
     4 
     5 public class OrderUserCustom extends Orders {
     6 
     7     private String username;
     8     private Date birthday;
     9     public String getUsername() {
    10         return username;
    11     }
    12     public void setUsername(String username) {
    13         this.username = username;
    14     }
    15     public Date getBirthday() {
    16         return birthday;
    17     }
    18     public void setBirthday(Date birthday) {
    19         this.birthday = birthday;
    20     }
    21 
    22 }
    

    User.java

     1 package com.mybatis.bean;
     2 
     3 import java.util.Date;
     4 import java.util.List;
     5 
     6 public class User implements java.io.Serializable {
     7     private int id;
     8     private int[] ids;// 存储多个id
     9     private String username;// 用户姓名
    10     private String sex;// 性别
    11     private Date birthday;// 出生日期
    12     private String address;// 地址
    13     private String detail;// 详细信息
    14     private Float score;// 成绩
    15 
    16     // 订单信息
    17     private List<Orders> orders;
    18 
    19     public int getId() {
    20         return id;
    21     }
    22 
    23     public void setId(int id) {
    24         this.id = id;
    25     }
    26 
    27     public String getUsername() {
    28         return username;
    29     }
    30 
    31     public void setUsername(String username) {
    32         this.username = username;
    33     }
    34 
    35     public String getSex() {
    36         return sex;
    37     }
    38 
    39     public void setSex(String sex) {
    40         this.sex = sex;
    41     }
    42 
    43     public Date getBirthday() {
    44         return birthday;
    45     }
    46 
    47     public void setBirthday(Date birthday) {
    48         this.birthday = birthday;
    49     }
    50 
    51     public String getAddress() {
    52         return address;
    53     }
    54 
    55     public void setAddress(String address) {
    56         this.address = address;
    57     }
    58 
    59     public String getDetail() {
    60         return detail;
    61     }
    62 
    63     public void setDetail(String detail) {
    64         this.detail = detail;
    65     }
    66 
    67     public Float getScore() {
    68         return score;
    69     }
    70 
    71     public void setScore(Float score) {
    72         this.score = score;
    73     }
    74 
    75     @Override
    76     public String toString() {
    77         return "User [id="   id   ", username="   username   ", sex="   sex
    78                   ", birthday="   birthday   ", address="   address
    79                   ", detail="   detail   ", score="   score   "]";
    80     }
    81 
    82     public List<Orders> getOrders() {
    83         return orders;
    84     }
    85 
    86     public void setOrders(List<Orders> orders) {
    87         this.orders = orders;
    88     }
    89 
    90     public int[] getIds() {
    91         return ids;
    92     }
    93 
    94     public void setIds(int[] ids) {
    95         this.ids = ids;
    96     }
    97 
    98 }
    

     

     

    github地址:

    一二事(3),mybatis db.properties 1 jdbc.driver= com.mysql.jdbc.Driver 2 jdbc.url=jdbc:mysql: // localhost:3306/order 3 jdbc.username= root 4 jdbc.password=root SqlM...

    MyBatis是3个支撑*普通SQL查询*积存进度高端映射的优秀漫长层框架。MyBatis解决了大约全部的JDBC代码和参数的手工业安装以及对结果集的查找封装。MyBatis能够使用简易的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。

    mybatis是三个长久层的框架,是apache下的顶尖项目。

    二、mybatis的使用

    mybatis托管到goolecode下,再后来托管到github下(

    一.创办项目,参与jar包

    mybatis让程序猿将根本精力放在sql上,通过mybatis提供的映射方式,自由灵活变通(半自动化,超越四五%急需程序猿编写sql)满意供给的sql语句。

      比如:mybatis-3.1.1.jar

    mybatis能够将向 preparedStatement中的输入参数自动举办输入映射,将查询结果集灵活映射成java对象。(输出映射)

    本文由亚洲必赢发布于计算机尝试,转载请注明出处:mybatis

    关键词: 数据库 其他综合 mybatis概念