java:Mybatis框架1(基本配置,log4j,Junit4(单元测试))
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(单元测试))的更多相关文章
- Java日志框架:SLF4J,Common-Logging,Log4J,Logback说明
Log4j Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台.文件.GUI组件.甚至是套接口服务 器.NT的事件记录器.UNIX Syslog守护进程等 ...
- 深入理解MyBatis框架的的配置信息
面对一个框架,最重要的不是说回用其代码就可以了,我们需要了解其思想,这样才能更快更好的掌握这个框架.而对于一个框架,最重要的就是其配置文件的作用及功能了.下面,我就来谈一谈我今天遇到的这个MyBati ...
- MyBatis框架的文件配置
第一步:log4j.properties的配置 原因:Mybatis的日志输出是依赖与log4j的,所以必须要配置 # Global logging configuration log4j.rootL ...
- Java 日志框架概述(slf4j / log4j / JUL / Common-logging(JCL) / logback)
一.简介 JAVA日志在初期可能官方并没有提供很好且实用的规范,导致各公司或OSS作者选择自行造轮子,这也导致了目前初学者觉得市面上 Java 日志库繁杂的局面. 现在市面流行以 slf4j(Simp ...
- Java Mybatis 框架入门教程
一.Mybatis介绍 MyBatis是一款一流的支持自定义SQL.存储过程和高级映射的持久化框架.MyBatis几乎消除了所有的JDBC代码,也基本不需要手工去 设置参数和获取检索结果.MyBati ...
- Java日志框架(Commons-logging,SLF4j,Log4j,Logback)
简介 在系统开发中,日志是很重要的一个环节,日志写得好对于我们开发调试,线上问题追踪等都有很大的帮助.但记日志并不是简单的输出信息,需要考虑很多问题,比如日志输出的速度,日志输出对于系统内存,CPU的 ...
- MyBatis框架的基本配置
MyBatis的基本配置文件: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE config ...
- 《Java Spring框架》SpringXML配置详解
Spring框架作为Bean的管理容器,其最经典最基础的Bean配置方式就是纯XML配置,这样做使得结构清晰明了,适合大型项目使用.Spring的XML配置虽然很繁琐,而且存在简洁的注解方式,但读懂X ...
- Mybatis框架的简单配置
Mybatis 的配置 1.创建项目(当然,这是废话) 2.导包 下载mybatis-3.2.0版:https://repo1.maven.org/maven2/org/mybatis/mybatis ...
- mybatis框架的核心配置Mapper.xml
映射管理器resultMap:映射管理器,是Mybatis中最强大的工具,使用其可以进行实体类之间的关系,并管理结果和实体类间的映射关系 需要配置的属性:<resultMap id=" ...
随机推荐
- 【hdu 6071】Lazy Running
菜鸡永远都在做着变聚的梦. 题意 有 \(4\) 个点连成一个环,连接顺序依次为 \(1-2-3-4-1\).相邻两个点之间有个距离 \(d_{i,i+1}\)(特别地,当 \(i=4\) 时为 \( ...
- k8spod生命周期
pod对象自从创建开始至终止退出的时间范围称为生命周期,在这段时间中,pod会处于多种不同的状态,并执行一些操作:其中,创建主容器为必须的操作,其他可选的操作还包括运行初始化容器(init conta ...
- 解决Iview 中 input 无法监听 enter 事件
比如 我们想要在某个组件的根元素监听一个原生事件 可以使用 .native 修饰 v-on 例子: 这样子写 enter事件将无效 但是使用 .native 修饰 就可以监听到 enter事件啦.
- C# 计时函数(毫秒)
using System; using System.Diagnostics; using System.Runtime.InteropServices; using System.Threading ...
- Python 文件I/OⅢ
read()方法 read()方法从一个打开的文件中读取一个字符串.需要重点注意的是,Python字符串可以是二进制数据,而不是仅仅是文字. 语法: 在这里,被传递的参数是要从已打开文件中读取的字节计 ...
- JavaScript 算术运算符
处理数值的典型情景是数值计算. ㈠JavaScript 算术运算符 算术运算符对数值(文字或变量)执行算术运算. ㈡算术运算符 典型的算术运算会操作两个数值. ⑴这两个数可以是字面量: var x = ...
- 【封装工程】OI/ACM常用封装
前言 笔者有的时候无聊,就将一些奇怪的东西封装起来. 范围主要是在\(OI\)或者\(ACM\)中的常见数据结构等. 随着笔者的能力的提升,可能会对原来的封装程序进行修改,并且保留原来的版本. [ST ...
- Make文件(一)
基本规则: 目标:依赖 (tab)规则 目标:需要生成的目标文件 依赖:生成该目标所需的一些文件 规则:由依赖文件生成目标文件的手段 tab:每条规则前必须以tab开头,使用空格不行. 例如: /** ...
- Linux命令-文件传输
Linux命令-文件传输 Linux lprm命令 Linux lprm命令用于将一个工作由打印机贮列中移除 尚未完成的打印机工作会被放在打印机贮列之中,这个命令可用来将常未送到打印机的工作取消.由于 ...
- Apicloud_(模板)登陆注册功能模板
项目已托管到Github上 传送门 不需要使用任何图片资源,需要用到SHA1.js库文件, Apicloud_(接口验证)用户注册头部信息X-APICloud-AppKey生成 传送门 项目全代码放到 ...