发表于: 2017-06-08 22:50:10
1 922
今天完成的事情:完成mybatis的jdbc编译
1、添加Mybatis的配置文件conf.xml
在src目录下创建一个conf.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/test" />
<property name="username" value="root" />
<property name="password" value="<wyc>19960210" />
</dataSource>
</environment>
</environments>
</configuration>
2、定义表所对应的实体类,如下图所示:
编译Test.java
package me.wyc.domain;
public class Test{
private long id;
private String name;
private String qq;
private String type;
private String school;
private String link;
private String regeneration_time;
private String declaration;
private String senior;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getQq() {
return name;
}
public void setQq(String qq) {
this.qq = qq;
}
public String getType()
{
return type;
}
public void setType(String type) {
this.type = type;
}
public String getSchool() {
return school;
}
public void setSchool(String school) {
this.school = school;
}
public String getLink() { return link;
}
public void setLink(String link) {
this.link = link;
}
public String getRegeneration_time() {
return regeneration_time;
}
public void setRegeneration_time(String regeneration_time) {
this.regeneration_time = regeneration_time;
}
public String getDeclaration() {
return declaration;
}
public void setDeclaration(String declaration) {
this.declaration = declaration;
}
public String getSenior() {
return senior;
}
public void setSenior(String senior) {
this.senior = senior;
}
@Override
public String toString() {
return "User [id=" + id + ", name=" + name + ", qq=" + qq + "]";
}}
3、定义操作tests表的sql映射文件testMapper.xml
创建一个me.wyc.mapping包,专门用于存放sql映射文件,在包中创建一个userMapper.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,namespace的值习惯上设置成包名+sql映射文件名,这样就能够保证namespace的值是唯一的
例如namespace="me.wyc.mapping.testMapper"就是me.wyc.mapping(包名)+testMapper(testMapper.xml文件去除后缀)
-->
<mapper namespace="me.wyc.mapping.testMapper">
<!-- 在select标签中编写查询的SQL语句, 设置select标签的id属性为getTest,id属性值必须是唯一的,不能够重复
使用parameterType属性指明查询时使用的参数类型,resultType属性指明查询返回的结果集类型
resultType="me.wyc.domain.Test"就表示将查询结果封装成一个Test类的对象返回
Test类就是tests表所对应的实体类
-->
<!--
根据id查询得到一个test对象
-->
<select id="getTest" parameterType="long"
resultType="me.wyc.domain.Test">
select * from users where id=#{id}
</select>
</mapper>
4、在conf.xml文件中注册userMapper.xml文件
<mappers>
<!-- 注册testMapper.xml文件,
testMapper.xml位于me.wyc.mapping这个包下,所以resource写成me/wyc/mapping/testMapper.xml-->
<mapper resource="me/wyc/mapping/userMapper.xml"/>
</mappers>
5、编写测试代码:执行定义的select语句
创建一个Test1类,编写如下的测试代码:
package me.wyc.test;
import java.io.IOException;
import java.io.InputStream;
import me.wyc.domain.Test;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
public class Test1 {
public static void main(String[] args) throws IOException {
//mybatis的配置文件
String resource = "conf.xml";
//使用类加载器加载mybatis的配置文件(它也加载关联的映射文件)
InputStream is = Test1.class.getClassLoader().getResourceAsStream(resource);
//构建sqlSession的工厂
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);
//使用MyBatis提供的Resources类加载mybatis的配置文件(它也加载关联的映射文件)
//Reader reader = Resources.getResourceAsReader(resource);
//构建sqlSession的工厂
//SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
//创建能执行映射文件中sql的sqlSession
SqlSession session = sessionFactory.openSession();
/**
* 映射sql的标识字符串,
* me.wyc.mapping.userMapper是userMapper.xml文件中mapper标签的namespace属性的值,
* getUser是select标签的id属性值,通过select标签的id属性值就可以找到要执行的SQL
*/
String statement = "me.wyc.mapping.testMapper.getTest";//映射sql的标识字符串
//执行查询返回一个唯一user对象的sql
Test test = session.selectOne(statement, 1);
System.out.println(test);
}
整体结构目录如下图所示
明天计划的事情:完成任务一
遇到的问题:运行的时候报错,配置文件conf.xml出了问题,property中不能出现特殊符号我的数据库密码中有<>,修改密码,执行set password for root@localhost = password('123');后出现问题,使用新密码无法登录,这个时候太晚,明天再解决。
收获:对mybatis有了初步的了解
评论