자바 Mybatis 주해 개발
2. 주 프로필 만 들 기 설정 가 져 오기
3. 외부 프로필 만 들 기
driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/test
username=root
password=123
4. 테스트 클래스 절차 준 it 채용 유닛 테스트
before 자원 불 러 오기
1. 입력 흐름 주 설정 가 져 오기 2. 주 프로필 로 구축 공장. 3. 공장 으로 sqlSession 대상 구축 4. 사용 sqlSession 프 록 시 대상 가 져 오기
After 실무, 일, 총무 자원 방출 1.SqlSession.commit() 2. SqlSession.close() 3. in.close()
@Before
public void init() throws Exception {
in = Resources.getResourceAsStream("SqlMapConfig.xml");
factory = new SqlSessionFactoryBuilder().build(in);
sqlSession = factory.openSession(); 可以设置为true 自动提交
userDao = sqlSession.getMapper(UserDao.class);
}
@After
public void destroy() throws Exception {
sqlSession.commit();
sqlSession.close();
in.close();
}
2. 사용 대리 대상 강화 방법 을 집행 하 다
UserDao sql 문장 쓰기 기본 검색
@Select("select * from user")
List findAll();
@Select("insert into user(username,birthday,sex,address)values(#{username},#{birthday},#{sex},#{address})")
void save(User user);
@Update("update user set username=#{username},birthday=#{birthday},sex=#{sex},address=#{address} where id=#{id}")
void updateUser(User user);
@Delete("delete from user where id=#{id}")
void deleteUser(int id);
@Select("select * from user where id=#{id}")
User findById(int id);
// @Select("select * from user where username like #{username}")
@Select("select * from user where username like '%${value}%' ") //value 是固定的
List findByName( String username);
@Select("select count(id) from user")
int findCount();
그 중 모호 조회 @ Select ("select * from username like\# {username}") 테스트 클래스 user. setUsername ("% wyc%") 도 써 야 합 니 다.
@Select("select * from user where username like '%${value}%' ") value 는 고정 적 입 니 다. %% 안 써 도 돼 요.
다 중 테이블 조작
주해 해결 속성 은 데이터베이스 와 대응 하지 않 습 니 다.
실체 클래스 중 예. Integer userId; String userName; Date userBirthday; String userSex; String userAddress;
데이터베이스 id username birthday sex address 필드 시간 이름 이 실체 클래스 와 일치 하지 않 습 니 다. 패키지 할 때 username 만 봉인 할 수 있 습 니 다.
@Select("select * from user")
@Results(id = "userMap",value = {
@Result(id=true,column = "id",property = "userId"),
@Result(column = "username",property = "userName"),
@Result(column = "sex",property = "userSex"),
@Result(column = "address",property = "userAddress"),
@Result(column = "birthday",property = "userBirthday")
})
List findAll();
id=true 나타내다 이 속성 은 데이터베이스 에 있 습 니 다. 메 인 키 그 속 id = "userMap" 마땅 하 다 그룹의 유일한 표지 입 니 다. 다른 검색 어 에서 도 이 이름 을 사용 할 수 있 습 니 다.
@Select("select * from user where id=#{id}")
@ResultMap("userMap") 标准写法 value={"userMap"}
User findById(int id);
일대일 조회
public class Account implements Serializable {
private Integer id ;
private Integer uid ;
private Integer money;
定义账户与用户一对一的映射关系
private User user;}
查询所有账户,并且包括用户的信息
@Select("select * from account a left outer join user u on u.id=a.uid")
@Results(id = "accountMap",value = {
@Result(id = true,column = "id",property = "id"),
@Result(column = "uid",property = "uid"),
@Result(column = "money",property = "money"),
@Result(column = "uid",property = "user",one = @One(select="com.wyc.Dao.UserDao.findById",
fetchType= FetchType.EAGER)),
})
List findAll();
@Result( column = "uid",property = "user", one = @One(select="com.wyc.Dao.UserDao.findById",
fetchType= FetchType.EAGER)), select 지정 UserDao 사용자 검색 방법 fetch Type 지정 게 으 름 로드
根据id 查询用户
@Select("select * from user where id=#{id}")
@ResultMap("userMap")
User findById(int id);
다 중 검색
public class User implements Serializable {
private Integer userId;
private String userName;
private Date userBirthday;
private String userSex;
private String userAddress;
private List accounts; 一对多 关系映射
@Select("select * from user") 查询所有用户,并且包含所有该用户的账户信息
@Results(id = "userMap",value = {
@Result(id=true,column = "id",property = "userId"),
@Result(column = "username",property = "userName"),
@Result(column = "sex",property = "userSex"),
@Result(column = "address",property = "userAddress"),
@Result(column = "birthday",property = "userBirthday"),
@Result(column = "id",property = "accounts",many = @Many(
select = "com.wyc.Dao.AccountDao.findById",
fetchType = FetchType.EAGER))
})
List findAll();
select 지정 계 정 인터페이스 이루어지다 쓰다 사용자 id 모든 계 정의 방법
根据用户id 查询账户
@Select("select * from account where uid = #{uid}")
List findById(int id);
총결산 통상 적 인 상황 한 쌍 의 다 중 사용 지연 로드 일대일 사용 즉시 불 러 오기
주석 2 단계 캐 시
1 레벨 캐 시 기본 오픈 캐 시 기본 설정 ,더 필요 하 다 USerdao 인터페이스 에서 주석 을 달다
@CacheNamespace(blocking = true)
public interface UserDao {}
sqlSession = factory.openSession(); 닫다 1 레벨 캐 시 를 열 어 사라 짐 단 한 번 만 조회 할 수 있 습 니 다. 2 급 캐 시 를 사 용 했 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.