入门实例请参考: http://www.mybatis.org/mybatis-3/zh/getting-started.html
1, Maven依赖:
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
其它用到的包:
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.18</version>
</dependency>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.8.21</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.5</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.25</version>
</dependency>
2, 核心配置文件:mybatis-config.xml
<?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>
<settings>
<setting name="cacheEnabled" value="true" />
<setting name="lazyLoadingEnabled" value="true" />
<setting name="multipleResultSetsEnabled" value="true" />
<setting name="useColumnLabel" value="true" />
<setting name="useGeneratedKeys" value="false" />
<setting name="autoMappingBehavior" value="PARTIAL" />
<setting name="autoMappingUnknownColumnBehavior" value="WARNING" />
<setting name="defaultExecutorType" value="SIMPLE" />
<setting name="defaultStatementTimeout" value="25" />
<setting name="defaultFetchSize" value="100" />
<setting name="safeRowBoundsEnabled" value="false" />
<setting name="mapUnderscoreToCamelCase" value="false" />
<setting name="localCacheScope" value="SESSION" />
<setting name="jdbcTypeForNull" value="OTHER" />
<setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString" />
</settings>
<typeAliases>
<typeAlias alias="RdsConfigAlias" type="com.jvwl.rds.monitor.mybatis.RdsConfig" />
</typeAliases>
<environments default="uat">
<environment id="prod">
<transactionManager type="JDBC" /><!--JDBC|MANAGED -->
<dataSource type="JNDI"><!--JNDI|POOLED|UNPOOLED -->
<property name="initial_context" value="org.jboss.naming.remote.client.InitialContextFactory" />
<property name="data_source" value="xxx/jdbc/DWDB" />
</dataSource>
</environment>
<environment id="development">
<transactionManager type="JDBC" /><!--JDBC|MANAGED -->
<dataSource type="UNPOOLED"><!--JNDI|POOLED|UNPOOLED -->
<property name="driver" value="" />
<property name="url" value="" />
<property name="username" value="" />
<property name="password" value="" />
</dataSource>
</environment>
<environment id="uat">
<transactionManager type="JDBC" /><!--JDBC|MANAGED -->
<dataSource type="POOLED"><!--JNDI|POOLED|UNPOOLED -->
<property name="driver" value="" />
<property name="url" value="" />
<property name="username" value="" />
<property name="password" value="" />
<property name="poolMaximumActiveConnections" value="3" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="mybatis/RdsConfigMapper.xml" />
</mappers>
</configuration>
3, mybatis/RdsConfigMapper.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="mybatis.RdsMapper">
<select id="selectRdsConfig" resultType="RdsConfigAlias">
select * from rds_config where sid = #{id}
</select>
<select id="selectRdsConfig2" resultMap="RdsConfig2Map">
select * from rds_config where sid = #{id}
</select>
<resultMap type="com.jvwl.rds.monitor.mybatis.RdsConfig" id="RdsConfig2Map">
<id column="sid" property="sid" />
<result column="para_code" property="paraCode" />
<result column="para_value" property="paraValue" />
</resultMap>
<insert id="insert" parameterType="RdsConfigAlias">
<selectKey resultType="_long" keyProperty="sid" order="AFTER"> select @@IDENTITY as sid </selectKey>
insert into rds_config (para_code,para_value,entry_id,entry_datetime) values (#{paraCode},#{paraValue},1,getdate())
</insert>
</mapper>
4,实体对象RdsConfig:
package com.jvwl.rds.monitor.mybatis;
import lombok.Data;
/**
* Created by jervalj on 2018-09-12
*/
@Data
public class RdsConfig {
private Long sid;
private String para_code;
private String paraCode;
private String paraValue;
}
5. 测试代码MybatisMain4Xml
package com.jvwl.rds.monitor.mybatis;
import java.io.InputStream;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.testng.annotations.Test;
import lombok.extern.slf4j.Slf4j;
/**
* Created by jervalj on 2018-09-12
*/
@Slf4j
public class MybatisMain4Xml {
@Test
public void myTest1() throws Exception {
submitDbTask(new SessionCallback() {
@Override
public void doCallback(SqlSession session) {
RdsConfig item = (RdsConfig) session.selectOne("mybatis.RdsMapper.selectRdsConfig", 70);
log.info(item.toString());
}
});
}
@Test
public void myTest2() throws Exception {
submitDbTask(new SessionCallback() {
@Override
public void doCallback(SqlSession session) {
RdsConfig item = (RdsConfig) session.selectOne("mybatis.RdsMapper.selectRdsConfig2", 70);
log.info(item.toString());
}
});
}
@Test
public void myTest3() throws Exception {
submitDbTask(new SessionCallback() {
@Override
public void doCallback(SqlSession session) {
RdsConfig rdsConfig = new RdsConfig();
rdsConfig.setParaCode("333");
rdsConfig.setParaValue("555");
int count = session.insert("mybatis.RdsMapper.insert", rdsConfig);
session.commit();
log.info("{count:{}}", count);
log.info(rdsConfig.toString());
}
});
}
private void submitDbTask(SessionCallback sessionCallback) throws Exception {
String resource = "mybatis/mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession session = sessionFactory.openSession();
sessionCallback.doCallback(session);
session.close();
}
}