官网:mybatis – MyBatis 3 | 简介

先做实例如下:

一:数据库建表(自己有的话可以不用创建)

CREATE  TABLE  USER(

id INT(20)  NOT  NULL  PRIMARY  KEY,

NAME  VARCHAR(30)   DEFAULT  NULL,

pwd VARCHAR(30)    DEFAULT  NULL

)ENGINE=INNODB   DEFAULT  CHARSET=UTF8;

INSERT INTO USER(id,NAME,pwd)VALUES

(1,'张子谦','123456'),

(2,'张子涵','123456'),

(3,'张飞','12345678')

二:导入依赖需要三个依赖:

<dependency>

<groupId>mysql</groupId>

<artifactId>mysql-connector-java</artifactId>

<version>5.1.40</version>

</dependency>
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.5.2</version>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
        <scope>test</scope>
    </dependency>
三:编写核心配置文件mybatis.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/mybatis?useSSL=true&amp;useUnicode=true&amp;characterEncoding=UTF-8"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>

//每一个Mapper.xml文件都需要在mybatis核心配置文件中注册
    <mappers>
        <mapper  resource="dao/UserMapper.xml"/>
    </mappers>
</configuration>

自己的数据库名记得要更改。

四:编写mybatis工具类(获取slsessionFactory对象以及获取配置文件的资源)

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 java.io.IOException;
import java.io.InputStream;

public class Mybatis {
    private  static SqlSessionFactory   sqlSessionFactory;
    static {

try {//使用mybatis获取SQLSessionFactory对象

//获取配置文件的资源
            String resource = "mybatis.xml";

//通过流和Resources这个类加载资源
            InputStream inputStream = Resources.getResourceAsStream(resource);
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

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

//既然有了sqlsessionfactory,顾名思义,我们就可以从中获取sqlsession的实例了,sqlsession完全包含了面向数据库执行SQL,命令所需要的所有方法
    public static SqlSession   getsqlsession(){
        return sqlSessionFactory.openSession();
    }

}

五:编写实体类

package com.zhang.pojo;

public class User {
    private  int  id;
    private String name;
    private String pwd;

public User() {
    }

public User(int id, String name, String pwd) {
        this.id = id;
        this.name = name;
        this.pwd = pwd;
    }

public int getId() {
        return id;
    }

public void setId(int id) {
        this.id = id;
    }

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;
    }

@Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", pwd='" + pwd + '\'' +
                '}';
    }
}

六:dao接口类,(这里写这个类是为了操作数据库的)

package com.zhang.dao;

import com.zhang.pojo.User;

import java.util.List;

public interface UserDao {
     //获取全部用户
   
List<User> getUserlist();
    //查询一个用户
   
User getuserid(int id);
    //插入一个用户
   
int adduser(User user);
    //修改用户
   
int updateuser(User user);
    //删除一个用户
   
int deluser(int id);
}
}

七:接口类的Mapper.xml文件(原本应该是接口的实现类,用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">

这里的命名空间namespace=绑定一个对应的dao/Mapper接口
<mapper namespace="com.zhang.dao.UserDao">

//id相当于上面接口里面的方法名,返回类型要写全限定名

//resultType:SQL语句执行后的返回值,parametertype:参数类型,
  <select id="getUserlist" resultType="com.zhang.pojo.User">
      select * from  mybatis.user
    </select>

<select id="getuserid"   parameterType="int"  resultType="com.zhang.pojo.User">
      select * from  mybatis.user  where id=#{id}
    </select>

<insert id="adduser"  parameterType="com.zhang.pojo.User">
        insert into mybatis.user(id,name,pwd) values(#{id},#{name},#{pwd})
    </insert>

<update id="updateuser" parameterType="com.zhang.pojo.User">
        update mybatis.user  set name=#{name},pwd=#{pwd} where  id=#{id}
    </update>

<delete id="deluser" parameterType="int">
        delete from mybatis.user  where id=#{id};
    </delete>

</mapper>

八:测试

public class UserDaoTest {
    @Test
    public void test(){
        //第一步,获取sqlsession对象
       
SqlSession  sqlSession= MybatilsUtils.getsqlsession();
        //执行SQL
       
UserDao  userDao=sqlSession.getMapper(UserDao.class);
        List<User> userlist = userDao.getUserlist();
        for(User  user :userlist){
            System.out.println(user);
        }
        //关闭sql
       
sqlSession.close();
    }
    @Test
    public void  getuserid(){
        SqlSession  sqlSession=MybatilsUtils.getsqlsession();

UserDao mapper = sqlSession.getMapper(UserDao.class);

User  user=mapper.getuserid(1);
        System.out.println(user);

sqlSession.close();
    }
//插入数据,增删改需要提交时事务
   
@Test
    public void  adduser(){
        SqlSession  sqlSession=MybatilsUtils.getsqlsession();

UserDao mapper = sqlSession.getMapper(UserDao.class);
    int res=mapper.adduser(new User(5,"张云","12457"));
    if(res>0){
        System.out.println("插入成功");
    }
    //提交事务
    
sqlSession.commit();

sqlSession.close();
    }

//修改数据,增删改需要提交时事务
    @Test
    public void  updateuser(){
        SqlSession  sqlSession=MybatilsUtils.getsqlsession();

UserDao mapper = sqlSession.getMapper(UserDao.class);
        int res=mapper.updateuser(new User(5,"张呵呵","12457"));

//提交事务
       
sqlSession.commit();

sqlSession.close();
    }
    //删除用户
   
@Test
    public void deluser(){
        SqlSession sqlSession=MybatilsUtils.getsqlsession();
        UserDao mapper = sqlSession.getMapper(UserDao.class);
        mapper.deluser(5);
        sqlSession.commit();

sqlSession.close();
    }

}

注意:增删改需要提交事务!

如果配置文件无法生效,在pom文件中加入这一段话即可。放在依赖后面。是关于资源过滤的。

<build>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <includes>

<include>**/*.properties</include>
                <include>**/*.xml</include>
            </includes>

</resource>
        <resource>
            <directory>src/main/java</directory>
            <includes>

<include>**/*.properties</include>
                <include>**/*.xml</include>
            </includes>

</resource>
    </resources>
</build>

小结:除了数据库建表之外,一共大概七步。

一:pom文件,导入依赖

二:mybatis-config.xml配置文件,数据库信息

三:工具类:MybatisUtils

四:实体类  user

五:接口UserDao

六:Usermapper.xml

七:测试

可能出现的错误:

标签匹配错误

resource绑定的mapper,需要使用路径,就是“ / ”,

程序配置文件必须符合规范

nullpointerException:没有注册到资源

输出的xml文件中存在中文乱码问题

maven资源没有导出错误,加一段build代码即可,上面有

聊聊mybatis:

一:它是一款优秀的持久层框架,避免了几乎所有的JDBC代码和手动设置参数以及获取及获取结果集。可以使用简单的xml文件或者注解大方式配置和映射原生类型。

二:三种映射的区别:

resource

适用类路径下,直接加载mybatis对应的映射文件,用/进行分割,对于文件名称和文件位置没有强制限制条件,比较灵活,不容易出错

class:

仅适用于类路径下,接口文件与映射文件在同一路径下,且接口名与映射文件名相同,并且映射文件命名为接口全类名的情况,使用.分割,有智能提示,限制条件较多,容易出错

package:

适用于类路径下,接口文件与映射文件在同一路径下,且接口名与映射文件名相同,并且映射文件命名为接口全类名的情况,即简化了class

parameterType:指定输入参数类型,mybatis获取参数值拼接在sql中。

resultType:指定输出结果类型,mybatis将sql查询结果的一行记录数据映射为resultType指定类型的对象。如果有多条数据,则分别进行映射,并把对象放到容器List中

parameterType写在前面  resultType写在后面

三:如果需要连接数据库的配置文件在核心文件中配置即可。

db.properties

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=UTF-8
username=root
password=root

------

<configuration>
    <!--    引入外部配置文件-->
   
<properties resource="db.properties">

</properties>
<!--可以给实体类起别名-->
   
<typeAliases>
        <typeAlias type="com.zhang.pojo.User" alias="User"/>
    </typeAliases>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${driver}"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper  resource="com/zhang/dao/UserMapper.xml"/>
    </mappers>
</configuration>

四:万能Map

假如数据库中的表或者字段过多,我们使用Map

int addUser2(map<String,Object>map);

<insert id="adduser2" parameterType="map">

insert into mybatis.user (id,pwd)values(#{id},#{pwd}

</insert>

测试:

map.put("id",24)

map.put("pwd",3435)

mapper.adduser2(map)

关于模糊查询:

五:解决属性名和和字段不一致的问题:使用结果集映射

<resultMap id="UserMap" type="User">
<!--        前者是数据库中的字段,property是实体类中的属性-->
<result  column="id"  property="id"/>
<result  column="name"  property="name"/>
<result  column="pwd"  property="password"/>
    </resultMap>
    <select id="getuserid"   resultMap="UserMap">
      select * from  mybatis.user  where id=#{id}
    </select>

知识点先到这里,后续的再补充。

mybatis入门实例(xml文件配置)相关推荐

  1. spring +springmvc+mybatis组合springmvc.xml文件配置

    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...

  2. spring +springmvc+mybatis组合web.xml文件配置

    <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http:// ...

  3. mybatis入门之XML配置 idea版(含目录结构与sql语句)

    mybatis入门之XML配置 maven目录结构 1.创建一个maven项目 2. 配置pom文件 3.创建数据库及数据库表 4.java类和接口 4.1 User.java实体类 4.2.User ...

  4. java spring bean配置文件_Spring基于xml文件配置Bean过程详解

    这篇文章主要介绍了spring基于xml文件配置Bean过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 通过全类名来配置: class:be ...

  5. mybatis学习指南--xml文件方式篇

    mybatis学习指南---xml文件篇 以下内容是由我总结mybatis官方文档和实践中的一些经验,总共分为四篇:xml文件配置篇,java方式配置篇,缓存篇,其他配置篇,第一次这样正式的写一篇文章 ...

  6. AndroidManifest.xml文件配置教程及相关指令详解

    AndroidManifest.xml 是每个android程序中必须的文件,它位于整个项目的根目录.我们每天都在使用这个文件,往里面配置程序运行所必要的组件,权限,以及一些相关信息.但是对于这个文件 ...

  7. SpringSecurity使用 配置文件 和wen.xml 文件配置

    目录 1.web.xml 文件配置 2.spring-security  普通 为使用自己创建的认证类 1.web.xml 文件配置 !-- 配置SpringSecurity的拦截器 -->&l ...

  8. eclipse mysql Xml配置_mysql8.0在eclipse中通过xml文件配置数据库连接池

    mysql8.0在eclipse中通过xml文件配置数据库连接池 1.关于Mysql8.0 2.数据库连接池(DBCP) 3.准备工作 4.配置context.xml 5.配置web.xml 6.调用 ...

  9. Logback.xml 文件    配置

    2019独角兽企业重金招聘Python工程师标准>>> Logback.xml 文件    配置 <?xml version="1.0" encoding= ...

  10. 从前后端分离到前后端整合的“退步”(二)pom.xml文件配置

    系列文章目录 从前后端分离到前后端整合的"退步"(一)项目结构 从前后端分离到前后端整合的"退步"(二)pom.xml文件配置 Spring Boot + Vu ...

最新文章

  1. 四位专家谈:数字医学中的因果关系
  2. Java 知识全面总结:并发编程+JVM+设计模式+常用框架+....
  3. Mac下一台电脑管理多个SSH KEY(转)
  4. 成功解决调用密钥报错4001 加密方式错误
  5. Linux-目录结构说明
  6. 直击「神策 2021 数据驱动大会」五大论坛,精彩不断
  7. html GPS坐标实现,JavaScript 实现GPS坐标点距离计算(两个经/纬度间的距离计算)...
  8. Latex 修改公式的的大小
  9. Nancy之基于Nancy.Owin的小Demo
  10. 小鹏汽车第10000辆P7下线
  11. hadoop获取文件系统接口
  12. 软件工程2第一次作业
  13. 我开发共享软件的三次经历(上):打造一款很多人用的软件
  14. iOS 性能优化 -- APP启动时间
  15. python项目源码和注解_python源代码和注释 - 随笔分类 - 秦朗的天空 - 博客园
  16. Convolution Arithmetic
  17. MySQL:数据完整性
  18. dell服务器510系统,dellr510服务器上安系统.docx
  19. java爬取论坛信息_Java爬取校内论坛新帖
  20. Ac质量问题相关答疑

热门文章

  1. 【技术工坊42期】区块链子链技术及墨客链的实现方案
  2. python生成10个随机密码_python生成随机密码
  3. 51单片机-串口通信
  4. 现代科技沃土滋养下的数据黑市和网络犯罪
  5. Android无法打开相册查看视频
  6. 有人说:低代码接力中台燃起燎原之火,低代码的火是如何起来的?
  7. 根文件系统(rootfs)梳理
  8. efk-elastalert-alerta集中日志自动告警
  9. 用户体验的模型:Whitney Quesenbery的5E原则
  10. RPG Maker更改界面分辨率并且制作炫酷界面