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. 标准C语言(9)

    C语言里所有文字信息必须记录在一组连续的字符类型存储区里所有文字信息必须以字符'\0'做结尾,这个字符的ASCII码就是0符合以上两个特征的内容叫字符串,它们可以用来在程序里记录文字信息.字符串里'\ ...

  2. 仿响应式html:JS来判断页面是在手机端还是在PC端打开的方法

    版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/a419419/article/detail ...

  3. POJ - 2689 Prime Distance (区间筛)

    题意:求[L,R]中差值最小和最大的相邻素数(区间长度不超过1e6). 由于非素数$n$必然能被一个不超过$\sqrt n$的素数筛掉,因此首先筛出$[1,\sqrt R]$中的全部素数,然后用这些素 ...

  4. 03-01 Django之视图层

    Django之视图层 一 视图函数 视图函数,简称视图,属于Django的视图层,默认定义在views.py文件中,是用来处理web请求信息以及返回响应信息的函数,所以研究视图函数只需熟练掌握两个对象 ...

  5. 2017noip总结

    day0 酒店位置很好,旁边就是玉树公园,3公里处还有万达广场: 晚上去万达吃喝玩乐, 不过,打车等了好久,手机还没电了. 同时水杯还在广州扎根了...(暗示后文悲惨结局) day1 8:30 监考老 ...

  6. Coding 账户与 本地 Git 客户端的配置

    1.先创建cooding账户 ,注册地址:https://coding.net/ 2.创建好账户后登陆,在个人设置中  验证邮箱 和 验证手机 (邮箱很重要配置需要用到) 3.安装git 客户端 (在 ...

  7. 在echart组件下用canvans画三角形

    //使用的canvans绘制的三角形 drawArrow(){ var canvas = document.createElement('canvas');//创建一个元素 canvas.width ...

  8. vue 项目, 通知子组件更新,父组件中每次点击按钮重新加载子组件,(重新生成dom 元素)

    vue是组件化开发的项目,很多情况下会把公共组件提取出来,来减少代码量,提高开发效率,和以后更好的可维护性.很多情况下,父组件中都会引用子组件这种情况.通过给在父组件中引用的子组件标签上添加属性,来渲 ...

  9. async异步改同步后怎么监听错误

    当我们使用readFile()这种api,它第一个参数是报的错误,当使用async.await把它改写成同步,我们可以使用try  { }catch{ }解决.

  10. T级别视频上传解决方案

    之前仿造uploadify写了一个HTML5版的文件上传插件,没看过的朋友可以点此先看一下~得到了不少朋友的好评,我自己也用在了项目中,不论是用户头像上传,还是各种媒体文件的上传,以及各种个性的业务需 ...