mybatis 创建maven工程,实现select查询 作者:马育民 • 2020-10-27 22:01 • 阅读:10448 # 流程 1. 在mysql中建表 2. 建工程(idea2020+maven) 3. 修改pom.xml(添加依赖:mybatis,mysql驱动) 4. 创建mybatis总配置文件(数据库信息,mapper.xml路径) 6. 创建实体类 7. 创建 mapper 接口 5. 创建 xxxMapper.xml配置文件 8. 创建 Test 类(JUnit) # 最终工程目录 [](https://www.malaoshi.top/upload/pic/mybatis/QQ20210121101310.png) # 创建mybatis工程 使用idea创建工程,如下截图: [](https://www.malaoshi.top/upload/pic/java/QQ20201027220257.png) [](https://www.malaoshi.top/upload/pic/java/QQ20201027220351.png) # [idea maven工程修改配置](https://www.malaoshi.top/show_1EF6W8WyBMNS.html "idea maven工程修改配置") # 修改pom.xml配置 ### 添加属性配置(可选) ``` 1.8 1.8 UTF-8 UTF-8 ``` ### 添加依赖(必须) 修改pom.xml文件,增加下面代码 ``` org.mybatis mybatis 3.5.1 mysql mysql-connector-java 5.1.47 log4j log4j 1.2.17 junit junit 4.12 test ``` 在 idea2020 版本中,必须使用junit测试,所以添加 junit 依赖 然后按下图操作: [](https://www.malaoshi.top/upload/pic/mybatis/QQ20201109110836.png) 成功引入依赖后,会看到引入的jar包,如下图: [](https://www.malaoshi.top/upload/pic/mybatis/QQ20210121102841.png) ### 完整代码 ``` 4.0.0 top.malaoshi std_mybatis2 1.0-SNAPSHOT 1.8 UTF-8 UTF-8 1.8 org.mybatis mybatis 3.5.1 mysql mysql-connector-java 5.1.47 log4j log4j 1.2.17 junit junit 4.12 test ``` # mybatis总配置文件 使用MySQL5.x驱动连接 MySQL5.7(以及之前)数据库 在 `resources`文件夹下创建`mybatis-config.xml`,内容如下: ``` ``` ### 使用mysql8驱动连接MySQL8数据库 使用下面配置: ``` ``` ### 使用mysql5.x驱动连接MySQL8数据库 使用下面配置: ``` ``` # log4j日志配置文件 在 `resources`文件夹下创建 `log4j.properties`,内容如下: ``` # Global logging configuration log4j.rootLogger=DEBUG, stdout # Console output... log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n ``` # 创建实体类User 创建 `top.malaoshi.entity.User`类 ,该类中的属性名,与 `user`表 中的字段名 几乎相同,并且要有 `setter` 和 `getter` 方法 mybatis将 `User`类 与 `user`表 建立映射关系,此时该类称之为: **实体类** 映射关系如下图: [](https://www.malaoshi.top/upload/pic/mybatis/QQ20201109103243.png) ``` package top.malaoshi.entity; public class User { private String id; private String username; private String password; private Integer age; private String sex; private String status; public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public String getStatus() { return status; } public void setStatus(String status) { this.status = status; } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } } ``` # 创建 IUserMapper 接口 创建 `top.malaoshi.mapper.IUserMapper` 接口,通过该接口可以对数据库进行增删改操作 **mybatis特点之一:**不需要写实现代码 ``` package top.malaoshi.mapper; import top.malaoshi.entity.User; import java.util.List; public interface IUserMapper { public List selectAll(); } ``` # mapper.xml文件(关键) 操作数据库的sql语句,配置在 `xxxMapper.xml` 中,一般情况下,一个表 对应 一个`xxxMapper.xml` 在 `resources` 文件夹下创建 `mapper` 文件夹,在 `mapper` 文件夹下创建 `userMapper.xml`,内容如下: ``` select id,username,password from user ``` **解释:** - resultType属性:查询出来的结果,封装到`User`类对象中 ### 注意: - namespace名字必须与dao包路径接口名完全相同 - id名必须与dao中的方法名相同 # mapper接口和mapper.xml关系 [](https://www.malaoshi.top/upload/pic/mybatis/QQ20210126082839.png) # 测试类 ### 注意 在 idea2020 版本中,必须使用junit测试。不能自定义`main`方法,否则会报错 ``` Failed to execute goal org.codehaus.mojo:exec-maven-plugin:3.0.0:exec (default-cli) on project ``` 启动类代码: ``` package top.malaoshi; 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 org.junit.Test; import top.malaoshi.entity.User; import top.malaoshi.mapper.IUserMapper; import java.io.IOException; import java.io.InputStream; import java.util.List; public class Main { @Test public void test() throws IOException { /* 1. 读取全局配置文件. getResourceAsStream 使用的资源路径 */ InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml"); // 2. 使用sqlSession的工厂构造器来读入全局配置,再生成一个sqlSession工厂. SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); // 3. 通过 sqlSession 工厂打开一个 sqlSession SqlSession sqlSession = sqlSessionFactory.openSession(); try { //4 使用SqlSession创建Dao接口的代理对象 IUserMapper mapper = sqlSession.getMapper(IUserMapper.class); List list=mapper.selectAll(); for(User user:list){ String info= String.format("id:%s,用户名:%s,密码:%s",user.getId(),user.getUsername(),user.getPassword() ); System.out.println(info); } }finally{ sqlSession.close(); inputStream.close(); } } } ``` 执行结果: [](https://www.malaoshi.top/upload/0/0/1GW1TdRG4cLm.png) 原文出处:http://malaoshi.top/show_1EF6W8rJpo61.html