1.mybatis01:

  db.properties:

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/test
username=root
password=root

  log4j.properties:

#Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n
log4j.logger.org.apache.ibatis=DEBUG
#log4j.rootLogger=warn,appender1
#log4j.appender.appender1=org.apache.log4j.ConsoleAppender
#log4j.appender.appender1.layout=org.apache.log4j.SimpleLayout

  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> <!-- 加载属性文件 -->
<properties resource="db.properties"/>
<environments default="development">
<environment id="development"> <!-- 使用jdbc中的事务 -->
<transactionManager type="JDBC"></transactionManager>
<!-- 配置数据源 -->
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource> </environment>
</environments> <mappers>
<mapper resource="cn/zzsxt/entity/TbUser.xml"/>
</mappers>
</configuration>

  TbUserDao.java:

package cn.zzsxt.dao;

import java.util.List;

import cn.zzsxt.entity.TbUser;

public interface TbUserDao {
public List<TbUser> findAll();
public TbUser findUserById(Long id);
public int addUser(TbUser user);
public int updateUser(TbUser user);
public int deleteUser(long id);
}

  TbUserDaoImpl.java:

package cn.zzsxt.dao.impl;

import java.io.InputStream;
import java.util.List; import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder; import cn.zzsxt.dao.TbUserDao;
import cn.zzsxt.entity.TbUser; public class TbUserDaoImpl implements TbUserDao { @Override
public List<TbUser> findAll() {
//加载全局配置文件
InputStream ips = this.getClass().getResourceAsStream("/mybatis-config.xml");
//创建SqlSessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(ips);
//创建SqlSession
SqlSession sqlSession = sqlSessionFactory.openSession();
//执行查询
List<TbUser> list = sqlSession.selectList("user.findAll");//参数为映射文件中的statment id
//释放资源
sqlSession.close();
return list;
} @Override
public TbUser findUserById(Long id) {
//加载全局配置文件
InputStream ips = this.getClass().getResourceAsStream("/mybatis-config.xml");
//创建SqlSessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(ips);
//创建SqlSession
SqlSession sqlSession = sqlSessionFactory.openSession();
//执行查询
TbUser user = sqlSession.selectOne("user.findUserById",id);
sqlSession.close();
return user;
} @Override
public int addUser(TbUser user) {
//加载全局配置文件
InputStream ips = this.getClass().getResourceAsStream("/mybatis-config.xml");
//创建SqlSessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(ips);
//创建SqlSession
SqlSession sqlSession = sqlSessionFactory.openSession();
//执行查询
int count = sqlSession.insert("user.addUser", user);
//提交事务
sqlSession.commit();
// sqlSession.rollback();//回滚事务
sqlSession.close();
return count;
} @Override
public int updateUser(TbUser user) {
//加载全局配置文件
InputStream ips = this.getClass().getResourceAsStream("/mybatis-config.xml");
//创建SqlSessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(ips);
//创建SqlSession
SqlSession sqlSession = sqlSessionFactory.openSession();
//执行查询
int count = sqlSession.update("user.updateUser", user);
//提交事务
sqlSession.commit();
sqlSession.close();
return count;
} @Override
public int deleteUser(long id) {
//加载全局配置文件
InputStream ips = this.getClass().getResourceAsStream("/mybatis-config.xml");
//创建SqlSessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(ips);
//创建SqlSession
SqlSession sqlSession = sqlSessionFactory.openSession();
//执行查询
int count = sqlSession.update("user.deleteUser", id);
//提交事务
sqlSession.commit();
sqlSession.close();
return count;
} }

  TbUser.java:

package cn.zzsxt.entity;

import java.io.Serializable;
import java.util.Date; public class TbUser implements Serializable{
private long id;
private String username;
private String sex;
private Date birthday;
private String address; public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return "TbUser [id=" + id + ", username=" + username + ", sex=" + sex + ", birthday=" + birthday + ", address="
+ address + "]";
} }

  TbUser.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">
<!--
1.User.xml(原始ibatis命名),mapper代理开发的映射文件命名XxxMapper.xml
2.namespace命名空间,作用就是对sql进行分类化管理,理解sql隔离
3.注意:使用mapper代理开发,namespace有特殊的作用
-->
<mapper namespace="user">
<!--在映射文件中配置很多sql语句-->
<!--需求:通过id查询用户表的记录-->
<!--
1.标识映射文件中的sql,将sql语句封装到mapped statement对象中,所以称为statement的id
2.parameterType:指定输入参数类型
3.#{}:表示一个占位符
4.#{id}:其中的id表示接收的输入参数,参数名称就是id,如果输入参数是简单类型,#{}中的参数名可以任意,可以为value或者其他
5.resultType:指定sql输出结果的所映射的java对象类型,select指定resultType表示将单条记录映射成的java对象
-->
<!-- 查询 -->
<select id="findAll" resultType="cn.zzsxt.entity.TbUser">
select * from tb_user
</select> <select id="findUserById" parameterType="java.lang.Long" resultType="cn.zzsxt.entity.TbUser">
select * from tb_user where id=#{id}
</select> <!-- 添加 -->
<insert id="addUser" parameterType="cn.zzsxt.entity.TbUser">
insert into tb_user(username,sex,birthday,address) values(#{username},#{sex},#{birthday},#{address})
</insert> <!-- 修改 -->
<update id="updateUser" parameterType="cn.zzsxt.entity.TbUser">
update tb_user set username=#{username},sex=#{sex},birthday=#{birthday},address=#{address} where id=#{id}
</update> <!-- 删除 -->
<delete id="deleteUser" parameterType="java.lang.Long">
delete from tb_user where id=#{id}
</delete>
</mapper>

  Test1.java:

package cn.zzsxt.demo;

import java.util.Date;
import java.util.List; import org.junit.Test; import cn.zzsxt.dao.TbUserDao;
import cn.zzsxt.dao.impl.TbUserDaoImpl;
import cn.zzsxt.entity.TbUser; public class Test1 { @Test
public void testFindAll(){
TbUserDao tbUserDao = new TbUserDaoImpl();
List<TbUser> list = tbUserDao.findAll();
for (TbUser tbUser : list) {
System.out.println(tbUser);
}
} @Test
public void testFindUserById(){
TbUserDao tbUserDao = new TbUserDaoImpl();
TbUser user = tbUserDao.findUserById(new Long(1));
System.out.println(user);
} @Test
public void testAddUser(){
TbUserDao tbUserDao = new TbUserDaoImpl();
TbUser user = new TbUser();
user.setUsername("test");
user.setSex("男");
user.setBirthday(new Date());
user.setAddress("北京");
int count = tbUserDao.addUser(user);
System.out.println(count);
} @Test
public void testUpdateUser(){
TbUserDao tbUserDao = new TbUserDaoImpl();
TbUser user = tbUserDao.findUserById(4L);
user.setUsername("王五");
int count =tbUserDao.updateUser(user);
System.out.println(count);
} @Test
public void testDeleteUser(){
TbUserDao tbUserDao = new TbUserDaoImpl();
int count =tbUserDao.deleteUser(4L);
System.out.println(count);
}
}

  TestLog4J.java:

package cn.zzsxt.test;

import org.apache.log4j.Logger;
import org.junit.Test; public class TestLog4J { Logger logger = Logger.getLogger(TestLog4J.class.getName());
@Test
public void test01(){
// System.out.println("xxxx");
logger.debug("debug....");
logger.info("info....");
logger.warn("warn....");
logger.error("error....");
logger.fatal("fatal....");
} public static void main(String[] args) {
TestLog4J test = new TestLog4J();
test.test01();
} }

java:Mybatis框架1(基本配置,log4j,Junit4(单元测试))的更多相关文章

  1. Java日志框架:SLF4J,Common-Logging,Log4J,Logback说明

    Log4j  Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台.文件.GUI组件.甚至是套接口服务 器.NT的事件记录器.UNIX Syslog守护进程等 ...

  2. 深入理解MyBatis框架的的配置信息

    面对一个框架,最重要的不是说回用其代码就可以了,我们需要了解其思想,这样才能更快更好的掌握这个框架.而对于一个框架,最重要的就是其配置文件的作用及功能了.下面,我就来谈一谈我今天遇到的这个MyBati ...

  3. MyBatis框架的文件配置

    第一步:log4j.properties的配置 原因:Mybatis的日志输出是依赖与log4j的,所以必须要配置 # Global logging configuration log4j.rootL ...

  4. Java 日志框架概述(slf4j / log4j / JUL / Common-logging(JCL) / logback)

    一.简介 JAVA日志在初期可能官方并没有提供很好且实用的规范,导致各公司或OSS作者选择自行造轮子,这也导致了目前初学者觉得市面上 Java 日志库繁杂的局面. 现在市面流行以 slf4j(Simp ...

  5. Java Mybatis 框架入门教程

    一.Mybatis介绍 MyBatis是一款一流的支持自定义SQL.存储过程和高级映射的持久化框架.MyBatis几乎消除了所有的JDBC代码,也基本不需要手工去 设置参数和获取检索结果.MyBati ...

  6. Java日志框架(Commons-logging,SLF4j,Log4j,Logback)

    简介 在系统开发中,日志是很重要的一个环节,日志写得好对于我们开发调试,线上问题追踪等都有很大的帮助.但记日志并不是简单的输出信息,需要考虑很多问题,比如日志输出的速度,日志输出对于系统内存,CPU的 ...

  7. MyBatis框架的基本配置

    MyBatis的基本配置文件: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE config ...

  8. 《Java Spring框架》SpringXML配置详解

    Spring框架作为Bean的管理容器,其最经典最基础的Bean配置方式就是纯XML配置,这样做使得结构清晰明了,适合大型项目使用.Spring的XML配置虽然很繁琐,而且存在简洁的注解方式,但读懂X ...

  9. Mybatis框架的简单配置

    Mybatis 的配置 1.创建项目(当然,这是废话) 2.导包 下载mybatis-3.2.0版:https://repo1.maven.org/maven2/org/mybatis/mybatis ...

  10. mybatis框架的核心配置Mapper.xml

    映射管理器resultMap:映射管理器,是Mybatis中最强大的工具,使用其可以进行实体类之间的关系,并管理结果和实体类间的映射关系 需要配置的属性:<resultMap id=" ...

随机推荐

  1. java7连接数据库 网页 添加学生信息测试

    石家庄铁道大学2019年秋季   2018 级课堂测试试卷(六)(10分) 课程名称: JAVA语言程序设计  任课教师: 王建民        考试时间: 150 分钟 一. 考试要求: 1登录账号 ...

  2. 第四章 生命周期函数--36 结合Node手写JSONP服务器剖析JSONP原理

  3. HDU4456-Crowd (坐标旋转处理+hash处理+二维树状数组)

    题意: 给出一个矩阵,初始每个位置上的值都为0,然后有两种操作 一种是更改某个位置上的值 另一种是求某个位置附近曼哈顿距离不大于K的所有位置的值的总和 技巧: 坐标旋转,使得操作之后菱形变成方方正正的 ...

  4. poj2279 Mr. Young's Picture Permutations[勾长公式 or 线性DP]

    若干人左对齐站成最多5行,给定每行站多少个,列数从第一排开始往后递减.要求身高从每排从左到右递增(我将题意篡改了便于理解233),每列从前向后递增.每个人身高为1...n(n<=30)中的一个数 ...

  5. jvm的几篇文章

    https://www.cnblogs.com/xrq730/category/731395.html

  6. silverlight发布设置

    HTTP头 - MIME类型.xap xapapplication/x-silverlight .xaml application/xaml+xml

  7. vue data数据恢复初始化

    Object.assign(this.$data, this.$options.data())

  8. javascript / angular 如何把object转成array

    取出的api 格式是纯object格式 {"name":"james","city":"Taipei","co ...

  9. head first 设计模式笔记7-适配器模式与外观模式

    适配器模式:将一个类的接口,转换成客户期望的另一个接口.适配器让原本接口不兼容的类可以合作无间. 这个模式可以通过创建适配器进行接口转换,让不兼容的接口变成兼容.这可以让客户从实现的接口解耦.如果在一 ...

  10. 1110 Complete Binary Tree (25 分)

    Given a tree, you are supposed to tell if it is a complete binary tree. Input Specification: Each in ...