ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

MyBatis初学

2022-03-07 09:34:12  阅读:134  来源: 互联网

标签:String danweixinxi number 初学 MyBatis import public name


为了更好地完成JavaWeb的搭建,做出更好的web,我们今天学习MyBatis。首先要知道什么是MyBatis。

Mybatis是优秀的持久层框架(把数据持久化)存到数据库里。把程序的数据在持久状态和瞬时状态转化。

它比起JDBC更方便,使用的模板更多,所以搭建速度也更快。

什么是持久层呢?

持久层:,例如dao层,service层,controller层等,是完成持久化工作的代码块,层界限十分明显。

为什么需要Mybatis?

方便,传统的JDBC太复杂了,于是出现了框架,自动化。帮助程序员将数据存入数据库中。sql和代码分离,更容易上手,且使用的人更多。

切记:技术没有高低之分,有高低之分的是程序员的操作。

思路:搭建环境,导入Mybatis,编写代码,测试

过程:1.编写数据库。
2.新建一个meaven项目。
3.删除src目录(当做一个父工程)
4.导入依赖(基础环境完成)
5.创建一个子模块,编写Mybatis核心配置文件,
6.写入核心配置文件
7.编写Mybatis

编写Mybatis过程:
1.先写工具类mybatisutils,工具类被迫需要一个配置文件,就去resource中写个配置文件。

每一个基于Mybatis的应用都是以sqlsessionfactory 的实例为核心的。它可以得到sqlsession,包含了sql命令的所有方法。

静态代码块(static)表示它一开始就加载,就不会报错了。

注:加入sqlsessionfactory,就可以加入session实例了。
首先要使用private static Sqlsessionfactory sqlsessionfactory提升作用域。

package com.utils;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.apache.ibatis.io.Resources;
import java.io.IOException;
import java.io.InputStream;

public class MyBatisUtils {
    private static SqlSessionFactory sqlSessionFactory;
    static {
        try {
            String resource = "Mybatis-config.xml";
            InputStream inputStream = Resources.getResourceAsStream(resource);
//把资源加载进来并且给他创建一个可以使用的对象。(类似connection) sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); } catch (IOException e) { e.printStackTrace(); } } public static SqlSession getSqlSession(){ return sqlSessionFactory.openSession(); } }

 

2.写配置文件

<?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核心配置文件-->
<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/数据库名?useSSL=false&amp;useUnicode=true&amp;characterEncoding=UTF-8&amp;serverTimezone=GMT%2B8"/>
                <property name="username" value="你的用户名"/>
                <property name="password" value="你的密码"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="userDaomapper.xml"></mapper>
    </mappers>
</configuration>

 

3.写实体类pojo

实体类需要private 类型 名字,加上constructor和getter,setter,写在pojo层。

 

package com.Pojo;

public class users {
    private String name;
    private String pwd;
    private String number;
    private String danweixinxi;

    public users(String name, String pwd, String number, String danweixinxi) {
        this.name = name;
        this.pwd = pwd;
        this.number = number;
        this.danweixinxi = danweixinxi;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPwd() {
        return pwd;
    }

    public void setPwd(String pwd) {
        this.pwd = pwd;
    }

    public String getNumber() {
        return number;
    }

    public void setNumber(String number) {
        this.number = number;
    }

    public String getDanweixinxi() {
        return danweixinxi;
    }

    public void setDanweixinxi(String danweixinxi) {
        this.danweixinxi = danweixinxi;
    }

    @Override
    public String toString() {
        return "users{" +
                "name='" + name + '\'' +
                ", pwd='" + pwd + '\'' +
                ", number='" + number + '\'' +
                ", danweixinxi='" + danweixinxi + '\'' +
                '}';
    }
}

 


4.写mapper(dao)和mapper.xml

dao接口写在dao层,选择interface类型。dao等价于mapper。

建立一个配置文件,可以建在任何地方,我们先把他放在resource里。名字是xxxxmapper.xml
这个文件的写法:
头文件加上namespace唯一定位,绑定需要使用sql语句的文件。
mapper中的id的就相当于原本的方法名字。
resultType是返回一个结果,resultMap是返回一个集合

注意点:每一个mapper.xml都需要在mybatis的核心配置文件中注册

package com.Dao;

import com.Pojo.users;

import java.util.List;

public interface userDao {
    List<users> getUserlist();
}
<?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.Dao.userDao">
<select id="getUserlist" resultType="com.Pojo.users">
    select * from jdbc1.users;
</select>
</mapper>

然后我们就可以进入测试,使用如下代码。

可能会遇到资源过滤问题,如果出现资源过滤,我们直接把上面的xml文件移下来。
最后测试用JUnit。在text文件夹里建立和上面一样的包,在里面写xxxDaoText,获取sqlsession对象。然后执行sql。

package com.Dao;

import com.Pojo.users;
import com.utils.MyBatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;

import java.util.List;

public class userDaoTest {
    @Test
    public void test() {
        //获取sqlSesson对象
        SqlSession sqlSession;
            sqlSession = MyBatisUtils.getSqlSession();
            //方式一  建议使用 获取这个类 不需要进行强转,更安全
            userDao mapper = sqlSession.getMapper(userDao.class);
            List<users> UserList = mapper.getUserlist();
            //方式二 直接用类里面具体的方法
            //List<users> UserList = sqlSession.selectList("com.Dao.userDao.getUserlist");
            for (users users : UserList) {
                System.out.println(users);
            }
            sqlSession.close();
        }

    }

测试成功,可以实现此功能。

mapperRegistry是在核心配置文件中注册mappers。
可能遇到的问题:
1.配置文件没有注册
2.绑定接口错误
3.方法名不对。
4.返回类型不对,
5.meaven导出资源问题。

这是我的项目目录,仅供参考。

 

 

最后不要忘记资源关闭!!!

 

标签:String,danweixinxi,number,初学,MyBatis,import,public,name
来源: https://www.cnblogs.com/jiankaitianmen/p/15974528.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有