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         <!--insert\update\delete 的返回结果都是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必须是接口中方法的名字

posted @ 2017-04-12 15:26  Bob.Xie  阅读(169)  评论(0编辑  收藏  举报