MyBatis 运用

官网配置文件

http://www.mybatis.org/mybatis-3/zh/configuration.html 

package com.spring.jdbc.test;

import com.mysql.jdbc.Driver;

import java.sql.*;

JDBC 连接方式
public class TestMyBatis {

    public static void main(String[] args){
        //链接对象
        Connection connection=null;
        //查询对象
        PreparedStatement preparedStatement=null;
        //结果集对象
        ResultSet resultSet=null;
        //加载驱动
        try {
            Class.forName("com.mysql.jdbc.Driver");
            connection= DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","root");
            String sql="select * from mybatis where id = ?";
            preparedStatement= connection.prepareStatement(sql);
            preparedStatement.setInt(1,1);
            resultSet=preparedStatement.executeQuery();
            while(resultSet.next()){
                System.out.println(" id :"+resultSet.getInt(1)+" username "+resultSet.getString(2)+" password "+resultSet.getString(3));
            }
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        //获取链接
        //获取statement
        //获取输出结果
    }
}

 

 导入mybatis 核心包及依赖包

 Hellworld 项目搭建

package com.test.mybatis.test;

import com.test.mybatis.bean.User;
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.junit.Test;

import java.io.IOException;
import java.io.InputStream;

public class TestMybatis {
    @Test
    public void test1() throws IOException {
        String resource="sqlMapperConfig.xml";
        //获取配置文件
        InputStream in= Resources.getResourceAsStream(resource);
        //获取sqlSessionFactoryBuilder 对象
        SqlSessionFactoryBuilder sqlSessionFactoryBuilder=new SqlSessionFactoryBuilder();
        //创建sqlSessionFactory 对象
        SqlSessionFactory sqlSessionFactory=sqlSessionFactoryBuilder.build(in);
        //创建一个session 对象
        SqlSession sqlSession=sqlSessionFactory.openSession();
        //操作数据库
        User user=sqlSession.selectOne("UserMapper.selectUserById",1);
        System.out.println(user.toString());
    }
}
sqlMapperCpnfig.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>
    <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://localhost:3306/test"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="mapper/UserMapper.xml"/>
    </mappers>
</configuration>
UserMapper.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="UserMapper">
    <select id="selectUserById" parameterType="Integer" resultType="com.test.mybatis.bean.User">
        select * from mybatis where id = #{id}
    </select>
</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="UserMapper">
    <select id="selectUserById" parameterType="Integer" resultType="com.test.mybatis.bean.User">
        select * from mybatis where id = #{id}
    </select>
    <!--#{} 占位符用于 解决 '王' 尽量使用占位符,少用字符串拼接-->
    <!--${}用于字符串拼接-->
    <select id="selectUserByName" parameterType="String" resultType="com.test.mybatis.bean.User">
        select * from mybatis where username like "%" #{value} "%"
    </select>
    <insert id="insertIntoUser" parameterType="com.test.mybatis.bean.User">
        insert into mybatis values(null,#{username},#{password},#{sex})
    </insert>
    <update id="updateUserById" parameterType="com.test.mybatis.bean.User">
        update mybatis set username = #{username} where id = #{id}
    </update>
    <delete id="deleteUserById" parameterType="com.test.mybatis.bean.User">
        delete from mybatis where id = #{id}
    </delete>
</mapper>

使用Mapper 动态代理开发

package com.test.mybatis.mapper;

import com.test.mybatis.bean.User;

public interface UserMapper {
    //mapper 动态代理开发原则
    //1、接口方法名必须要和UserMapper.xml 方法的id 一致
    //2、接口方法的参数必须要和UserMapper.xml的parameterType 一致
    //3、接口方法的返回值要和UserMapper.xml 的resultType 一致
    //4、mapper.xml 的namespace要与接口的全包名一致
    public User selectUserById(Integer id);
}
<?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.test.mybatis.mapper.UserMapper">
    <select id="selectUserById" parameterType="Integer" resultType="com.test.mybatis.bean.User">
        select * from mybatis where id = #{id}
    </select>
    <!--#{} 占位符用于 解决 '王' 尽量使用占位符,少用字符串拼接-->
    <!--${}用于字符串拼接-->
    <select id="selectUserByName" parameterType="String" resultType="com.test.mybatis.bean.User">
        select * from mybatis where username like "%" #{value} "%"
    </select>
    <insert id="insertIntoUser" parameterType="com.test.mybatis.bean.User">
        insert into mybatis values(null,#{username},#{password},#{sex})
    </insert>
    <update id="updateUserById" parameterType="com.test.mybatis.bean.User">
        update mybatis set username = #{username} where id = #{id}
    </update>
    <delete id="deleteUserById" parameterType="com.test.mybatis.bean.User">
        delete from mybatis where id = #{id}
    </delete>
</mapper>
package com.test.mybatis.test;

import com.test.mybatis.bean.User;
import com.test.mybatis.mapper.UserMapper;
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.junit.Test;

import java.io.IOException;
import java.io.InputStream;

public class MapperTest {
    @Test
    public void test1() throws IOException {
        String resource="sqlMapperConfig.xml";
        InputStream in= Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(in);
        SqlSession sqlSession=sqlSessionFactory.openSession();
        UserMapper userMapper=sqlSession.getMapper(UserMapper.class);
        User user=userMapper.selectUserById(2);
        System.out.println(user.toString());
    }
}

配置的顺序需要按照下图进行配置 

properties标签
<?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>
    <!--使用properties 读取配置文件-->
    <properties resource="db.properies"/>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <!--使用链接池,链接数据-->
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driver}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="mapper/UserMapper.xml"/>
    </mappers>
</configuration>

db.properties文件

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/test
jdbc.username=root
jdbc.password=root
<!--定义别名-->
<typeAliases>
    <typeAlias type="com.test.mybatis.bean.User" alias="User"/>
    <package name="com.test.mybatis.bean"/>
</typeAliases>
资源配置
<mappers>
    <!--资源的方式配置-->
    <mapper resource="mapper/UserMapper.xml"/>
    <!--url 方式配置-->
    <mapper url="file:\\\D:\mybatis\src\mapper\UserMapper.xml"/>
    <!--接口类配置 这种方式配置,需要将xml 文件和接口文件放置在一起,且文件名要相同-->
    <mapper resource="com.test.mybatis.mapper.UserMapper"/>
    <!--通过package 方式配置-->
    <package name="com.test.mybatis.mapper"/>
</mappers>

 包装类的写法

package com.test.mybatis.bean;

public class UserVo {
    private User user;

    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }
}
<select id="selectUserByUserVo" parameterType="UserVo" resultType="User">
    select * from mybatis where id = ${user.id}
</select>

resultType :无论返回的是单个对象,还是集合,使用该标签

   <select id="selectUserById" parameterType="Integer" resultType="com.test.mybatis.bean.User">
        select * from mybatis where id = #{id}
    </select>
    <!--#{} 占位符用于 解决 '王' 尽量使用占位符,少用字符串拼接-->
    <!--${}用于字符串拼接-->
    <select id="selectUserByName" parameterType="String" resultType="com.test.mybatis.bean.User">

resultMap:和resultType 一样,是手动映射,当数据库中的字段和类的字段不同的时候就需要使用resultMap 进行手动映射,如果不映射,表中字段和bean 字段不同的时候,不同的那些字段就无法映射到。但是进行多表查询的时候,必须要写

如下映射方式

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值