发表于: 2018-05-19 23:14:49
2 1296
今天完成的事情:
引入junit的Jar包。
<dependency>
<groupId>io.nervous</groupId>
<artifactId>juint</artifactId>
<version>0.1.0</version>
</dependency>
*创建log4j.properties
# Global logging configuration
log4j.rootLogger=DEBUG, stdout
# MyBatis logging configuration...
log4j.logger.org.mybatis.example.BlogMapper=TRACE
# 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.java ,用于接收输出参数,将查询的记录封装到该类中
public class User {
private int id;
private String name;
private String city;
public void setId(int id) {
this.id = id;
}
public void setName(String name) {
this.name = name;
}
public void setCity(String city) {
this.city = city;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
public String getCity() {
return city;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", city='" + city + '\'' +
'}';
}
}
*编写全局配置文件sqlMapConfig.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>
<!--
属性
<properties></properties>
全局参数设置
<settings></settings>
类型别名
<typeAliases></typeAliases>
类型处理器
<typeHandles></typeHandles>
对象工厂
<objectFactory></objectFactory>
插件
<plugins></plugins>
以上属性在后边会详细讲解到,现在我们就只需要关注一下下面的配置即可
如下所配置的就是使用这点东西。
environments(环境信息集合)
environment(单个环境信息)
transactionManager(事物)
dataSource(数据源)
environment
environments
mappers(映射器)
-->
<!-- 配置mybatis的环境信息 -->
<environments default="development">
<environment id="development">
<!-- 配置JDBC事务控制,由mybatis进行管理 -->
<transactionManager type="JDBC"></transactionManager>
<!-- 配置数据源,采用dbcp连接池 -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/test1"/>
<property name="username" value="root"/>
<property name="password" value="mysql"/>
</dataSource>
</environment>
</environments>
<!-- 加载mapper映射文件 -->
<mappers>
<mapper resource="User.xml"/>
</mappers>
</configuration>
*编写映射文件 User.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">
<!-- namespace:命名空间,对sql进行一个分类管理 -->
<!-- 注意:namespace在mapper代理时,具有重要且特殊的作用 -->
<mapper namespace="test">
<!--
使用id进行查询
查询,使用select来表示一个查询的statement,相当于statement.executeQuery
id:表示该statement唯一标识
parameterType:输入参数类型
resultType:输出参数类型,使用的是User类,则会将查询出来的记录封装到该类中
#{id}:使用#{}接收输入的参数,其中的"id"属性名任意,可以为uid,也可以为别的。
-->
<select id="findUserById" parameterType="java.lang.Integer" resultType="User">
SELECT * FROM signXzy WHERE id=#{id};
</select>
<select id="findUserByName" parameterType="java.lang.String" resultType="User">
SELECT *FROM signXzy WHERE name LIKE '%${value}%';
</select>
*测试:
--测试一: 按照id查询对象:
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.Before;
import org.junit.Test;
import java.io.IOException;
import java.io.InputStream;
import static org.junit.Assert.*;
public class TaskStep17_1Test {
SqlSession sqlSession;
@Before
public void before() throws IOException{
//跟hibernate一样,需要获取一大堆东西
// 1、读取配置文件
String resource = "SqlMapConfig.xml";
InputStream inputStream = inputStream = Resources.getResourceAsStream(resource);
// 2、根据配置文件创建SqlSessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
// 3、SqlSessionFactory创建SqlSession
sqlSession = sqlSessionFactory.openSession();
}
@Test
public void test1()
throws IOException
{
// 4、SqlSession执行statement,并返回映射结果
/*
* test.findUserById:在映射配置文件中,mapper的namespace为test,
* 其中有一个select,也就代表查询的statement。
* 1:输入参数为1
* 返回的结果类型为User
*/
User user = sqlSession.selectOne("test.findUserById",2);
User user2=sqlSession.selectOne("test.findUserById",3);
System.out.println(user);
System.out.println(user2);
//5、关闭sqlsession资源
sqlSession.close();
}
以下是输出结果:
明天计划的事情:
完成任务一的步骤17。
遇到的问题:
无。
收获:
学会了用配置文件去管理数据库。
评论