写了好多,也没来得及整理,能贴几个是几个吧。
这个例子里穿插了log4j的使用,以及db.properties文件的使用
项目工程
实体类User:
package com.ssm.pojo;
import java.io.Serializable;
import java.util.Date;
public class User implements Serializable {
private Integer id;
private String username;
private String password;
private String realname;
private Integer age;
private Date birthday;
private Date regTime;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getRealname() {
return realname;
}
public void setRealname(String realname) {
this.realname = realname;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public Date getRegTime() {
return regTime;
}
public void setRegTime(Date regTime) {
this.regTime = regTime;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", password='" + password + '\'' +
", realname='" + realname + '\'' +
", age=" + age +
", birthday=" + birthday +
", regTime=" + regTime +
'}';
}
}
测试TestMyBatis
package com.ssm.test;
import com.ssm.pojo.User;
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.Test;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import java.util.Map;
public class TestMyBatis {
//封装成Map集合
@Test
public void testMap() throws IOException {
InputStream is = Resources.getResourceAsStream("mybatis.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
SqlSession sqlSession = sqlSessionFactory.openSession();
Map<Integer,User> map = sqlSession.selectMap("selAll","id");
System.out.println(map);
System.out.println("-------------------");
for(Map.Entry<Integer,User> ss : map.entrySet()){
System.out.println(ss);
}
sqlSession.close();
}
//查询记录总数
@Test
public void selCount() throws IOException {
InputStream is = Resources.getResourceAsStream("mybatis.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
SqlSession sqlSession = sqlSessionFactory.openSession();
int count = sqlSession.selectOne("count");
System.out.println(count);
sqlSession.close();
}
//根据id查询一条记录
@Test
public void selById() throws IOException {
InputStream is = Resources.getResourceAsStream("mybatis.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
SqlSession sqlSession = sqlSessionFactory.openSession();
User user = sqlSession.selectOne("user.selById");
System.out.println(user);
sqlSession.close();
}
//查询所有
@Test
public void testSelAll() throws IOException {
//Resourse ---资源加载工具,默认去classpath架子啊资源
InputStream is = Resources.getResourceAsStream("mybatis.xml");
//SqlSessionFactoryBuilder---工厂构建者
//SqlSessionFactory ---会话工厂
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
//SqlSession ---会话,用于所有mybatis中操作方法的调用
SqlSession sqlSession = factory.openSession();
//调用方法进行查询
//List<User> list = sqlSession.selectList("selAll"); 如果只有一个命名空间,可以不写
List<User> list = sqlSession.selectList("user.selAll"); //"selAll"就是UserMapper.xml文件里select对应的id值
System.out.println(list);
for(User user:list){
System.out.println(user);
}
//关闭资源
sqlSession.close();
}
}
log4j.properties:
mybatis.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,配置并管理多个环境-->
<environments default="dev">
<!--配置一个环境-->
<environment id="dev">
<!--事务管理器,MyBatis采用和JDBC一致的方式进行事务的管理-->
<transactionManager type="JDBC"/>
<!--数据源,使用连接池技术-->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<!-- <property name="url" value="jdbc:mysql://localhost:3306/db_ssm"/>-->
<!--解决日志警告问题,发一个参数过去-->
<property name="url" value="jdbc:mysql://localhost:3306/db_ssm?SSL=false"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<!--扫描映射-->
<mappers>
<mapper resource="UserMapper.xml"/>
</mappers>
</configuration>
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="user">
<!--id属性类似于方法名,resultType表示查询结果返回的类型-->
<select id="selAll" resultType="com.ssm.pojo.User">
/* select * from tb_user*/
/* 解决属性名和列名不一致问题*/
select id, username, password, realname, age, birthday, reg_Time as regTime from tb_user
</select
<select id="selById" resultType="com.ssm.pojo.User">
select id, username, password, realname, age, birthday, reg_Time regTime from tb_user where id=1
</select>
<select id="count" resultType="java.lang.Integer">
select count(*) from tb_user
</select>
</mapper>
就只粘贴部分查询的测试结果
查询所有(selALL)的结果:
根据id查询一条记录的结果:
上面的日志信息是不是太多了呢,如果想显示一部分,请在上述基础上继续修改log4j.properties
文件,修改的地方如下:
上面的user就是UserMapper.xml中 **<mapper namespace="user">
**里的user(也就是命名空间的名字)
selAll
就是UserMapper.xml
文件里select
对应的id
值:
再来看看运行结果:
查询所有(selALL)的结果:
根据id查询一条记录的结果:
是不是感觉这里咋没发现日志信息?
莫急! 是因为ERROR级别比DEBUG、TRACE的级别高,所以上述的log4j.properties文件修改后,意味着只有…user.selALL这里的级别为TRACE,其他均为ERROR ,又因为程序没有报ERROR错误,所以只显示了查询的结果,没有显示日志信息。
输出级别的种类(左边的级别比右边的高)
FATAl、ERROR、WARN、INFO、DEBUG、TRACE
如果想要根据id查询一条记录的结果也显示同样的日志信息,则再次修改log4j.properties
文件,修改的地方如下:
再来查询下根据id查询一条记录的结果:
看下,日志信息是不是出来啦!
不知道你们有没有发现对于日志信息配置,我没有在UserMapper.xml里面写(真正的是我忘记了,哈哈哈)正如下图:
我虽然没有写,但是测试时,日志信息能够打印出来。这就引起了我的好奇心,所以就去百度了一下才明白,链接在这里
总之,日志信息能打印出来是不假,但是还是建议写上吧,万一你想把value设置其他的值呢!
先写到这了,如果有些错的地方还望告知!
至于db.porperties文件 待会再整理,先歇会