J2EE基础

一.创建一个项目
二.加入jar包

在这里插入图片描述
点击完后点击右边的Add External JARs添加j2ee文件夹里面这个文件夹所有的包
在这里插入图片描述
再点击Add Library 添加JRE System Library库
弄完以后会有一个就算成功
在这里插入图片描述
第三步: log4j.properties
1.在src中nnew一个File把log4j.properties复制进去做名字
在这里插入图片描述
在这个文件里面打上代码

# Global logging configuration
log4j.rootLogger=DEBUG, stdout
# 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

mybatis默认使用log4j作为输出日志信息。
第四步:SqlMapConfig.xml
在src中nnew一个File把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>
	<!-- 和spring整合后 environments配置将废除-->
	<environments default="development">
		<environment id="development">
		<!-- 使用jdbc事务管理-->
			<transactionManager type="JDBC" />
		<!-- 数据库连接池-->
			<dataSource type="POOLED">
				<property name="driver" value="com.mysql.jdbc.Driver" />
				<property name="url" value="jdbc:mysql://localhost:3306/mysql?characterEncoding=utf-8" />
				<property name="username" value="root" />
				<property name="password" value="" />
			</dataSource>
		</environment>
	</environments>
	
</configuration>

SqlMapConfig.xml是mybatis核心配置文件,上边文件的配置内容为数据源、事务管理。
五:po类
类规范:
类映射到类
Catalog映射到catalog表一对一
1.在src中new一个package,命名cn.qziedu.po
在这里插入图片描述
2.在cn.qziedu.po包中new一个class名为Catalog
3.在数据库中创建一个表catalog,然后表格里面的类型要跟Catalog里面的一致
4.Catalog里面的数据

package cn.qziedu.po;
/**
 * 
 * @author 14643
 *@desc
 *私有属性和get set方法
 */
public class Catalog {
    
    
	private Integer id;//编号
	private String title;//分类名称
	private String parent_id;//父编号
	public Integer getId() {
    
    
		return id;
	}
	public void setId(Integer id) {
    
    
		this.id = id;
	}
	public String getTitle() {
    
    
		return title;
	}
	public void setTitle(String title) {
    
    
		this.title = title;
	}
	public String getParent_id() {
    
    
		return parent_id;
	}
	public void setParent_id(String parent_id) {
    
    
		this.parent_id = parent_id;
	}
	@Override
	public String toString() {
    
    //第二个快捷方式创建
		return "Catalog [id=" + id + ", title=" + title + ", parent_id=" + parent_id + "]";
	}
}

打完以后按这个可以创建快捷方式
在这里插入图片描述
在按下面这个创建另外需要的代码
在这里插入图片描述

六.编写程序
1.在scr创建一个Folder名为sqlmap
在这里插入图片描述
2.在sqlmap文件夹中创建一个File名为Catalogs.xml;
先在Catalogs.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="test">
</mapper>

在主语句中添加查找代码:
parameterType:定义输入到sql中的映射类型,#{id}表示使用preparedstatement设置占位符号并将输入变量id传到sql。
resultType:定义结果映射类型。

<!-- 查询catalog的id获取catalog信息 -->
<!-- 增删改查insert,delete.update,select -->

<!-- parameterType="int" 输入参数-->

<!-- 
	resultType="cn.qziedu.po.Catalogs"输出参数
	参数类型:cn.qziedu.po.Catalogs包名+类名
 -->
 <!-- 根据id获取用户信息 -->
	<select id="findCatalogById" parameterType="int" resultType="cn.qziedu.po.Catalog">
		select * from catalog where id=#{
    
    id}
	</select>
	<!-- 自定义条件查询用户列表 -->
	<select id="findCatalogsByIdTitle" parameterType="string" resultType="cn.qziedu.po.Catalog">
		select * from catalog where title like '%${value}%'
	</select>

3.1.6.7.1.2加载映射文件:
mybatis框架需要加载映射文件,
在SqlMapConfig.xml中添加:

<mappers>
	<mapper resource="sqlmap/Catalogs.xml"/>
</mappers>

测试程序
new一个package名为cn.qziedu.test
在cn.qziedu.test中new一个JUnit Test Case名为TestCatalog,创建之前在下面的setUp()选项中打钩,然后改成以下这样,即可运行成功

package cn.qziedu;

import static org.junit.jupiter.api.Assertions.*;

import java.io.InputStream;

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.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

import cn.qziedu.po.Catalog;

class TestCatalog {
    
    
	//1.配置环境SqlMapConfig.xml+Catalogs.xml
	//2.通过配置文件生成SqlSessionDactory
	private SqlSessionFactory sqlSessionFactory;

	@BeforeEach
	void creatSqlSessionFactory() throws Exception {
    
    
		// 配置文件
		String resource = "SqlMapConfig.xml";
		InputStream inputStream = Resources.getResourceAsStream(resource);

		// 使用SqlSessionFactoryBuilder从xml配置文件中创建SqlSessionFactory
		sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
	}
	// 根据 id查询用户信息
	@Test
	void testFindCatalogById() {
    
    
		SqlSession sqlsession=null;
		try {
    
    
			// 创建数据库会话实例sqlSession
		sqlsession=sqlSessionFactory.openSession();
		// 查询单个记录,根据用户id查询用户信息
		Catalog catalog= sqlsession.selectOne("test.findCatalogById",2);
		// 输出用户信息
					System.out.println(catalog);
		}catch(Exception e) {
    
    
			e.printStackTrace();
		}finally {
    
    
			if (sqlsession != null) {
    
    
				//关闭sqlsession
				sqlsession.close();
			}
		}
	}

}

这样就算查询成功
模糊查询

//模糊查询
	void testFindCatalogByTitle() {
    
    
		SqlSession sqlsession=null;
		try {
    
    
			sqlsession=sqlSessionFactory.openSession();
			List<Catalog> catalog=sqlsession.selectList("test.findCatalogByTitle","X");
			System.out.println(catalog.size());
		}catch(Exception e) {
    
    
			e.printStackTrace();
		}finally {
    
    
			if (sqlsession != null) {
    
    
				//关闭sqlsession
				sqlsession.close();
			}
		}
	}

parameterType和resultType
parameterType:指定输入参数类型,mybatis通过ognl从输入对象中获取参数值拼接在sql中。
resultType:指定输出结果类型,mybatis将sql查询结果的一行记录数据映射为resultType指定类型的对象。

查询所有:
在Catalog.xml中加

<select id="findAll" resultType="cn.qziedu.po.Catalog">
 		select * from catalog where 1=1
</select>

然后在TestCatalog.java测试这边加

@Test
	//类名:首字母大写
	//类方法名称:驼峰
	void testfindAll() {
    
    
		SqlSession sqlsession=null;
		try {
    
    
			sqlsession=sqlSessionFactory.openSession();
			List<Catalog> catalog=sqlsession.selectList("test.findAll");
			System.out.println(catalog.size());
		}catch(Exception e) {
    
    
			e.printStackTrace();
		}finally {
    
    
			if (sqlsession != null) {
    
    
				//关闭sqlsession
				sqlsession.close();
			}
		}
	}

这两个是对应的

插入数据
1.先在Catalog.xml中添加


	<!-- 简单类型是单个,比较简单,多个怎么处理 -->
	<!-- 插入的SQL语句 -->
	<insert id="insertCatalog" parameterType="cn.qziedu.po.Catalog">
	<!-- 也可以不用写selectKey这个东西 -->
		<selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">
			select LAST_INSERT_ID()
		</selectKey>
	
		insert into catalog (title,parent_id)values (#{
    
    title},#{
    
    parent_id})
	</insert>
	

2.然后在TestCatalog中添加


	
	//插入
	@Test
	void testInsertCatalog() {
    
    
		SqlSession sqlsession=null;
		try {
    
    
			// 数据库会话实例
			sqlsession=sqlSessionFactory.openSession();
			// 添加用户信息
			Catalog catalog=new Catalog();
			catalog.setTitle("xx");
			catalog.setParent_id("0");
			sqlsession.insert("test.insertCatalog",catalog);
			//提交事务,要提交事务,没有提交的话没有执行,表格不会出现数据
			//数组一致性,原子性,完整性
			//插入、删除、跟新有问题,他会rollback回滚回来之前的模样
			//insert的第一个参数是映射文件的namespace+id=test.insertCatalog
			Integer i=sqlsession.insert("test.insertCatalog",catalog);
			sqlsession.commit();//凡是增删改都要加这一句
			System.out.println("insert"+catalog.getId());//用err打印出来的事红色的,out出来的是黑色的
		}catch(Exception e) {
    
    
			e.printStackTrace();
		}finally {
    
    
			if (sqlsession != null) {
    
    
				//关闭sqlsession
				sqlsession.close();
			}
		}
	}

删除数据
1.先在Catalog.xml中添加

	<!-- 删除 -->
	<delete id="deleteCatalogById" parameterType="int">
		delete from catalog where id=#{
    
    id}
	</delete>

2.然后在TestCatalog中添加


	//删除
	@Test
	void testDeleteCatalogById() {
    
    
		SqlSession sqlsession=null;
		try {
    
    
			// 数据库会话实例
			sqlsession=sqlSessionFactory.openSession();
			Integer i=sqlsession.delete("test.deleteCatalogById",18);
			sqlsession.commit();//凡是增删改都要加这一句
		}catch(Exception e) {
    
    
			e.printStackTrace();
		}finally {
    
    
			if (sqlsession != null) {
    
    
				//关闭sqlsession
				sqlsession.close();
			}
		}
	}
	

修改数据
1.先在Catalog.xml中添加


	<!-- 修改 -->
	<update id="updateCatalog" parameterType="cn.qziedu.po.Catalog">
		update catalog set title=#{
    
    title},parent_id=#{
    
    parent_id} where id=#{
    
    id}
	</update>

2.然后在TestCatalog中添加

//修改
	@Test
	void testUpdatetCatalog() {
    
    
		SqlSession sqlsession=null;
		try {
    
    
			// 数据库会话实例
			sqlsession=sqlSessionFactory.openSession();
			// 添加用户信息
			Catalog catalog=new Catalog();
			catalog.setTitle("aa");
			catalog.setParent_id("0");
			catalog.setId(11);
			
			Integer i=sqlsession.insert("test.updateCatalog",catalog);
			sqlsession.commit();//凡是增删改都要加这一句
			System.err.println("insert"+catalog.getId());//用err打印出来的事红色的,out出来的是黑色的
		}catch(Exception e) {
    
    
			e.printStackTrace();
		}finally {
    
    
			if (sqlsession != null) {
    
    
				//关闭sqlsession
				sqlsession.close();
			}
		}
	}

猜你喜欢

转载自blog.csdn.net/weixin_44931166/article/details/104542905