MyBatis笔记
第一个Mybatis程序
- 创建maven项目
- 删除src目录
- 在父工程pom.xml中导入依赖
<!--导入依赖-->
<dependencies>
<!--mysql-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<!--mybatis-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.2</version>
</dependency>
<!-- junit-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
-
在父项目下新建module
-
访问https://mybatis.org/mybatis-3/zh/index.html官网(参考资料 )
-
resources下新建mybatis-config.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"/> <!-- mysql8.0版本需要设置时区--> <property name="url" value="jdbc:mysql://localhost:3306/web?serverTimezone=UTC&useSSL=true&useUnicode=true&characterEncoding=utf8"/> <property name="username" value="root"/> <property name="password" value="123456"/> </dataSource> </environment> </environments> <!-- 每一个接口实现xml都需要配置一个mapper--> <mappers> <mapper resource="com/smj/dao/userMapper.xml"/> </mappers> </configuration>
-
编写mybatis工具类
//获取Sqlsession public class MybatisUtils { private static SqlSessionFactory sqlSessionFactory; static { try { String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); } catch (IOException e) { e.printStackTrace(); } } //获取SqlSession连接 public static SqlSession getSqlSession(){ return sqlSessionFactory.openSession(); } }
8、创建实体类
public class User { private int id; //id private String name; //姓名 private String pwd; //密码 //构造,有参,无参 //set/get //toString() }
9、编写Mapper接口类
public interface UserDao { List<User> getUserList(); }
10、编写Mapper.xml配置文件
- namespace 十分重要,不能写错!
<?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.smj.dao.UserDao"> <!-- id中是UseDao接口中的抽象方法名--> <select id="getUserList" resultType="com.smj.pojo.User"> select * from users </select> </mapper>
11、编写测试类
- Junit 包测试
public class UserDaoTest { @Test public void test(){ //第一步,获取sqlsession SqlSession sqlSession =MybatisUtils.getSqlSession(); //getMapper UserDao userDao=sqlSession.getMapper(UserDao.class); List<User> userList= userDao.getUserList(); for (User user : userList) { System.out.println(user); } //关闭Sqlsession sqlSession.close(); } }
12、运行测试,成功的查询出来的我们的数据,ok!
13 .可能出现的问题
maven约定大于配置,资源导出失败,解决:在pom.xml中build下添加(父子工程可以都添加)
<!-- 在build中配置resources,来防止我们资源导出失败--> <build> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <filtering>false</filtering> </resource> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <filtering>false</filtering> </resource> </resources> </build>
14.xml中的中文注释导致失败,
方式一:去掉中文注释在尝试
方拾二:没有尝试的方法
有两种 都是 修改<?xml version="1.0" encoding="**UTF-8**" ?>
改UTF-8为UTF8
改UTF-8为GBK
可自行尝试