• MyBatis 配置文件


     mybatis.xml

     1 <?xml version="1.0" encoding="UTF-8" ?>
     2 <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
     3         "http://mybatis.org/dtd/mybatis-3-config.dtd">
     4 <configuration>
     5     <typeAliases>
     6         <!--<typeAlias type="com.iotek.entity.User" alias="User"/>-->
     7         <!--Batis能够自动的把entity包下面的类起一个别名,那么在mapper映射文件中-->
     8         <!--就不用写包名了,直接就可以使用类名-->
     9         <package name="com.iotek.entity"/>
    10     </typeAliases>
    11 
    12     <!--配置数据库连接信息 default的属性指向一个environment的id-->
    13     <environments default="development">
    14         <!--可以有多个environment,必须设置一个默认的-->
    15         <environment id="development">
    16             <!--事务管理机制,使用的是jdbc来管理sql的事务-->
    17             <transactionManager type="JDBC"/>
    18             <!--配置数据源,默认启用mybatis自带的连接池-->
    19             <dataSource type="POOLED">
    20                 <property name="url" value="jdbc:mysql://localhost:3306/homework"/>
    21                 <property name="driver" value="com.mysql.jdbc.Driver"/>
    22                 <property name="username" value="root"/>
    23                 <property name="password" value="root"/>
    24             </dataSource>
    25         </environment>
    26     </environments>
    27 
    28     <mappers>
    29         <!--指定sql映射文件的位置-->
    30         <mapper resource="com/iotek/mapper/SpareMapper.xml"/>
    31         <mapper resource="com/iotek/mapper/UserMapper.xml"/>
    32         <mapper resource="com/iotek/mapper/UserDetailsMapper.xml"/>
    33     </mappers>
    34 </configuration>
    View Code

     UserMapper.xml

     1 <?xml version="1.0" encoding="UTF-8" ?>
     2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     3         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
     4 
     5 <!--namespace:类似于java中的包名,作用1:让java代码能够寻找到sql语句-->
     6                                 <!--作用2:避免sql的id重名-->
     7 <mapper namespace="com.iotek.dao.UserDAO">
     8         <resultMap id="userMap" type="User">
     9                 <!--property:实体类的属性名,column:数据库的表列名-->
    10                 <id property="id" column="id"/>
    11                 <result property="name" column="name"/>
    12                 <result property="pass" column="pass"/>
    13 
    14                 <!--collection:配置一对多,property:一方中多方的集合属性名,ofType就是多方的类型-->
    15                 <collection property="userDetailsSet" ofType="UserDetails">
    16                         <id property="id" column="userDetailsId"/>
    17                         <result property="address" column="address"/>
    18                 </collection>
    19         </resultMap>
    20 
    21         <!--select : 封装select查询sql语句-->
    22                 <!--id:给sql起个名字,让java找到这条sql语句-->
    23                 <!--resultType:sql语句的执行后的返回值类型,注意只考虑一行数据封装后的结果,不管返回的是一行还是多行-->
    24         <select id="selectAllUser" resultMap="userMap">
    25                 select u.*,ud.id userDetailsId,ud.address from users u,userdetails ud where u.id=ud.userId
    26         </select>
    27 
    28         <!--参数要写在#{参数名}-->
    29                 <!--参数的命名规则:-->
    30                         <!--1、如果是一个参数,则名称无所谓,一般写列名一致-->
    31                         <!--2、如果有多个参数,则sql中的参数名,要和java中的参数名保持一致-->
    32                         <!--3、如果多个参数是来源于某个类,最常见的就是实体类,那么sql中的参数名就是这个实体类的-->
    33                                 <!--属性名-->
    34                 <!--参数类型在parameterType中定义-->
    35                         <!--1、如果是一个参数,那么参数是啥类型,就写啥-->
    36                         <!--2、如果有多个参数,在java中可以使用map类型存储多个参数的值-->
    37                                 <!--map中的key就是参数名,map中的value就是参数对应的值-->
    38                         <!--3、如果多个参数是来源于某个类,则parameterType写上这个类的类名-->
    39         <select id="getUserById" resultType="com.iotek.entity.User" parameterType="int">
    40                 SELECT * from users where id=#{id}
    41         </select>
    42 
    43         <!--insertupdatedelete 的返回结果都是int类型,所以不用谢resultType-->
    44         <insert id="addUser" parameterType="User">
    45             insert into users(name,pass) values(#{name},#{pass})
    46         </insert>
    47 </mapper>
    View Code

     如果要用getMapper方法自动生成dao的实现类对象(代理对象)
       要求:1、Mapper映射文件中的namespace必须是接口路径(包名+接口名)
           2、Mapper中sql的id必须是接口中方法的名字

  • 相关阅读:
    Maven入门
    sdk&jdk&jre
    常用git指令
    Spring 3.x 读书笔记
    JAVA多线程---高并发程序设计
    JAVA多线程---ThreadLocal<E>
    JAVA多线程--Thinking in java
    2017年书单
    正则表达式获取多个img src的值
    使用summernote编辑器上传图片,重写onImageUpload
  • 原文地址:https://www.cnblogs.com/BobXie85/p/6699422.html
Copyright © 2020-2023  润新知