功能:将一个学生信息写入到DB
导入Jar包
* MyBatis的Jar包(网站下载)mybatis-3.4.2\lib 以及 mybatis-3.4.2
* MySql驱动Jar包(网站下载)mysql-connector-java-5.1.7-bin 各版本不一样,官网有提示。
1.创建DB表
id,name,age,score 表名student
2.定义一个Student类
id,name,age,score 不要定义为int,而要定义为Integer,带参构造器,则要显式地给出无参构造器。
ps:快捷键 ctrl+shift+s 有冲突 ,右击点Sourse 有构造方法以及set()get()。
3.定义Dao接口IStudentDao
public interface IStudentDao {
void insertStudent(Student student);
}
4.定义映射文件
找到mybatis-3.4.2.jar 找到dtd拓展名复制里面mybatis-3-mapper.dtd的地址。 ps:难点,涉及到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> 联网之后才有提示(针对的是有网络版的配置方法) 。 后面程序写完之后,报错修改mapper
<insert id="insertStu" parameterType="com.abc.beans.Student">
insert into student(name,age,score) values(#{name}, #{age}, #{score}) ps:涉及到sql语句,insert into 表名(?,?,?),value(?,?,?) 解决办法: 百度
</insert>
</mapper>
5.定义主配置文件
StudentDaoimpl();
* 约束文件为mybatis-3.4.2.jar 中的 mybatis-3-config.dtd 配置相同道理
<?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" /> 更改JDBC配置遇到问题,又回顾了视频,问老师才明白改的位置。
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql:///test" /> -----------ps:url链接本地数据库地址默认则用"///" url" value="jdbc:mysql://localhost:3306/test" /
<property name="username" value="root" />
<property name="password" value="111" />
</dataSource>
</environment>
</environments>
<!-- 注册映射文件 -->
<mappers>
<mapper resource="com/abc/dao/mapper.xml" />
</mappers>
</configuration>
6. StudentDaoimpl实现 IStudentDao接口
try {
// 加载主配置文件
InputStream is = Resources.getResourceAsStream("Mybatis.xml");
//创建SqlSessionfactory
SqlSessionFactory factory =builder.build(is);
//创建对象session
SqlSession session = factory.openSession();
//插入对象
session.insert("insertStu",student); 一直不出表的结果,原因为没有调用session.commit();
session.commit();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
7.测试类
Student student =new Student("zhangsan",11,11.5);
IStudentDao dao = new StudentDaoimpl();
dao.interStudent(student);