3.28日学习记录
来源:互联网 发布:矩阵的迹和特征值 编辑:程序博客网 时间:2024/05/21 16:21
于2016年3.28日在朗沃培训java课程,今天共讲了以下三点内容:1.Mybatis框架一对多关系实例钥匙和锁相互查找 2.地位权限多对多查找 3.缓存
1. 2种缓存 a.实物缓存:随着session开始而开始,随着session结束而结束。又叫一级缓存,默认开启,生命周期短暂b.应用缓存:一级失效后,将用到此缓存,又叫二级缓存,需手动开启。
2.使用缓存要求:低并发,小,不经常修改
3.如何确定1对多的关系:在多的一方设置主表的外键
4.ResultMap:在实体类属性命名!=数据库字段名时,ResultType:在实体类属性命名=数据库字段名时使用。
练习钥匙和锁操作步骤:
1.建立数据库
2.导需要的包,建立properties文件设置与数据库连接信息,建立xml文件设置配置信息
3.建立web项目,书写连接提供类,建立bean设置属性的get、set、toString、有参构造、无参构造方法,建立dao设置需要实现的方法 。建立test包书写test测试类。
代码实现:
//建立实体钥匙Bean
public class LockBean {
private Integer id;
private String lockName;
//站在锁的角度,那么钥匙就应该是多者,这里使用List来表示多者。
private List<KeyBean> keys;
//建立接口
public interface IKeyMapper {
/**
* 为某一个锁批量添加钥匙
* @param keys
* @return
*/
public int batchAddKeys(@Param("keys")List<KeyBean> keys)throws Exception;
/**
* 查询钥匙的同时,将锁也查询出来
* @param id
* @return
*/
public KeyBean queryKeyBeanWithLockBean(int id);
}
//在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.lovo.my.dao.IKeyMapper">
<resultMap id="keyWithLockMap" type="keyBean">
<result property="id" column="id" javaType="java.lang.Integer"></result>
<result property="keyName" column="key_name" javaType="java.lang.String"></result>
<association property="lock" column="fk_lock_id" select="com.lovo.my.dao.ILockMapper.getLockBeanById" javaType="LockBean"/>
</resultMap>
<insert id="batchSaveKeys" parameterType="java.util.List">
insert into t_key(key_name,fk_lock_id) values
<foreach collection="keys" item="key" separator=",">
(#{key.keyName},#{key.lock.id})
</foreach>
</insert>
<select id="findKeyBeanByLockId" resultType="KeyBean">
select id as id,key_name as keyName from t_key where fk_lock_id = #{id}
</select>
<select id="queryKeyBeanWithLockBean" resultMap="keyWithLockMap">
select * from t_key where id = #{id}
</select>
</mapper>
//在test里测试
public class TestKeyMapper {
rivate SqlSession session;
@Test
public void testQueryKeyWithLockBean(){
IKeyMapper km = session.getMapper(IKeyMapper.class);
KeyBean key = km.queryKeyBeanWithLockBean(2);
System.out.println(key);
}
@Ignore
public void testBatchSaveKeys(){
IKeyMapper km = session.getMapper(IKeyMapper.class);
ILockMapper lm = session.getMapper(ILockMapper.class);
//先要查锁的信息
LockBean lock = lm.getLockBeanById(1);
//再去添加钥匙
List<KeyBean> keys = new ArrayList<KeyBean>();
for(int i = 1 ; i <= 5 ; i ++){
KeyBean key = new KeyBean("钥匙"+i,lock);
keys.add(key);
}
try {
int rows = km.batchSaveKeys(keys);
Assert.assertEquals(5, rows);
session.commit();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
session.rollback();
}
}
/**
* 定义测试之前的方法
*/
@Before
public void beforeTest(){
session = DBTools.getSession();
}
/**
* 定义测试之后的方法
*/
@After
public void afterTest(){
session.close();
}
}
//建立锁的实体Bean
private Integer id;
private String keyName;
//封装进入锁对象
private LockBean lock;
//建立接口
public interface ILockMapper {
/**
* 添加锁的信息
* @param lock 锁的信息
* @return 数据库影响的行数
* @throws Exception
*/
public int saveLock(@Param("lock")LockBean lock)throws Exception;
/**
* 根据ID查询锁的对象
* @param id 锁的ID
* @return 锁的对象
*/
public LockBean getLockBeanById(int id);
/**
* 根据ID查询锁,并一起查询出对应的钥匙
* @param id
* @return
*/
public LockBean queryLockBeanWithKeyBean(int id);
}
//在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.lovo.my.dao.ILockMapper">
<resultMap id="lockMap" type="LockBean">
<result property="id" column="id" javaType="java.lang.Integer"></result>
<result property="lockName" column="lock_name" javaType="java.lang.String"></result>
</resultMap>
<resultMap id="lockWithKeyMap" type="LockBean">
<result property="id" column="id" javaType="java.lang.Integer"></result>
<result property="lockName" column="lock_name" javaType="java.lang.String"></result>
<collection property="keys" column="id" select="com.lovo.my.dao.IKeyMapper.findKeyBeanByLockId" javaType="java.util.List"></collection>
</resultMap>
<select id="getLockBeanById" resultMap="lockMap">
select * from t_lock where id = #{id}
</select>
<insert id="saveLock">
insert into t_lock(lock_name)values (#{lock.lockName})
</insert>
<select id="queryLockBeanWithKeyBean" resultMap="lockWithKeyMap">
select * from t_lock where id = #{id}
</select>
</mapper>
//在Test里测试
public class TestLockMapper {
private SqlSession session;
/**
* 定义测试之前的方法
*/
@Before
public void beforeTest() {
session = DBTools.getSession();
}
@Test
public void testQueryLockBeanWithKeyBean() {
ILockMapper lm = session.getMapper(ILockMapper.class);
LockBean lock = lm.queryLockBeanWithKeyBean(1);
System.out.println(lock);
}
/**
* 测试新增方法
*/
@Ignore
public void testSaveLock() {
ILockMapper lm = session.getMapper(ILockMapper.class);
// 创建新增对象
LockBean lock = new LockBean("锁1", null);
try {
int rows = lm.saveLock(lock);
Assert.assertEquals(1, rows);
session.commit();// 事务提交
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
session.rollback();
}
}
/**
* 定义测试之后的方法
*/
@After
public void afterTest() {
session.close();
}
}
时间有限,多对多和缓存没练过,不懂。只有接下来找时间继续练习。
- 3.28日学习记录
- 3.26日学习记录
- 3.27日学习记录
- 3.30日学习记录
- 3.31日学习记录
- 4.2日学习记录
- 4.3日学习记录
- 4.6日学习记录
- 4.7日学习记录
- 4.8日学习记录
- 4.11日学习记录
- 三月十日学习记录
- 9月7日学习记录
- 8月27日学习记录
- 2月27日学习记录
- 学习记录(9月25日)
- 15/8/17 日学习记录1
- 4月1日学习记录
- POJ 1852 Ants
- JAVA基础(五)IO(一)
- 搭建hadoop集群开发环境1
- Elispe 错误
- 理解支持向量机(二)核函数
- 3.28日学习记录
- sscanf()的用法和例子
- 决策树(一)
- 项目一:(2)三角形类雏形
- 职业发展方向
- JMM——线程间通信
- 【NOIP2013提高组day2】【JZOJ 3537】华容道
- 关于JAVA的Annotation(注解的实现过程)
- SQL第一次内部培训-gosun