mybatis日常小結
阿新 • • 發佈:2018-12-21
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; } }
<?xml version="1.0" encoding="UTF-8" ?> select * from userpackage 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(); }
```<!-- 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>