List<SysUser> sysUserList=baseDao.baseQuery(SysUser.class,sql); sysUserList.forEach(System.out::println);怎么输出的是地址
时间: 2024-10-14 18:14:25 浏览: 30
这段代码的作用是在Spring框架下的JDBC操作中,通过`baseDao`的`baseQuery`方法查询`SysUser`类型的对象列表,并使用Java 8的流API遍历这个列表。`System.out::println`是一个方法引用表达式,它将`println`方法绑定到`System.out`上,当`forEach`执行时,会打印出每个`SysUser`对象的内容。
如果输出的是地址,那么很可能是`SysUser`类中的某个属性表示地址,例如`address`字段。当你调用`System.out.println(user.getAddress())`时,会打印出每个用户对象的地址信息。如果你看到的是内存地址而不是实际的地址字符串,那可能是因为默认的打印方式显示的是对象的内存位置,而非它的值。检查`SysUser`类是否有一个名为`toString()`的方法,如果没有或者其实现不包含地址信息,你需要确保对象的地址属性被显式地转换或格式化为可读的字符串形式,比如:
```java
sysUserList.forEach(user -> System.out.println("Address: " + user.getAddress()));
```
这样就能明确看到地址信息了。
相关问题
请解释这段代码 @Override @Transactional public int addUserRole(Map<String, Object> map) { //用户添加角色之前,清空角色用户关联表中所有用户角色 this.baseDao.delete("sys_user_role.delete", map); List<String> list = (List<String>) map.get("role_id"); for(Iterator<String> it = list.iterator();it.hasNext();){ Integer r_id = Integer.parseInt(it.next()); map.put("role_id", r_id); map.put("role_code", r_id); map.put("create_date", new Date()); this.baseDao.insert("sys_user_role.insert", map); } return 1; }
这段代码是一个添加用户角色的方法。首先,它使用了`@Override`和`@Transactional`注解,表示该方法重写了父类方法并且开启了事务处理。
接下来,该方法接收一个`Map<String, Object>`类型的参数`map`,用于传递角色信息。在方法体内,首先通过调用`this.baseDao.delete("sys_user_role.delete", map);`来清空角色用户关联表中所有的用户角色。
然后,它获取`map`中的`role_id`字段,并将其强制转换为`List<String>`类型,并使用迭代器遍历这个列表。在循环过程中,将每个角色的ID设置到`map`中的`role_id`字段,并设置其他必要的字段(如`role_code`和`create_date`),然后调用`this.baseDao.insert("sys_user_role.insert", map);`将这些信息插入到数据库中。
最后,该方法返回整数值1,表示添加用户角色操作成功。
使用junit和easymock编写测试代码:public boolean add(Bill bill) { boolean flag = false; Connection connection = null; try { connection = BaseDao.getConnection();//获得连接 connection.setAutoCommit(false);//开启JDBC事务管理 int updateRows = billDao.add(connection,bill); connection.commit(); if(updateRows > 0){ flag = true; System.out.println("add success!"); }else{ System.out.println("add failed!"); } } catch (Exception e) { e.printStackTrace(); try { System.out.println("rollback=================="); connection.rollback();//失败就回滚 } catch (SQLException e1) { e1.printStackTrace(); } }finally{ //在service层进行connection连接的关闭 BaseDao.closeResource(connection, null, null); } return flag; }
以下是使用junit和easymock编写测试代码的示例:
```
import org.easymock.EasyMock;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import java.sql.Connection;
public class BillServiceTest {
private BillDao billDao;
private BillService billService;
@Before
public void setUp() {
billDao = EasyMock.createMock(BillDao.class);
billService = new BillService(billDao);
}
@Test
public void testAddBill() throws Exception {
Connection connection = EasyMock.createMock(Connection.class);
Bill bill = new Bill();
EasyMock.expect(billDao.add(connection, bill)).andReturn(1);
EasyMock.expectLastCall().once();
EasyMock.expect(connection.getAutoCommit()).andReturn(false);
EasyMock.expectLastCall().once();
connection.commit();
EasyMock.expectLastCall().once();
EasyMock.expect(connection.getAutoCommit()).andReturn(true);
EasyMock.expectLastCall().once();
connection.close();
EasyMock.expectLastCall().once();
EasyMock.replay(billDao, connection);
boolean result = billService.addBill(connection, bill);
Assert.assertTrue(result);
EasyMock.verify(billDao, connection);
}
}
```
在这个例子中,我们使用EasyMock框架来模拟Connection和BillDao的对象,然后设置模拟对象的行为。在测试方法中,我们首先创建Connection和Bill对象,然后使用EasyMock.expect()来设置模拟对象的行为。最后,我们调用EasyMock.replay()来准备模拟对象,然后调用被测试的方法并进行断言。最后,我们调用EasyMock.verify()来验证模拟对象的行为是否符合预期。
阅读全文