my batis 일괄 삽입 과 전통 적 인 jdbc 작업 비교
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<typeAliases>
<typeAlias type="com.mybatis.config.User"
alias="User" />
</typeAliases>package com.mybatis.config;
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" /><!-- -->
<dataSource type="POOLED"><!-- -->
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/mybatistest?useUnicode=true&characterEncoding=UTF-8" />
<property name="username" value="root" />
<property name="password" value="123456" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="UserDaoMapper.xml"/>
</mappers>
</configuration>
<?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">
<!-- mybatis -->
<mapper namespace="com.mybatis.config.UserDao">
<cache readOnly="true" />
<insert id="insert" parameterType="User" >
insert into user(username,password,comment) values(#{username},#{password},#{comment})
</insert>
</mapper>
자바 테스트 코드:
package com.mybatis.config;
import java.io.File;
import java.io.FileInputStream;
import java.util.Iterator;
import java.util.List;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.ExecutorType;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.apache.log4j.xml.DOMConfigurator;
/**
* mybatis
* @author CHENLEI
*
*/
public class UserDaoTest {
public static void main(String[]args){
try {
userDaoTest();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void userDaoTest() throws Exception
{
DOMConfigurator.configure("res/log4j.xml");
File file=Resources.getResourceAsFile("mybatisBase.xml");
SqlSessionFactoryBuilder Factorybuilder = new SqlSessionFactoryBuilder();
SqlSessionFactory factory=Factorybuilder.build(new FileInputStream(file));
SqlSession session1 = factory.openSession();//
SqlSession session2 = factory.openSession(ExecutorType.BATCH, false);//
UserDao userDao1 = session1.getMapper(UserDao.class);//
UserDao userDao2 = session2.getMapper(UserDao.class);//
User user = new User();
user.setUsername("test");
user.setPassword("123456");
user.setComment("comment");
try{
long t1=System.currentTimeMillis();
for(int i=0;i<1000;i++){
userDao2.insert(user);
}
System.out.println(System.currentTimeMillis()-t1+"ms");
}finally{
// session1.commit();
// session1.close();
}
}
}
운행 결과: (결 과 는 세 번 의 테스트 결과 에서 나 온 것 으로 외부 요인 으로 인해 다음 과 같다)
1000 회: 632 - 650 ms
다음은 전통 jdbc:
package com.mybatis.config;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class commonjdbcBatch {
/**
* @param args
* @throws SQLException
*/
public static void main(String[] args) throws SQLException {
Connection con=null;
PreparedStatement s=null;
// TODO Auto-generated method stub
try {
Class.forName("com.mysql.jdbc.Driver");
con=DriverManager.getConnection("jdbc:mysql://localhost:3306/mybatistest?useUnicode=true&characterEncoding=UTF-8", "root","123456");
con.setAutoCommit(false);//
s=con.prepareStatement(" insert into user(username,password,comment) values(?,?,?)");
long t1=System.currentTimeMillis();
for(int i=0;i<1000;i++){
s.setString(1,"clinux"+i);
s.setString(2,"123456");
s.setString(3,"comment");
s.addBatch();
}
s.executeBatch();
con.commit();
System.out.println(System.currentTimeMillis()-t1+"ms");
s.clearBatch();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
con.close();
s.close();
}
}
}
테스트 1000 회 결과:
1000 회: 308 - 330 ms
그래서 위의 테스트 를 통 해 알 수 있 듯 이 my batis 의 삽입 속 도 는 전통 적 인 jdbc 보다 못 하 다. 이런 프레임 워 크 로 우 리 는 주로 j2ee 를 하 는 것 이다. 성능 에 있어 서 는 미 치지 못 하지만 안정 적 이기 때문에 이것 도 저울질 해 야 할 문제 이다.전통 적 으로 빠 르 지만 my batis 를 사용 하면 우 리 는 일부 측면 에서 바퀴 를 만 들 지 않 고 개발 시간 을 절약 할 수 있 습 니 다. 물론 my batis 를 사용 하 는 곳 에 대해 우 리 는 실제 프로젝트 에서 저울질 해 야 합 니 다. (어쩌면 우 리 는 my batis 의 Mapper 만 사용 하고 연못 을 연결 하면 우 리 는 다른 것 을 사용 할 수 있 습 니 다. 예 를 들 어 bonecp, c3p 0) 이상 은 연구 학습 만 할 수 있 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.