码迷,mamicode.com
首页 > 其他好文 > 详细

第一个Mybatis程序

时间:2021-02-18 13:32:04      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:evel   null   system   root   manager   语句   ble   env   创建   

第一个Mybatis程序

一、创建数据库、数据表

技术图片
sql语句如下:

create database mybatis;
use mybatis;
create table user(
    id int primary key auto_increment ,
    name varchar(50) not null,
    pwd varchar(50) not null
);

插入数据:

insert into user values (1,‘daidaimei‘,‘12345‘),(2,‘chenxm‘,‘12345‘),(5,‘dym‘,‘11111‘);

二、新建一个Maven项目

技术图片
技术图片
技术图片
点击完成。
我们可以将mybatis公共的代码(例如pom.xml文件许多重要配置代码是重复的)在父项目中完成,这样下次新建项目的时候只要在父项目的基础上新建模块(Module)就行了,就不用每次写pom.xml文件里的重复内容;

  • 删除src文件夹;
    父项目不写代码,只做一些固定的设置,代码在子项目中完成。

  • 编写父项目mybatis的pom.xml文件:

    导入依赖:

     <dependencies>
    
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>8.0.20</version>
            </dependency>
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis</artifactId>
                <version>3.5.6</version>
            </dependency>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.12</version>
            </dependency>
    
        </dependencies>
    

? *导入资源路径:

<build>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <includes>
                <include>**/*.properties</include>
                <include>**/*.xml</include>
            </includes>
            <filtering>true</filtering>
        </resource>
        <resource>
            <directory>src/main/java</directory>
            <includes>
                <include>**/*.properties</include>
                <include>**/*.xml</include>
            </includes>
            <filtering>true</filtering>
        </resource>
    </resources>
</build>

三、在mybatis中新建子项目

技术图片
技术图片
注意Parent继承父项目mybatis;
点击完成。

  • 在mybatis_01的src>resource文件夹下新建核心配置文件mybatis-config.xml ;

    <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&amp;serverTimezone=GMT"/>
                    <property name="username" value="root"/>
                    <property name="password" value="1234"/>
                </dataSource>
            </environment>
        </environments>
    

    注意password填写自己数据库的密码!

  • 编写util、dao、pojo层代码;
    技术图片
    Util工具类:

    public class MybatisUtil {
    
        private static SqlSessionFactory sqlSessionFactory;
    
        static{
            try {
            //使用mybatis获取sqlSession对象
            String resource = "mybatis-config.xml";
            InputStream inputStream = null;
            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();
        }
    
    }
    

    User实体类:

    public class User {
        private int id;
        private String name;
        private String pwd;
    
        public User(int id,String name,String pwd) {
            this.id = id;
            this.name = name;
            this.pwd = pwd;
    
        }
    
        @Override
        public String toString() {
            return "User{" +
                    "id=" + id +
                    ", name=‘" + name + ‘\‘‘ +
                    ", 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;
        }
    }
    

    UserMapper接口:

    public interface UserMapper {
    
        //查询全部结果
        List<User> GetUserList();
    
    }
    

    UseMapper.xml配置文件(每一个Mapper接口类都需要一个同名的xml配置文件来实现它):

    <mapper namespace="com.cxm.dao.UserMapper">
    
        <select id="GetUserList" resultType="com.cxm.pojo.User" parameterType="int">
            select * from mybatis.user
        </select>
    
    </mapper>
    

    在核心配置文件mybatis-config.xml中添加mapper声明:

     <mappers>
          <mapper resource="com/cxm/dao/UserMapper.xml"/>
      </mappers>
    

每写一个接口配置文件(如UserMapper.xml)都需要在核心配置文件mybatis-config中声明。
即mybatis-config完整代码如下:
技术图片

四、编写测试类

技术图片

public class UserDaoTest {

    @Test
    public void TestSelect(){

        //获得Session对象
        SqlSession sqlSession =MybatisUtil.getSqlSession();

        //getMapper
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        List<User> userList =  mapper.GetUserList();

        //遍历得到结果
        for(User user : userList){
            System.out.println(user);
        }

        //关闭sqlSesssion
        sqlSession.close();

    }
}

控制台输出:
技术图片

五、可能遇到的问题:

  1. 找不到xml配置文件
    技术图片

原因:未在pom.xml中导入资源路径。

解析:若未在pom.xml中导入build资源路径,系统不能识别到我们的xml文件,还有其他形式的配置文件比如properties配置文件;

解决:把java文件夹和resources文件夹下的xml文件、properties文件声明为资源文件。

代码如下:(只需在父项目的xml文件中写一遍即可,在父项目的基础上新建的项目都不用写)

    <build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>true</filtering>
            </resource>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>true</filtering>
            </resource>
        </resources>
    </build>

注:每次修改pom.xml文件后需点击更新maven
技术图片
2. 核心配置文件中乱码问题
技术图片
原因:在mybatis-config.xml文件中写中文注释,字符串解析时出问题;
技术图片
解析:核心配置文件mybatis -config.xml文件和各个接口配置文件UserMapper.xml中都尽量不要有多余的注释、字符,格式尽量标准、统一。有的IDE可能没有乱码问题,有的很严格。

解决:检查、删除xml文件中的多余字符、注释。

第一个Mybatis程序

标签:evel   null   system   root   manager   语句   ble   env   创建   

原文地址:https://www.cnblogs.com/1908834224cxm/p/14406989.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!