mybatis的简单使用

1.为什么使用mybatis?

Mybatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装使开发者只需要关注SQL本身。

一,想要使用mybatis,先要添加mybatis 、 mysql-connector-java 引用:

<!--mybatis坐标-->
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.4.5</version>
</dependency>
<!--mysql驱动坐标-->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.28</version>
    <scope>runtime</scope>
</dependency>

二,编写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>
        <!--配置控制台输出mybatis执行的sql语句-->
        <setting name="logImpl" value="STDOUT_LOGGING"/>

    </settings>

    <!--MyBatis连接数据的配置-->
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/> <!--采用jdbc的方式连接数据库-->
            <dataSource type="POOLED"> <!--mybatis启用数据库连接池-->
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/> <!--数据库连接驱动-->
                <property name="url"
                          value="jdbc:mysql://localhost:3306/——数据库名称——?useUnicode=true&amp;characterEncoding=utf-8&amp;serverTimezone=GMT%2B8"/> <!--数据的url地址-->
                <property name="username" value=""/>  <!--数据库的用户名-->
                <property name="password" value=""/>  <!--数据库密码-->
            </dataSource>
        </environment>
    </environments>

    <!--加载Mabatis的映射文件-->
    <mappers>
        <mapper resource="mapper/UserMapper.xml"/><!--xml的路径要与类的路径一致-->
    </mappers>

</configuration>

三,编写mapper接口:

public interface UserMapper {
    //接口方法,不需要我们实现
     User getUserById(User user);
}

四,编写Mabatis的映射文件:

<?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="navMapper":Mapper文件名称空间
-->
<mapper namespace="com.example.mybatis.mapper.UserMapper">
    <select id="getUserById" parameterType="int" resultType="com.example.mybatis.model.Usermodel">
       select * from user where id =  #{id}
    </select>
</mapper>

注意: namespace的路径是mapper的全路径,id对应的是UserMapper接口下的方法名称,

parameterType:接口中方法参数的类型, 类型的完全限定名或别名,

 resultType是sql映射文件中定义返回值类型,返回值有基本类型,对象类型,List类型,Map类型等。

五,开始使用(单列模式,只有一个MybatisUtil实列):

public class MybatisUtil {
    public static SqlSession sqlSession=null;
    public static SqlSessionFactory sqlSessionFactory=null;

    protected static InputStream resourceAsStream;//加载mybatais主配制文件
    private static MybatisUtil mybatisUtil;
    private static final ThreadLocal<SqlSession> sessionThreadLocal=new InheritableThreadLocal<>();//本地线程
    private MybatisUtil(){};
    static {
         mybatisUtil=new MybatisUtil();

         try {
             / /加载mybatais主配制文件
             resourceAsStream  = Resources.getResourceAsStream("mybatis-config.xml");                              //创建MyBatais工厂对象
             sqlSessionFactory = newSqlSessionFactoryBuilder().build(resourceAsStream);
//获得SqlSession的对象时,openSession(true)代表自动开启提交事务服务了
             sqlSession=sqlSessionFactory.openSession(true);

         } catch (IOException e) {
              e.printStackTrace();
         }
    }

    public static MybatisUtil getMybatisUtil() {
        return mybatisUtil;
    }

    public  SqlSession getSqlSession() {
        SqlSession sqlSession=sessionThreadLocal.get();//从本地线程获取
        if (sqlSession==null){
            sqlSession=sqlSessionFactory.openSession(true);
            sessionThreadLocal.set(sqlSession);
        }
        return sessionThreadLocal.get();
    }
}
六,在业务逻辑层使用:
UserMapper userMapper = MybatisUtil.getMybatisUtil().getSqlSession().getMapper(UserMapper.class);

接下来就可以使用userMappe里的方法r实现对数据库的操作了!

如:User user=new User();

       user.setId(1);

       userMapper.getUserById(user);//可以获取id为1的user了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值