mybatis CRUD 실현
21565 단어 #ssm 프레임 워 크
1. 단일 데이터 조회
@Test
public void testFindById(){
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
SqlSessionFactory sqlSessionFactory = builder.build(AppTest.class.getClassLoader().getResourceAsStream("SqlMapConfig.xml"));
SqlSession sqlSession = sqlSessionFactory.openSession();
User u = sqlSession.selectOne("user.findById", 2);
System.out.println(u);
}
}
<select id="findById" parameterType="int" resultType="com.shenhao.domain.User">
select * from user where id=#{id}
</select>
2. 간단 한 like 검색
@Test
public void testFindByLike(){
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
SqlSessionFactory sqlSessionFactory = builder.build(AppTest.class.getClassLoader().getResourceAsStream("SqlMapConfig.xml"));
SqlSession sqlSession = sqlSessionFactory.openSession();
List<User> list = sqlSession.selectList("user.findByLike", "% %");
System.out.println(list);
}
<select id="findByLike" parameterType="String" resultType="com.shenhao.domain.User">
select * from user where username like #{username}
</select>
3. $와 \ # 의 차이 점 \ # {}:
\ # {} 은 Prepared Statement 의 자리 표시 자 와 같 습 니까?,들 어 오 는 문자열 데이터 에 작은 따옴표 한 쌍 을 자동 으로 추가 하여 Sql 주입 을 피 할 수 있 습 니 다.
예 를 들 어 select * from user where username = \ # {username}, 들 어 오 는 username 은 작은 장 입 니 다. 그러면 마지막 으로 인쇄 된 것 은 select * from user where username = '작은 장' 입 니 다.
\ # {} 간단 한 형식 값 이나 Pojo 속성 값 을 받 을 수 있 습 니 다.parameterType 이 하나의 간단 한 형식 값 을 전송 하면 \ # {} 괄호 에 임의의 이름 이 있 을 수 있 습 니 다.
${} 에 대하 여:
${} 들 어 오 는 데 이 터 를 Sql 에 직접 표시 합 니 다. 간단 한 연결 일 뿐 입 니 다.예 를 들 어 order by ${id}, 들 어 오 는 값 이 id 라면 Sql 을 order by id 로 해석 합 니 다.
위의 예 에서 ${} 을 사용 하면 select * from user where username = 소장 이 됩 니 다.
$는 간단 한 형식 값 이나 Pojo 속성 값 을 받 을 수 있 습 니 다. parameterType 이 하나의 간단 한 형식 값 을 전송 하면 ${} 괄호 에 'value' 라 는 문자열 만 있 을 수 있 습 니 다.
요약: $방식 은 일반적으로 데이터베이스 대상 에 전 송 됩 니 다. 예 를 들 어 표 이름, orderby 필드 는 일반적으로 \ # 을 사용 할 수 있 으 면 $를 사용 하지 마 십시오.
4. 저장 작업
@Test
public void testSave(){
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
SqlSessionFactory sqlSessionFactory = builder.build(AppTest.class.getClassLoader().getResourceAsStream("SqlMapConfig.xml"));
SqlSession sqlSession = sqlSessionFactory.openSession();
User user = new User();
user.setUsername(" ");
user.setSex("1");
user.setBirthday(new Date());
user.setAddress(" ");
sqlSession.insert("user.save",user);
sqlSession.commit();
sqlSession.close();
}
<insert id="save" parameterType="com.shenhao.domain.User">
insert into user VALUES (null,#{username},#{sex},#{birthday},#{address})
</insert>
5. 성장 id 가 져 오 는 값 저장
<insert id="save" parameterType="com.shenhao.domain.User">
<selectKey resultType="int" keyProperty="id" order="AFTER">
select last_insert_id()
</selectKey>
insert into user VALUES (null,#{username},#{sex},#{birthday},#{address})
</insert>
6. 조작 수정
@Test
public void testUpdate(){
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
SqlSessionFactory sqlSessionFactory = builder.build(AppTest.class.getClassLoader().getResourceAsStream("SqlMapConfig.xml"));
SqlSession sqlSession = sqlSessionFactory.openSession();
User user = new User();
user.setUsername(" ");
user.setId(28);
sqlSession.update("user.updateUsernameById",user);
sqlSession.commit();
sqlSession.close();
}
<update id="updateUsernameById" parameterType="com.shenhao.domain.User">
update user set username=#{username} where id=#{id}
</update>
7. 삭제 작업
@Test
public void testDelete(){
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
SqlSessionFactory sqlSessionFactory = builder.build(AppTest.class.getClassLoader().getResourceAsStream("SqlMapConfig.xml"));
SqlSession sqlSession = sqlSessionFactory.openSession();
sqlSession.delete("user.delById",27);
sqlSession.commit();
sqlSession.close();
}
<delete id="delById" parameterType="int">
delete from user where id=#{id}
</delete>
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Rails Turbolinks를 페이지 단위로 비활성화하는 방법원래 Turobolinks란? Turbolinks는 링크를 생성하는 요소인 a 요소의 클릭을 후크로 하고, 이동한 페이지를 Ajax에서 가져옵니다. 그 후, 취득 페이지의 데이터가 천이 전의 페이지와 동일한 것이 있...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.