MyBatis快速入门及一些错误Day01
1.MyBatis介绍
MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀半自动持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装,转而使用简单的XML或注解用于配置原始映射,将接口和Java的POJO(普通Java对象)映射为数据库中的记录。
半自动化:需要手写SQL语句。
JDBC–>dbutils–>MyBatis–>Hibernate(过于自动化)
2.MyBatis入门
2.1 导包
【mybatis】
mybatis-3.1.1.jar
【MYSQL 驱动包】
mysql-connector-java-5.1.7-bin.jar
2.2 配置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://localhost:3306/XXX" />
<property name="username" value="root" />
<property name="password" value="root" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="mapper/XXXMapper.xml"></mapper>
(可以配置多个mapper)
</mappers>
</configuration>
2.3 书写Dao层接口
public interface StudentDao {
/**
* 查询所有学生
* @return
*/
List<Student> queryAllStudent();
/**
* 增加一个学生
* @param student
* @return
*/
int insertStudent(Student student);
/**
* 删除一个学生
* @param sid
* @return
*/
int deleteStudent(Integer sid);
/**
* 修改一个学生(测试{param1}形式接收参数)
* @param name
* @param sex
* @return
*/
int updateStudent(String name,String sex,Integer sid);
}
2.4 配置对应的Mapper.xml映射文件
建议创建一个Mapper文件夹,用于存放各种Mapper映射文件
<?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.xxx.dao.StudentDao(接口全类名)">
<select id="queryAllStudent" resultType(返回类型)="com.xxx.entity.Student">
select * from student
</select>
<insert id="insertStudent" parameterType(提供参数类型)="com.xxx.entity.Student">
insert into student(sid,sname,ssex,classid) values(#{sid},#{sName},#{sSex},#{classId})
</insert>
<update id="updateStudent" >
update student set sname=#{param1},ssex=#{param2} where sid=#{param3}
</update>
<delete id="deleteStudent">
delete from student where sid=#{sid}
</delete>
</mapper>
3.使用中碰到的BUG
①
解决方法:mybatis-config.xml中数据库连接url后添加时区
②
解决方法:在mybatis-config.xml中配置mapper
或者mapper映射文件中的命名空间不是dao层接口的全类名
③
解决方法:注意mapper映射文件中SQL语句对应的字段名
④
如果使用的Maven工程可能会报这个错误,是IDEA的兼容问题。
⑤
解决办法:测试不要用main方法测试,使用junit测试