(真实文件里别写中文的注释,可能会报错)
1.新建一个普通的maven项目
2.删除src目录做父工程
3.导入maven依赖
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.3</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
4.main的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"/>
<property name="url" value="jdbc:mysql://127.0.0.1:3306/test?characterEncoding=UTF-8"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
</configuration>
5.编写mybatis工具类:
public class MyBatis {
private static SqlSessionFactory sqlSessionFactory;
static {
try {
//第一步 获取SqlSessionFactory
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
public static SqlSession getSqlSession(){
SqlSession sqlSession=sqlSessionFactory.openSession();
return sqlSession;
}
}
6.编写代码:
实体类User.java
Dao接口 UserDao
public interface UserDao {
List<User> getUserList();
}
接口实现类
建一个UserMapper.xml(名字无所谓,位置最好和mybatis-config.xml一起):
<?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="UserDao">
<!--id是接口列表名,resultType是返回结果集合,引用全类名的实体类-->
<select id="getUserList" resultType="com.bean.User">
select * from cart.user
</select>
</mapper>
经典错误:绑定异常
Type interface com.UserDao is not known to the MapperRegistry.
在resources下mybatis-config.xml添加
resource路径用/隔开,其他的引用用.
<mappers>
<!--推荐使用-->
<mapper resource="com/dao/UserMapper.xml"/>
<!--下面的两种方式有两个注意事项:
接口和他的Mapper配置文件必须同名
接口和他的Mapper配置文件必须在同一个包下
-->
<!--通过类这个方式,UserMapper是类名-->
<!-- <mapper class="com.dao.UserMapper"/>-->
<!-- <package name="com.dao"/>-->
</mappers>
mybatis.xml里配置
开启驼峰命名自动映射,即从经典数据库列名 A_COLUMN 映射到经典 Java 属性名 aColumn。
<settings>
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
另外:在所有pom.xml里添加,保证各级子目录下的资源文件被打包。
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xm1</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</build>