MyBatis编程式配置

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";
}

 

转载于:https://my.oschina.net/jerval/blog/2051486

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值