Przeglądaj źródła

update sqlRuner测试用例,撤回修改:selectObjs就是只获取一个字段的值

yuxiaobin 7 lat temu
rodzic
commit
abf523fe3e

+ 61 - 57
mybatis-plus-core/src/test/java/com/baomidou/mybatisplus/test/h2/H2SqlRunnerTest.java

@@ -36,70 +36,74 @@ import com.baomidou.mybatisplus.test.h2.service.IH2UserService;
 @ContextConfiguration(locations = {"classpath:h2/spring-test-h2.xml"})
 public class H2SqlRunnerTest extends H2Test {
 
-	@Autowired
-	private IH2UserService userService;
+    @Autowired
+    private IH2UserService userService;
 
-	@Autowired
-	H2UserMapper userMapper;
+    @Autowired
+    H2UserMapper userMapper;
 
-	@BeforeClass
-	public static void initDB() throws SQLException, IOException {
-		@SuppressWarnings("resource")
-		ApplicationContext context = new ClassPathXmlApplicationContext("classpath:h2/spring-test-h2.xml");
-		DataSource ds = (DataSource) context.getBean("dataSource");
-		try (Connection conn = ds.getConnection()) {
-			initData(conn);
-		}
-	}
+    @BeforeClass
+    public static void initDB() throws SQLException, IOException {
+        @SuppressWarnings("resource")
+        ApplicationContext context = new ClassPathXmlApplicationContext("classpath:h2/spring-test-h2.xml");
+        DataSource ds = (DataSource) context.getBean("dataSource");
+        try (Connection conn = ds.getConnection()) {
+            initData(conn);
+        }
+    }
 
-	@Test
-	public void testSelect() {
-		List<Map<String, Object>> list = SqlRunner.db().selectList("select * from h2user where test_type={0}", 1);
-		for (Map<String, Object> map : list) {
-			System.out.println(JSONObject.toJSON(map));
-		}
-	}
+    @Test
+    public void testSelect() {
+        List<Map<String, Object>> list = SqlRunner.db().selectList("select * from h2user where test_type={0}", 1);
+        for (Map<String, Object> map : list) {
+            System.out.println(JSONObject.toJSON(map));
+        }
+    }
 
-	@Test
-	public void testInsert() {
-		SqlRunner.db().insert("insert into h2user(name,age,test_type,test_date,version) values ({0},{1},{2},{3},{4})",
-				"Kshen", 19, 1, null, 1);
-		Object obj = SqlRunner.db().selectObj("select name,test_id from h2user where name={0}", "Kshen");
-		Assert.assertNotNull(obj);
-		System.out.println(obj);
-	}
+    @Test
+    public void testInsert() {
+        SqlRunner.db().insert("insert into h2user(name,age,test_type,test_date,version) values ({0},{1},{2},{3},{4})",
+                "Kshen", 19, 1, null, 1);
+        Object obj = SqlRunner.db().selectObj("select name,test_id from h2user where name={0}", "Kshen");
+        Assert.assertNotNull(obj);
+        Assert.assertEquals("only return first column's value", "Kshen", obj);
+        System.out.println(obj);
+    }
 
-	@Test
-	public void testUpdate() {
-		List<Map<String, Object>> list = SqlRunner.db().selectList("select * from h2user where test_type={0}", 1);
-		Map<String, Object> user1 = list.get(0);
-		System.out.println(JSONObject.toJSON(user1));
-		Long testId = (Long) user1.get("TEST_ID");
-		String name = (String) user1.get("NAME");
-		Assert.assertNotNull(testId);
-		Assert.assertNotNull(name);
-		SqlRunner.db().update("update h2user set name={0} where test_id={1}", "Kshen", testId);
-		list = SqlRunner.db().selectList("select * from h2user where test_id={0}", testId);
-		user1 = list.get(0);
-		System.out.println(JSONObject.toJSON(user1));
-		Assert.assertNotEquals("name should be updated", name, user1.get("NAME"));
-	}
+    @Test
+    public void testUpdate() {
+        List<Map<String, Object>> list = SqlRunner.db().selectList("select * from h2user where test_type={0}", 1);
+        Map<String, Object> user1 = list.get(0);
+        System.out.println(JSONObject.toJSON(user1));
+        Long testId = (Long) user1.get("TEST_ID");
+        String name = (String) user1.get("NAME");
+        Assert.assertNotNull(testId);
+        Assert.assertNotNull(name);
+        SqlRunner.db().update("update h2user set name={0} where test_id={1}", "Kshen", testId);
+        list = SqlRunner.db().selectList("select * from h2user where test_id={0}", testId);
+        user1 = list.get(0);
+        System.out.println(JSONObject.toJSON(user1));
+        Assert.assertNotEquals("name should be updated", name, user1.get("NAME"));
+    }
 
-	@Test
-	public void testDelete() {
-		List<Map<String, Object>> list = SqlRunner.db().selectList("select * from h2user where test_type={0}", 1);
-		Map<String, Object> user1 = list.get(0);
-		System.out.println(JSONObject.toJSON(user1));
-		Long testId = (Long) user1.get("TEST_ID");
-		SqlRunner.db().delete("delete from h2user where test_id={0}", testId);
-		list = SqlRunner.db().selectList("select * from h2user where test_id={0}", testId);
-		Assert.assertTrue("this record should be deleted", list == null || list.isEmpty());
-	}
+    @Test
+    public void testDelete() {
+        List<Map<String, Object>> list = SqlRunner.db().selectList("select * from h2user where test_type={0}", 1);
+        Map<String, Object> user1 = list.get(0);
+        System.out.println(JSONObject.toJSON(user1));
+        Long testId = (Long) user1.get("TEST_ID");
+        SqlRunner.db().delete("delete from h2user where test_id={0}", testId);
+        list = SqlRunner.db().selectList("select * from h2user where test_id={0}", testId);
+        Assert.assertTrue("this record should be deleted", list == null || list.isEmpty());
+    }
 
-	@Test
-	public void testSelectObjs() {
-		SqlRunner.db().selectObjs("select name,test_id from h2user");
+    @Test
+    public void testSelectObjs() {
+        List<Object> list = SqlRunner.db().selectObjs("select name,test_id from h2user");
+        Assert.assertTrue("only return first column value", list.get(0) instanceof String);
 
-	}
+        list = SqlRunner.db().selectObjs("select test_id,name from h2user");
+        Assert.assertTrue("only return first column value", list.get(0) instanceof Long);
+    }
 
 }

+ 1 - 1
mybatis-plus-support/src/main/java/com/baomidou/mybatisplus/mapper/AutoSqlInjector.java

@@ -949,7 +949,7 @@ public class AutoSqlInjector implements ISqlInjector {
             return;
         }
         SqlSource sqlSource = languageDriver.createSqlSource(configuration, SqlRunner.SQLScript, Object.class);
-        createSelectMappedStatement(SqlRunner.SELECT_OBJS, sqlSource, Map.class);
+        createSelectMappedStatement(SqlRunner.SELECT_OBJS, sqlSource, Object.class);
     }
 
     /**

+ 1 - 0
mybatis-plus-support/src/main/java/com/baomidou/mybatisplus/mapper/BaseMapper.java

@@ -200,6 +200,7 @@ public interface BaseMapper<T> {
     /**
      * <p>
      * 根据 Wrapper 条件,查询全部记录
+	 *   注意: 只返回第一个字段的值
      * </p>
      *
      * @param wrapper 实体对象封装操作类(可以为 null)

+ 26 - 2
mybatis-plus-support/src/main/java/com/baomidou/mybatisplus/mapper/SqlRunner.java

@@ -101,8 +101,8 @@ public class SqlRunner {
     /**
      * 获取sqlMap参数
      *
-     * @param sql
-     * @param args
+     * @param sql   指定参数的格式: {0}, {1}
+     * @param args  仅支持String
      * @return
      */
     private Map<String, String> sqlMap(String sql, Object... args) {
@@ -116,14 +116,38 @@ public class SqlRunner {
         return SqlHelper.retBool(sqlSession().update(UPDATE, sqlMap(sql, args)));
     }
 
+    /**
+     * 根据sql查询Map结果集
+     *   SqlRunner.db().selectList("select * from tbl_user where name={0}", "Caratacus")
+     *
+     * @param sql    sql语句,可添加参数,格式:{0},{1}
+     * @param args   只接受String格式
+     * @return
+     */
     public List<Map<String, Object>> selectList(String sql, Object... args) {
         return sqlSession().selectList(SELECT_LIST, sqlMap(sql, args));
     }
 
+    /**
+     * 根据sql查询一个字段值的结果集
+     *   注意:该方法只会返回一个字段的值, 如果需要多字段,请参考{@code selectList()}
+     *
+     * @param sql    sql语句,可添加参数,格式:{0},{1}
+     * @param args   只接受String格式
+     * @return
+     */
     public List<Object> selectObjs(String sql, Object... args) {
         return sqlSession().selectList(SELECT_OBJS, sqlMap(sql, args));
     }
 
+    /**
+     * 根据sql查询一个字段值的一条结果
+     *   注意:该方法只会返回一个字段的值, 如果需要多字段,请参考{@code selectOne()}
+     *
+     * @param sql    sql语句,可添加参数,格式:{0},{1}
+     * @param args   只接受String格式
+     * @return
+     */
     public Object selectObj(String sql, Object... args) {
         return SqlHelper.getObject(selectObjs(sql, args));
     }