MyBatis基础知识

MyBatis获取SqlSession

首先获取SqlSessionFactory:
Reader reader=Resources.getResourceAsReader(“Configuration.xml”);
SqlSessionFactory sf=new SqlSessionFactoryBuilder().build(reader);
获取SqlSession:
sf.openSession();
deptDTO:属性 deptno、dname、loc;
DeptMapper:增删改查方法
定义命名空间 :
定义结果集:

<resultMap id="RM.Dept" type="com.test.dto.DeptDTO">
        <result property="deptno" column="deptno"/>
        <result property="dname" column="dname"/>
        <result property="loc" column="loc"/>
</resultMap>

插入insert:
–插入需要一个参数DTO,参数类型为:com.test.dto.DeptDTO

<insert id="Dept.insert" parameterType="com.test.dto.DeptDTO">
    <![CDATA[
        INSERT INTO dept (
            deptno,
            dname,
            loc
        ) VALUES (
            #{deptno} ,
            #{dname} ,
            #{loc} 
        )
    ]]>
    </insert>
    DAO-INSERT:
    public void insert(Object obj){
        SqlSession session=SqlSessionFactoryUtil.getSqlSession();
        session.insert(namespace+"insert",obj);
        session.commit();
    }

删除delete:
–删除时根据id删除 参数类型为int

<delete id="Dept.delete"  parameterType="int">
    <![CDATA[
        DELETE FROM dept WHERE
        deptno = #{deptno} 
    ]]>
    </delete>
  public void delete(int id){
        SqlSession session=SqlSessionFactoryUtil.getSqlSession();
        session.delete(namespace+"delete", id);
        session.commit();
    }

修改update:

<update id="Dept.update" >
    <![CDATA[
        UPDATE dept SET
            dname=#{dname},
            loc=#{loc}
        WHERE 
            deptno = #{deptno}
    ]]>
    </update>
public void update(Object obj){
        SqlSession session=SqlSessionFactoryUtil.getSqlSession();
        session.update(namespace+"update",obj);
        session.commit();
    }

查询:

<select id="Dept.getById" resultMap="RM.Dept">
        SELECT <include refid="Dept.columns" />
        <![CDATA[
            FROM dept 
            WHERE 
                deptno = #{deptno} 
        ]]>
    </select>
public Object query(int id){
        SqlSession session=SqlSessionFactoryUtil.getSqlSession();
        Object obj=session.selectOne(namespace+"getById", id);
        return obj;
    }
Configuration.xml文件:
根据数据库不同,配置不同的参数。
<configuration>
    <environments default="myexample">
        <environment id="myexample">
            <transactionManager type="JDBC" />
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver" />
                <property name="url" value="jdbc:mysql://localhost:3306/emp" />
                <property name="username" value="root" />
                <property name="password" value="123456" />
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="com/test/mapper/DeptMapper.xml"/>
    </mappers>
</configuration>

TIPS:

  1. 可以定义一个BaseDAO,然后需要dao时继承该dao就可以了。
  2. 定义SqlSessionFactoryUtil类,在类中获取sqlsession,直接调用该类即可。
SqlSessionFactoryUtil:
public class SqlSessionFactoryUtil {

//  定义一个私有的构造方法  单例模式
    private SqlSessionFactoryUtil(){}
    private static SqlSessionFactory sf;
//  静态块 初始化Configuration.xml
    static
    {
        try {
            Reader reader=Resources.getResourceAsReader("Configuration.xml");
            sf=new SqlSessionFactoryBuilder().build(reader);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
//  如果静态语句块初始化失败,尝试再初始化一次
    public static SqlSessionFactory getSqlSessionFactory(){
        if(sf==null){
            sf=initSqlSessionFactory();
        }
        return sf;
    }
    public static SqlSessionFactory initSqlSessionFactory(){
        try {
            Reader reader=Resources.getResourceAsReader("Configuration.xml");
            sf=new SqlSessionFactoryBuilder().build(reader);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return sf;
    }
    public static SqlSession getSqlSession(){
        return sf.openSession();
    }
}

我的心愿是:
好好学习
天天向上
世界和平

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值