1. 程式人生 > >Mybatis的Mapper檔案Demo

Mybatis的Mapper檔案Demo

<?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">
<!-- 寫Sql語句   -->
<mapper namespace="com.itheima.mybatis.mapper.UserMapper">
	<sql id="selector">
		select * from user
	</sql>

	<!-- 通過ID查詢一個使用者 -->
	<select id="findUserById" parameterType="Integer" resultType="User">
		select * from user where id = #{v}
	</select>
	
	<!-- //根據使用者名稱稱模糊查詢使用者列表
	#{}    select * from user where id = ?    佔位符  ? ==  '五'
	${}    select * from user where username like '%五%'  字串拼接  
	
	 -->
	<select id="findUserByUsername" parameterType="String" resultType="com.itheima.mybatis.pojo.User">
		select * from user where username like "%"#{haha}"%"
	</select>
	
	<!-- 新增使用者 -->
	<insert id="insertUser" parameterType="com.itheima.mybatis.pojo.User">
		<selectKey keyProperty="id" resultType="Integer" order="AFTER">
			select LAST_INSERT_ID()
		</selectKey>
		insert into user (username,birthday,address,sex) 
		values (#{username},#{birthday},#{address},#{sex})
	</insert>
	
	<!-- 更新 -->
	<update id="updateUserById" parameterType="com.itheima.mybatis.pojo.User">
		update user 
		set username = #{username},sex = #{sex},birthday = #{birthday},address = #{address}
		where id = #{id}
	</update>
	
	<!-- 刪除 -->
	<delete id="deleteUserById" parameterType="Integer">
		delete from user 
		where id = #{vvvvv}
	</delete>
	
	<!-- 根據使用者名稱模糊查詢 -->
	<select id="findUserByQueryVo" parameterType="QueryVo" resultType="com.itheima.mybatis.pojo.User">
		select * from user where username like "%"#{user.username}"%"
	</select>
	
	<!-- 
	 -->
	 <select id="countUser" resultType="Integer">
	 	select count(1) from user
	 </select>
	 
	 
	 <!--	根據性別和名字查詢使用者  where 可以去掉第一個前ANd   -->
	 <select id="selectUserBySexAndUsername" parameterType="User" resultType="User">
	 	<include refid="selector"/>
	 	<where>
		 	<if test="sex != null and sex != ''">
		 		 and sex = #{sex} 
		 	</if>
		 	<if test="username != null and username != ''">
			 	 and username = #{username}
		 	</if>
	 	</where>
	 </select>
	 
	 <!-- 多個ID (1,2,3)-->
	 <select id="selectUserByIds" parameterType="QueryVo" resultType="User">
	 	<include refid="selector"/>
	 	<where>
	 		<foreach collection="list" item="id" separator="," open="id in (" close=")">
	 			#{id}
	 		</foreach>
	 	</where>
	 </select>


</mapper>
<?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">
<!-- 寫Sql語句   -->
<mapper namespace="com.itheima.mybatis.mapper.OrderMapper">
	
<!-- 	<select id="selectOrdersList" resultType="Orders"> -->
	<resultMap type="Orders" id="orders">
		<result column="user_id" property="userId"/>
	</resultMap>
	
	<select id="selectOrdersList" resultMap="orders">
		SELECT id, user_id, number, createtime, note FROM orders 
	</select>
	
	<!-- 
		//一對一關聯 查詢  以訂單為中心 關聯使用者
	public List<Orders> selectOrders();
	 -->
	 <resultMap type="Orders" id="order">
	 	<result column="id" property="id"/>
	 	<result column="user_id" property="userId"/>
	 	<result column="number" property="number"/>
	 	<!-- 一對一 -->
	 	<association property="user" javaType="User">
	 		<id column="user_id" property="id"/>
	 		<result column="username" property="username"/>
	 	</association>
	 </resultMap>
	 <select id="selectOrders" resultMap="order">
	 	SELECT 
	 	o.id,
	    o.user_id, 
	    o.number,
	 	o.createtime,
	 	u.username 
	 	FROM orders o 
	 	left join user u 
	 	on o.user_id = u.id
	 </select>
	 
	 <!-- 
	 
	 	//一對多關聯
	public List<User> selectUserList(); -->
	<resultMap type="User" id="user">
		<id column="user_id" property="id"/>
		<result column="username" property="username"/>
		<!-- 一對多 -->
		<collection property="ordersList" ofType="Orders">
			<id column="id" property="id"/>
			<result column="number" property="number"/>
		</collection>
	</resultMap>
	<select id="selectUserList" resultMap="user">
		SELECT 
	 	o.id,
	    o.user_id, 
	    o.number,
	 	o.createtime,
	 	u.username 
	 	FROM user u
	 	left join orders o 
	 	on o.user_id = u.id
	</select>

</mapper>