第一个mybatis项目

一、数据库环境搭建

1
2
3
4
5
6
7
8
9
10
11
12
CREATE DATABASE `mybatis`;
use `mybatis`;
create TABLE `saxon`(
`id` INT(10) not null ,
`user` VARCHAR(20) not null,
`pwd` VARCHAR(10) not null DEFAULT "saxon",
PRIMARY KEY(`id`)
)ENGINE=INNODB,CHARSET=utf8;


use `mybatis`;
INSERT INTO `saxon`(`id`,`user`,`pwd`) VALUES(1,'saxon','1234567')

二、建立一个项目

1.配置文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?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.cj.jdbc.Driver"/>
<property name="url"
value="jdbc:mysql:localhost:3306/smbms?useUnicode=true&amp;characterEncoding=utf8&amp;useSSL=true"/>
<property name="username" value="root"/>
<property name="password" value="1234567"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="org/mybatis/example/BlogMapper.xml"/><!-- 目录下的xml文件,中间用/隔开-->
</mappers>
</configuration>

三、编写工具类

UserMapping:

1
2
3
4
5
6
7
8
9
<?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.saxon.Dao.UserDao">
<select id="getUserList" resultType="com.saxon.pojo.User">
select * from mybatis.saxon
</select>
</mapper>

工具类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
package com.saxon.Util;

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 MybatisUnit {
private static SqlSessionFactory sqlSessionFactory;//获得工厂,产生sqlsession;

static {
String resource = "org/mybatis/example/mybatis-config.xml";
InputStream inputStream = null;
try {
inputStream = Resources.getResourceAsStream (resource);
} catch (IOException e) {
e.printStackTrace ();
}
sqlSessionFactory = new SqlSessionFactoryBuilder ().build (inputStream);
}



//获得SQL session对象,就是jdbc中的statement对象,操作数据库
public static SqlSession getSqlSession(){
return sqlSessionFactory.openSession ();
}
}

四、编写一个实体类

pojo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
package com.saxon.pojo;

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

public User () {
}

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

public int getId () {
return id;
}

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

public String getUser () {
return user;
}

public void setUser (String user) {
this.user = user;
}

public String getPwd () {
return pwd;
}

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

五、测试

测试代码;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
package com.saxon.Dao;

import com.saxon.Util.MybatisUnit;
import com.saxon.pojo.User;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;

import java.util.List;

public class UserDaoTest {
@Test
public void test () {
//获得sqlsession对象
SqlSession sqlSession = MybatisUnit.getSqlSession ();
//获得mapper对象,为了得到userdao,使用里面的方法;
UserDao mapper = sqlSession.getMapper (UserDao.class);
List<User> userList = mapper.getUserList ();
for (User user : userList) {
System.out.println (user);
}
//关闭sqlsession
sqlSession.close ();
}
}

==特别要注意的是,不要在配置文件,关键的xml里面写中文注释,会出现 2 字节的 UTF-8 序列的字节 2 无效的错误,,原因在编码,不清楚就不弄了==