第一个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&useUnicode=true&characterEncoding=UTF-8&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();
}
}
控制台输出:
五、可能遇到的问题:
- 找不到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文件中的多余字符、注释。