public interface OrdersMapperQueryInterface {
List queryOrdersJoinUsers();
}
UserMppaerQueryInterface接口定义
public interface UserMppaerQueryInterface();
OrdersMapperQueryInterface.xml定义
UserMppaerQueryInterface.xml定义
第二步:配置包扫描路径(SqlMapConfig.xml中配置)
第三步:接口中定义查询方法
List queryOrdersJoinUsers();
第四步:在orders中添加user属性
第五步:定义sql语句查询
第六步:测试用例开发
@Test
public void testName() throws Exception {
OrdersMapperQueryInterface mapper = sqlSession.getMapper(OrdersMapperQueryInterface.class);
List queryOrdersJoinUsers = mapper.queryOrdersJoinUsers();
for (Orders orders : queryOrdersJoinUsers) {
System.out.println(orders.getUser().getAddress());
System.out.println(orders.getUser().getUsername());
}
}
二:一对多关联查询
第一步:定义pojo类中的对应关系
第二步:定义接口中的方法
第三步:定义sql语句及返回值
Mapper代理形式开发dao
开发mapper接口
开发mapper文件
配置mapper代理
测试方法
public class UserMapperTest {
private ApplicationContext applicationContext;
@Before
public void setUp() throws Exception {
applicationContext = new ClassPathXmlApplicationContext("classpath:spring/applicationContext.xml");
}
@Test
public void testGetUserById() {
UserMapper userMapper = applicationContext.getBean(UserMapper.class);
User user = userMapper.getUserById(1);
System.out.println(user);
}
}
扫描包形式配置mapper
每个mapper代理对象的id就是类名,首字母小写
动态代理
第一步:定义接口
public interface UserDao {
public void eat();
}
第二步:定义实现类
public class UserDaoImpl implements UserDao {
@Override
public void eat() {
System.out.println("我正在吃饭呢");
}
}
第三步:定义代理类
public class UserProxy implements InvocationHandler{
private UserDao userDao;
public UserProxy(UserDao userDao){
this.userDao = userDao;
}
public UserDao getUserDao(){
UserDao dao = (UserDao) Proxy.newProxyInstance(userDao.getClass().getClassLoader(), userDao.getClass().getInterfaces(), this);
return dao;
}
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
if(method.getName().equals("eat")){
System.out.println("我先睡一觉");
return method.invoke(userDao, args);
}
return method.invoke(userDao, args);
}
}
第四步:测试用例
public class UserMain {
public static void main(String[] args) {
UserDao dao = new UserDaoImpl();
UserProxy proxy = new UserProxy(dao);
UserDao userDao = proxy.getUserDao();
userDao.eat();
}
}
/*
*处理例外
*/
--例外简介
--处理例外-传递例外
declare
v_ename emp.ename%TYPE;
begin
SELECT ename INTO v_ename FROM emp
where empno=&no;
dbms_output.put_line('雇员名:'||v_ename);
exceptio
import java.util.ArrayList;
import java.util.List;
public class KickOutBadGuys {
/**
* 题目:13个坏人和13个好人站成一圈,数到7就从圈里面踢出一个来,要求把所有坏人都给踢出来,所有好人都留在圈里。请找出初始时坏人站的位置。
* Maybe you can find out
Redis.conf配置文件及相关项说明
# Redis configuration file example
# Note on units: when memory size is needed, it is possible to specifiy
# it in the usual form of 1k 5GB 4M and so forth:
#
public static String convertInputStreamToString(InputStream is) {
StringBuilder result = new StringBuilder();
if (is != null)
try {
InputStreamReader inputReader = new InputStreamRead
原文:
http://www.sitepoint.com/3-new-javascript-apis-may-want-follow/?utm_source=html5weekly&utm_medium=email
本文中,介绍3个仍然处于草稿阶段,但应该值得关注的Javascript API.
1) Web Alarm API
&