1. 程式人生 > >mybatis日常小結

mybatis日常小結

package com.itheima.domain;

import java.util.Date;

public class User {
	private Integer id;
	private String username;
	private Date birthday;
	private String sex;
	private String address;
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public Date getBirthday() {
		return birthday;
	}
	public void setBirthday(Date birthday) {
		this.birthday = birthday;
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
	public String getAddress() {
		return address;
	}
	public void setAddress(String address) {
		this.address = address;
	}
}

package com.itheima.domain;

public class QueryVo {

	private User user;

	public User getUser() {
		return user;
	}
	public void setUser(User user) {
		this.user = user;
	}
}

package com.itheima.mapper;

import java.util.List;

import com.itheima.domain.QueryVo;
import com.itheima.domain.User;

public interface UserMapper {

	public List<User> findAll();
	
	public void saveUser(User user);
	
	public void updateUser(User user);
	
	public void deleteUser(Integer id);
	
	public List<User> findByUsername(String username);
	
	public List<User> findByVo(QueryVo vo);
	
	public Integer findConut();
	
	public User findById(Integer id);
	
	public List<User> findAllMap();
	
}

<?xml version="1.0" encoding="UTF-8" ?> select * from user
<!-- insert表示要做新增操作
	 id要和對應的介面方法名保持一致
	 parameterType引數型別
	 #{}佔位符,就相當於之前的?號
	 #{}如果要解析的引數是物件型別,#{}的解析方式符合ognl表示式規則,內部放置的必須是物件的屬性名。
	    ognl表示式:就是【屬性.屬性.屬性】       
	    User物件裡面有個屬性是 username,要給username佔位,就可以直接使用  #{username}  
	    User物件中有個Address address屬性   ,Address而物件裡面有一個String city屬性 
	           如果引數是User,要給city佔位,可以這麼寫#{address.city}
 -->
<insert id="saveUser" parameterType="user">
	<!-- 
	     order="AFTER" 在儲存操作之後
	               通過SELECT LAST_INSERT_ID()查詢
	     keyColumn="id" 從資料庫中id列取值
	     resultType="int" 封裝成java的integer型別
	     keyProperty="id" 賦值給User物件的id屬性
	 -->
	<selectKey keyProperty="id" keyColumn="id" order="AFTER" resultType="int">
		SELECT LAST_INSERT_ID()
	</selectKey>
	insert into user (username, birthday, sex, address) 
	values (#{username}, #{birthday}, #{sex}, #{address});
</insert>

<update id="updateUser" parameterType="user">
	update user set username=#{username},
					birthday=#{birthday},
					sex=#{sex},
					address=#{address}
				where id = #{id}
</update>

<!-- 
如果是簡單型別或String型別的話,parameterType內部可以直接寫該型別的名稱,大小寫隨意
parameterType如果是簡單型別或String型別的話,#{}佔位符內可以寫任意值 
-->
<delete id="deleteUser" parameterType="iNt">
	delete from user where id = #{傳智部落格}
</delete>

<!-- 模糊查詢 -->
<select id="findByUsername" parameterType="string" resultType="user">
	select * from user where username like '%${value}%'
</select>


<!-- 使用包裝型別做查詢 : 包裝型別也是物件型別,也滿足ognl表示式規則-->
<select id="findByVo" parameterType="com.itheima.domain.QueryVo" resultType="user">
	select * from user where username like '%${user.username}%'
</select>

<!-- 查詢總數量 -->
<select id="findConut" resultType="int">
	select count(1) from user
</select>


<!-- 查詢總數量 -->
<select id="findById" parameterType="int" resultType="user">
	select * from user where id = #{id}
</select>


<!-- 定義一個resultMap來封裝user物件 -->
<resultMap type="user" id="userMap">
	<id property="id" column="_id"/>
	<result property="username" column="_username"/>
	<result property="birthday" column="_birthday"/>
	<result property="sex" column="_sex"/>
	<result property="address" column="_address"/>
</resultMap>
<!-- 返回resultMap -->
<select id="findAllMap" resultMap="userMap">
	select id _id, username _username, birthday _birthday, sex _sex, address _address from user
</select>
```