其他分享
首页 > 其他分享> > MyBatis初学

MyBatis初学

作者:互联网

为了更好地完成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