1,测试代码(编程式配置)
package com.jvwl.rds.monitor.mybatis;
import javax.sql.DataSource;
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 org.testng.annotations.Test;
import lombok.extern.slf4j.Slf4j;
/**
* Created by jervalj on 2018-09-12
*/
@Slf4j
public class MybatisMain4Code {
@Test
public void myTest1() throws Exception {
submitDbTask(new SessionCallback() {
@Override
public void doCallback(SqlSession session) {
RdsConfigDao mapper = session.getMapper(RdsConfigDao.class);
RdsConfig2 item = mapper.selectRdsConfig(70);
log.info(item.toString());
}
});
}
@Test
public void myTest2() throws Exception {
submitDbTask(new SessionCallback() {
@Override
public void doCallback(SqlSession session) {
RdsConfigDao mapper = session.getMapper(RdsConfigDao.class);
RdsConfig2 item = mapper.selectRdsConfigByCode("ENGINE_STOP");
log.info(item.toString());
}
});
}
@Test
public void myTest3() throws Exception {
submitDbTask(new SessionCallback() {
@Override
public void doCallback(SqlSession session) {
RdsConfigDao mapper = session.getMapper(RdsConfigDao.class);
RdsConfig2 rdsConfig2 = new RdsConfig2();
rdsConfig2.setParaCode("testKey111");
rdsConfig2.setParaValue("test8888");
int count = mapper.saveRdsConfig(rdsConfig2);
session.commit();
log.info("{count:{}}", count);
log.info(rdsConfig2.toString());
}
});
}
private void submitDbTask(SessionCallback sessionCallback) throws Exception {
DataSource dataSource = RdsDataSourceFactory.getUnPooledDataSource();
// DataSource dataSource = RdsDataSourceFactory.getPooledDataSource();
// DataSource dataSource = RdsDataSourceFactory.getJndiDataSource();
TransactionFactory transactionFactory = new JdbcTransactionFactory();
Environment environment = new Environment("development", transactionFactory, dataSource);
Configuration configuration = new Configuration(environment);
// configuration.addMapper(RdsConfigDao.class);
configuration.addMappers("com.jvwl.rds.monitor.mybatis");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration);
SqlSession session = sqlSessionFactory.openSession();
sessionCallback.doCallback(session);
session.close();
}
}
2. 编程式RdsDataSourceFactory:
package com.jvwl.rds.monitor.mybatis;
import java.util.Properties;
import javax.sql.DataSource;
import org.apache.ibatis.datasource.jndi.JndiDataSourceFactory;
import org.apache.ibatis.datasource.pooled.PooledDataSourceFactory;
import org.apache.ibatis.datasource.unpooled.UnpooledDataSourceFactory;
/**
* Created by jervalj on 2018-09-12
*/
public class RdsDataSourceFactory {
public static DataSource getPooledDataSource() {
Properties properties = new Properties();
properties.setProperty("driver", "");
properties.setProperty("url", "");
properties.setProperty("username", "");
properties.setProperty("password", "");
properties.setProperty("poolMaximumActiveConnections", "3");
PooledDataSourceFactory dataSourceFactory = new PooledDataSourceFactory();
dataSourceFactory.setProperties(properties);
return dataSourceFactory.getDataSource();
}
public static DataSource getUnPooledDataSource() {
Properties properties = new Properties();
properties.setProperty("driver", "");
properties.setProperty("url", "");
properties.setProperty("username", "");
properties.setProperty("password", "");
UnpooledDataSourceFactory dataSourceFactory = new UnpooledDataSourceFactory();
dataSourceFactory.setProperties(properties);
return dataSourceFactory.getDataSource();
}
public static DataSource getJndiDataSource() {
Properties properties = new Properties();
properties.setProperty("initial_context", "org.jboss.naming.remote.client.InitialContextFactory");
properties.setProperty("data_source", "xxx/jdbc/DWDB");
JndiDataSourceFactory dataSourceFactory = new JndiDataSourceFactory();
dataSourceFactory.setProperties(properties);
return dataSourceFactory.getDataSource();
}
}
3, 配置Mappler
package com.jvwl.rds.monitor.mybatis;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.ResultMap;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.SelectKey;
/**
* Created by jervalj on 2018-09-12
*/
@Mapper
public interface RdsConfigDao {
@Select("SELECT * FROM rds_config WHERE sid = #{id}")
@Results(id = "RdsConfig2Map",
value = {@Result(column = "para_value", property = "paraValue"),@Result(column = "para_code", property = "paraCode")})
RdsConfig2 selectRdsConfig(int id);
@Select("SELECT * FROM rds_config WHERE para_code = #{paraCode2}")
@ResultMap("RdsConfig2Map")
RdsConfig2 selectRdsConfigByCode(String paraCode);
// RdsConfig2 selectRdsConfigByCode(@Param("paraCode") String paraCode);
@SelectKey(before = false, keyProperty = "sid", resultType = Long.class, statement = {"select @@IDENTITY as sid"})
@Insert("insert into rds_config (para_code,para_value,entry_id,entry_datetime) values (#{paraCode},#{paraValue},1,getdate())")
int saveRdsConfig(RdsConfig2 rdsConfig2);
}
4. 实体对象:
package com.jvwl.rds.monitor.mybatis;
import org.apache.ibatis.type.Alias;
import lombok.Data;
/**
* Created by jervalj on 2018-09-12
*/
@Data
@Alias("RdsConfig2")
public class RdsConfig2 {
private Long sid;
private String paraCode;
private String paraValue;
private String aaaaa = "RdsConfig2";
}