Mybatis连接MySQL或者ORALE 12C 入门实例。
[step1] 建立四个java包及包里面源文件.
com.learn.ch2.utils;
com.learn.ch2.main;
com.learn.ch2.pojo;
com.learn.ch2.mapper;
此外,在Eclipse中添加Mybatis相关jar包;数据库JDBC相关jar包。
======================
[step2] APP入口
src/com/learn/ch2/main/Ch2Main.java
package com.learn.ch2.main;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import java.util.Map;
import org.apache.ibatis.datasource.pooled.PooledDataSource;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.mapping.Environment;
import org.apache.ibatis.session.Configuration;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.apache.ibatis.transaction.TransactionFactory;
import org.apache.ibatis.transaction.jdbc.JdbcTransactionFactory;
import com.learn.ch2.mapper.RoleMapper;
import com.learn.ch2.pojo.Role;
import com.learn.ch2.utils.SqlSessionFactoryUtil;
public class Ch2Main {
public static void main(String[] args) throws IOException{
SqlSession mySqlSession = null;
try{
mySqlSession = SqlSessionFactoryUtil.openSqlSession();
RoleMapper roleMapper = mySqlSession.getMapper(RoleMapper.class);
for(int i = 0; i<10000; i++){
Role role = new Role();
role.setId( (long)i );
role.setRoleName(" testroname " + i);
role.setNote(" testnote " + i);
roleMapper.insertRole(role);
mySqlSession.commit();
System.out.println("insertRole: i = " + i + ", commit");
}
/*
Role role = roleMapper.getRole(1L);
System.out.println("get_Role: id = " + role.getId() + ", name = " + role.getRoleName() + ", note = " + role.getNote());
*/
/*
Map<String, String> map = new java.util.HashMap<String, String>();
map.put("role_name_key", "%");
map.put("note_key", "%");
List<Role> roleList = roleMapper.getRoleAll(map);
for(int i = 0; i < roleList.size(); i++){
Role role = roleList.get(i);
if(role != null){
System.out.println("get_Role: i = " + i + ", id = " + role.getId() + ", name = " + role.getRoleName() + ", note = " + role.getNote());
}
}
*/
/*
Role role = new Role();
role.setId( 20000L );
role.setRoleName( "Update role name" );
role.setNote( "update note" );
roleMapper.updateRole(role);
mySqlSession.commit();
*/
/*
roleMapper.deleteRole( 20000L );
mySqlSession.commit();
System.out.println("deleteRole finish.");
*/
} catch( Exception e){
e.printStackTrace();
if(null != mySqlSession){
mySqlSession.rollback();
}
} finally {
if(null != mySqlSession){
mySqlSession.close();
}
}
}
}
======================
[step3] src/com/learn/ch2/mapper/RoleMapper.java
package com.learn.ch2.mapper;
import java.util.List;
import java.util.Map;
import com.learn.ch2.pojo.Role;
public interface RoleMapper {
/*select*/
public Role getRole(Long id);
public List<Role> getRoleAll(Map<String, String> map);
/*delete*/
public int deleteRole(Long id);
/*insert*/
public int insertRole(Role role);
/*update*/
public int updateRole(Role role);
}
======================
[step4] src/com/learn/ch2/mapper/mybatis配置文件(测试mysql)。
<?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 alias="role" type="com.learn.ch2.pojo.Role"/>
</typeAliases>
<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://192.168.172.128:3000/localmysql" />
<property name="username" value="root" />
<property name="password" value="amine" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/learn/ch2/mapper/roleMapper.xml" />
</mappers>
</configuration>
======================
[step5] src/com/learn/ch2/mapper/mybatis配置文件(测试oracle 12C PDB)。
<?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 alias="role" type="com.learn.ch2.pojo.Role"/>
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="oracle.jdbc.driver.OracleDriver"/>
<property name="url" value="jdbc:oracle:thin:@192.168.56.200:1521/ORCL"/>
<property name="username" value="scott"/>
<property name="password" value="scott"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/learn/ch2/mapper/roleMapper.xml" />
</mappers>
</configuration>
======================
[step6] src/com/learn/ch2/mapper/mapper 文件。
<?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.learn.ch2.mapper.RoleMapper">
<resultMap id="roleMap" type="com.learn.ch2.pojo.Role">
<result property="id" column="id"/>
<result property="roleName" column="role_name"/>
<result property="note" column="note"/>
</resultMap>
<select id="getRole" parameterType="long" resultType="role">
select id, role_name as roleName, note from T_ROLE where id = #{id}
</select>
<select id="getRoleAll" parameterType="map" resultMap="roleMap">
<!--mysql select id, role_name, note from T_ROLE where role_name like concat('%', #{role_name_key} '%') and note like concat('%', #{note_key} '%') -->
select id, role_name, note from T_ROLE where role_name like '%'||#{role_name_key}||'%' and note like '%'||#{note_key}||'%'
</select>
<insert id="insertRole" parameterType="com.learn.ch2.pojo.Role">
insert into T_ROLE(id, role_name, note) values (#{id}, #{roleName}, #{note})
</insert>
<delete id="deleteRole" parameterType="long">
delete from T_ROLE
</delete>
<update id="updateRole" parameterType="com.learn.ch2.pojo.Role">
update T_ROLE set
role_name = #{roleName},
note = #{note}
where id = #{id}
</update>
</mapper>
======================
[step7] src/com/learn/ch2/pojo/Role.java
package com.learn.ch2.pojo;
public class Role {
private Long id;
private String roleName;
private String note;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getRoleName() {
return roleName;
}
public void setRoleName(String roleName) {
this.roleName = roleName;
}
public String getNote() {
return note;
}
public void setNote(String note) {
this.note = note;
}
}
======================
[step8]src/com/learn/ch2/utils/SqlSessionFactoryUtil.java
package com.learn.ch2.utils;
import java.io.IOException;
import java.io.InputStream;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
public class SqlSessionFactoryUtil {
private static SqlSessionFactory mySqlSessionFactory = null;
private static final Class CLASS_LOCK = SqlSessionFactoryUtil.class;
private SqlSessionFactoryUtil() {}
public static SqlSessionFactory initSqlSessionFactory() {
String config = "com/learn/ch2/mapper/mybatis-config-oracle.xml";
//String config = "com/learn/ch2/mapper/mybatis-config-mysql.xml";
InputStream inputstream = null;
try{
inputstream = Resources.getResourceAsStream(config);
}catch(IOException e){
Logger.getLogger(SqlSessionFactoryUtil.class.getName()).log(Level.SEVERE, null, e);
}
synchronized(CLASS_LOCK){
if(mySqlSessionFactory == null){
mySqlSessionFactory = new SqlSessionFactoryBuilder().build(inputstream);
}
}
return mySqlSessionFactory;
}
public static SqlSession openSqlSession() {
if(null == mySqlSessionFactory ) {
initSqlSessionFactory();
}
return mySqlSessionFactory.openSession();
}
}
---完毕---