- mybatis的sql.xml文件中,parameterType和resultType只能有一个,如果参数有多个,必须使用map和list。
- 如果需要在页面导入很多公共标签最好在一个页面中把需要的公共标签导入,然后其他页面导入此页面即可。如果每个页面都导入那么多公共标签会使得页面看起来臃肿而复杂,破坏可读性。
- 在web.xml中,spring用listener监听,struts2用filter监听,web.xml启动的顺序是:context-param(设置根目录参数,负责xml文件的加载)>listener>filter>servlet
- Controller可以不必非得用ModelAndView,也可以用String,如果需要带参数必须要传入HttpServletRequestrequest,然后利用request.setAttribute(“result”,result);这种类似的方式插入参数。
- <mvc:annotation-driven/>用于开启SpringMVC的注解功能。可以简化原来用两个类开启注解功能。
- maven坐标命名,构建本地repo需要向package再install
- controller的两种方法
第一种是类上添加@RequestMapping(value=”save”) ,对应jsp页面写法是save.html
第二种是是在controller类上加上@RequestMapping(value=”indexController”)或者@RequestMapping(”indexController”),类上也加上@RequestMapping(params=”save”)或者@RequestMapping(”save”),注意是params,对应jsp页面写法是indexController.html?save
- dao,service接口不用添加注解,但是dao,service的实现类需要@Repository和@Service,@Transactional
service的实现类如果要调用dao方法添加@Resource,而不必继承dao
- 级联一般用于一对一和一对多.
- 多对一,一对多关系中
在写关联和保存时:被依赖的先写,依赖的后写.一般情况下,一是依赖的,多是被依赖的.
在解除关系时:依赖的一方要解除关系,先要将inverse设置为true.
- HashSet不初始化
privateSet<String> addressSet;
Set<String>set=new HashSet<String>();
set.add(“---”);
Useruser=new User();
user.setAddress(set);
HashSet初始化
privateSet<String> addressSet=new HashSet<String>();
Useruser=new User();
user.getAddress().add(“---”);
- HQL语言不能识别select *,一般省略。
- 设置默认的事务隔离级别:
隔离级别 对应的整数表示
READ UNCOMMITED 1
READCOMMITED 2
REPEATABLEREAD 4
SERIALIZEABLE 8
在更新或删除之后一般要调用refresh方法更新数据,否则同一个类中第二次取数据无法得到更新后的数据
- 基本数据类型不能作为泛型,如果非要用基本数据类型作为泛型,则只能使用其包装类。
- 用注释实现IOC
按名字自动注入byName等价于@Resource/@Autowired@Qualifier(value=” “)
按类型自动注入byType等价于@AutoWired/@Resource(type=?.class)
- 集合关系,最上面,中间都是接口,最下面是实现类.List和Queue有序可重复,Set无序不可重复的.
- 拿到一个项目如何分析
- 两个类有继承关系才能使用多态
- 返回对象为一个对象的时候如果所需的数据类型为int,可以用intValue()方法,将对象转化为相应的数据类型.
- API
Configuration 配置
configure()
configure(String resource)
addResource(String resource) 导入一个指定位置的映射文件(测试时用)
addClass(Class.class) 导入与指定类同一个包中的以类名为前缀,后缀为.hbm.xml的文件
buildSessionFactory() 导入与指定类同一个包中的以类名为前缀,后缀为.hbm.xml文件
Query
Critria
SessionFactory Session工厂
openSession()
getCurrentSession()
close()
Session 很重要的一个对象
操作对象的方法
save(Object)
update(Object)
delete(Object)
查询的方法
createQuery(String)
createCriteria(Class)
管理事物有关的方法
beginTransaction()-->Transaction
getTransaction() -->Transaction获取当前Session中关联的事物对象(例如在try…catch块里不必把Transaction定义为全局变量)
…
Transaction 事物
commit()
rollback()
Query 查询
list()查询一个结果集合
uniqueResult()查询一个唯一的结果,如果没有结果,则返回null,如果有多个结果,就抛异常.
…
Hibernate主配置文件
1.配置的key前面的hibernate.前缀可以有,也可以没有.如hibernate.dialect或dialect都可以.
2.按作用可分为三类:
1)数据库信息
<property …>
方言,JdbcUrl,驱动,用户名,密码
2)导入映射文件
<mapping …>
3)其他配置
<property…>
show_sql显示生成的sql语句
format_sql格式化生成的sql语句
hbm2ddl.auto自动生成表结构
生成表结构的两种方式
- hbm2ddl.auto
2.使用SchemaExport工具类
type属性要么为java定义的类型如java.lang.String要么为小写string
当列表与关键字冲突时,可以通过column属性指定一个其他列名或者使用反引号包围起来(不推荐);指定使用text类型是,最好再指定length,以确定生成的SQL类型是能够存放指定数量的数据.
- sql不区分大小写,查询的是表和表中的字段;hql不区分大小写,但是类名和属性名区分大小写
- 三种实例化bean的方式
1,使用类构造器实例化
<bean id=”orderService”class=”cn.itcast.OrderServiceBean”/>
2,使用静态工厂方法实例化
<bean id=”personService”class=”cn.itcast.service.OrderFactory” factory-method=”createOder”>
//factory-method的名字是OrderFactory中创建类的名字
<constructor-orgvalue=”student”></constructor-org>
//静态工厂有参数传递,则要设置constructor-org属性
</bean>
public class OrderFactory{
publicstatic OrderServiceBean createOrder(){
returnnew OrderServiceBean();
}
}
3,使用实例工厂方法实例化
<bean id=”personServiceFactory”class=” cn.itcast.service.OrderFactory” factory-method=”createOder”/>
public class OrderFactory{
publicOrderServiceBean createOrder(){
returnnew OrderServiceBean();
}
}