04-增删改查
目錄
- 一、代碼
- 1.接口代碼
- 2. xml 的代碼
- 3.測試類代碼
- 二、parameterType(輸入類型)
- 1.傳遞簡單類型
- 2.傳遞 pojo 對象
- 3.傳遞 pojo 包裝對象
- 三、假如數據庫列明與實體類的名字對不上號
一、代碼
1.接口代碼
package com.MyBatis01.dao;import com.MyBatis01.domain.User;import java.util.List;/*** 用戶持久層接口*/ public interface IUserDao {/*** 查詢所有操作* @return*/List<User> findAll();/*** 保存操作* @param user*/void saveUser(User user);/*** 更新用戶* @param user*/void updateUser(User user);/*** 刪除用戶* @param userId*/void deleteUser(Integer userId);User findById(int userId);/*** 根據名稱,模糊查詢* @param username* @return*/List<User> findByName(String username);/*** 查詢總用戶數目* @return*/int findTotal(); }2. xml 的代碼
<?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"><mapper namespace="com.MyBatis01.dao.IUserDao"><!--配置查詢所有 id不可隨便寫,要寫dao的方法名稱,resultType返回的類型--><select id="findAll" resultType="com.MyBatis01.domain.User">select *from user;</select><!--插入操作--><insert id="saveUser" parameterType="com.MyBatis01.domain.User"><!-- 配置插入操作后,獲取插入數據的 id --><selectKey keyProperty="id" keyColumn="id" resultType="int" order="AFTER">select last_insert_id();</selectKey>insert into user(username,address,sex,birthday) values (#{username},#{address},#{sex},#{birthday});</insert><!--更新用戶--><update id="updateUser" parameterType="com.MyBatis01.domain.User">update user set username=#{username},address=#{address},sex=#{sex},birthday=#{birthday} where id=#{id};</update><!--刪除用戶--><delete id="deleteUser" parameterType="java.lang.Integer">/*當參數只有一個時,可以為任何字母代表*/delete from user where id=#{any};</delete><select id="findById" parameterType="java.lang.Integer" resultType="com.MyBatis01.domain.User">select *from user where id=#{userId};</select><!--根據名稱模糊查詢--><select id="findByName" parameterType="String" resultType="com.MyBatis01.domain.User">select *from user where username like #{name}</select><!--查詢總用戶數目--><select id="findTotal" resultType="java.lang.Integer">select count(id) from user;</select> </mapper>3.測試類代碼
package com.MyBatis01.test;import com.MyBatis01.dao.IUserDao; import com.MyBatis01.domain.User; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import org.junit.After; import org.junit.Before; import org.junit.Test;import java.io.IOException; import java.io.InputStream; import java.util.Date; import java.util.List;public class MyBatisTest {//region 初始化操作private InputStream in=null;private SqlSession sqlSession=null;private IUserDao userDao;@Before //用于在測試方法之前執行public void init(){try{// 1.讀取配置文件in=Resources.getResourceAsStream("SqlMapConfig.xml");SqlSessionFactoryBuilder builder=new SqlSessionFactoryBuilder();SqlSessionFactory factory=builder.build(in);sqlSession=factory.openSession();userDao=sqlSession.getMapper(IUserDao.class);}catch (IOException e){e.printStackTrace();}}@After //用于在測試方法之后執行public void destroy(){try{//提交事務sqlSession.commit();sqlSession.close();in.close();}catch (IOException e){e.printStackTrace();}}//endregion/*** 查看所有*/@Testpublic void testSelect(){List<User> users=userDao.findAll();for (User user:users){System.out.println(user);}System.out.println("查詢所有");}/*** 插入*/@Testpublic void testInsert(){User user=new User();user.setUsername("泰坦之光");user.setAddress("泰坦星");user.setSex('男');user.setBirthday(new Date());// 保存之前與保存之后 id 的不同,看 xml 配置文件System.out.println("保存操作之前"+user);userDao.saveUser(user);System.out.println("保存操作之后"+user);}/*** 修改*/@Testpublic void testUpdate(){User user=new User();user.setId(12);user.setUsername("信守斬龍-醉人");user.setAddress("龍之谷");user.setSex('男');user.setBirthday(new Date());userDao.updateUser(user);}/*** 刪除*/@Testpublic void testDelete(){userDao.deleteUser(111);System.out.println("刪除成功");}/*** 根據 id 查詢用戶*/@Testpublic void testFindById(){User user=userDao.findById(12);System.out.println(user);}/*** 模糊查詢*/@Testpublic void testFindByName(){ // 模糊查詢需要 % 所以要自己添加List<User> users=userDao.findByName("%龍%");for (User user:users){System.out.println(user);}}/*** 查詢總記錄條數*/@Testpublic void testFindTotal(){Integer userTotal=userDao.findTotal();System.out.println("總人口數目為:"+userTotal);} }二、parameterType(輸入類型)
1.傳遞簡單類型
2.傳遞 pojo 對象
MyBatis 使用 ognl 表達式解析對象字段的值,#{}或者${}括號中的值為 pojo 屬性名稱
OGNL表達式:
Object Graphic Navigation Language
它是通過對象的取值方法來獲取數據,在寫法上把 get 給省略了
比如:我們獲取用戶的名稱
? 類中寫法:user.getUsername();
? OGNL表達式寫法:user.username
mybatis 中為什么能直接寫 username,而不用 user. 呢?
? 因為在 parameterType 中已經提供了屬性所屬的類,所以此時不需要寫對象名
3.傳遞 pojo 包裝對象
開發中通過 pojo 傳遞查詢條件,查詢條件是綜合的查詢條件,不僅包括用戶查詢條件還包括其他的查詢條件(比如將用戶購買商品信息也作為查詢條件),這是可以使用包裝對象傳遞輸入參數。
pojo 類中包含 pojo
需求:根據用戶名查詢用戶信息,查詢條件放到 QueryVo 的 user 屬性中
三、假如數據庫列明與實體類的名字對不上號
轉載于:https://www.cnblogs.com/zuiren/p/11406103.html
總結
- 上一篇: 05-连接数据库方法
- 下一篇: 06-typeAliases标签和pac