什么是框架
框架(Framework)〕是整个或鄗分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法:另一种定义认为,框架是可被应用开发者定制的应用骨架。
前者是从应用方面而后者是从目的方面给出的定义,简而言之,框架其实就是某种应用的半成品,就是一组组件,供你选用完成你自己的系统。简单说就是使用别人搭好的舞台,你来做表演。而且,框架一般是成熟的,不断升级的软件。
框架要解决的问题
框架要解决的最重要的一个问题是技术整合的问题,在J2EE的框架中,有着各种各样的技术,不同的软件企业需要从J2EE中选择不同的技术,这就使得软件企业最终的应用依赖于这些技术,技术自身的复杂性和技术的风险性将会直接对应用造成冲击。而应用是软件企业的核心,是竞争力的关键所在,因此应该将应用自身的设计和具体的实现技术解耦.
这样,软件企业的研发将集中在应用的设计上,而不是具体的技术实现,技术实现是应用的底层支撑,它不应该直接对应用产生影响。
框架一般处在低层应用平台(如J2EE)和高层业务逻辑之间的中间层。
软件开发的分层重要性

常见的框架
MyBatis
spring MVC
spring
MyBatis入门案例
创建数据库
#判断存在即删除数据库
drop database if exists mydb;
#创建数据库
create database mydb;
#使用数据库
use mydb;
#创建表
create table t_user
(
uid int primary key auto_increment,
username varchar(20),
password varchar(20),
phone varchar(11),
address varchar(50)
);
insert into t_user(username,password,phone,address) values('小绿','666','18965423548','小蓝和小绿');
insert into t_user(username,password,phone,address) values('小蓝','333','18754263548','小蓝和小绿');
insert into t_user(username,password,phone,address) values('小黑','123','18565234759','罗小黑战记');
select * from t_user where username=? and password=?
select * from t_user;
创建一个Java项目在项目中创建一个lib文件夹放入mybatis框架的jar包并导入项目中

编写对应的实体类类的首字母大写属性名首字母小写在src中创建com.yang.bean包然后创建user实体类
package com.yang.bean;
public class User {
private Integer uid;
private String username;
private String password ;
private String phone;
private String address;
public Integer getUid() {
return uid;
}
public void setUid(Integer uid) {
this.uid = uid;
}
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 getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return "User{" +
"uid=" + uid +
", username='" + username + '\'' +
", password='" + password + '\'' +
", phone='" + phone + '\'' +
", address='" + address + '\'' +
'}';
}
}
创建针对表操作的接口类在src中创建com.yang.dao包,然后创建userDao接口然后在接口中定义针对数据库增删改查的操作
package com.yang.dao;
import com.yang.bean.User;
import java.util.List;
public interface UserDao {
List<User> selectAll();
User selectByuid(int uid);
int add(User user);
int delete(int uid);
int update(User user);
}
在接口的包中创建对应的mapper映射配置文件。在dao接口的同目录下创建跟接口名字一样的配置文件。
<?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="com.yang.dao.UserDao">
<!--通过select标签进行查询
ID:映射接口的方法名
parameterType:指定参数的类型(如果是集合类型只需要指定集合元素的类型即可)
resultType:指定返回值的类型
-->
<select id="selectAll" resultType="com.yang.bean.User">
select * from t_user;
</select>
<select id="selectByuid" resultType="com.yang.bean.User">
select * from t_user where uid=#{uid};
</select>
<insert id="add" parameterType="com.yang.bean.User">
insert into t_user(username,password,phone,address) values(#{username},#{password},#{phone},#{address});
</insert>
<delete id="delete" parameterType="int">
delete from t_user where uid=#{uid};
</delete>
<update id="update" parameterType="com.yang.bean.User">
update t_user set username=#{username},password=#{password},phone=#{phone},address=#{address};
</update>
</mapper>
在src目录中创建mybatis框架的核心配置文件。在src中创建一个文件,命名为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>
<!--配置环境信息===就是配置连接数据库的参数
default:指定配置的环境信息的ID,表示默认连接该环境
-->
<environments default="mysql">
<environment id="mysql">
<transactionManager type="jdbc"></transactionManager>
<dataSource type="pooled">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://127.0.0.1:3306/mydb"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper class="com.yang.dao.UserDao"></mapper>
</mappers>
</configuration>
7.在测试类中进行测试使用mybatis框架需要按照框架的步骤进行
package com.yang.test;
import com.yang.bean.User;
import com.yang.dao.UserDao;
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.After;
import org.junit.Before;
import org.junit.Test;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
public class UserTest {
InputStream stream=null;
SqlSessionFactoryBuilder builder=null;
SqlSessionFactory factory=null;
SqlSession sqlSession=null;
UserDao userDao=null;
@Before
public void init() throws IOException {
//1.加载核心配置文件的字节输入流
stream = Resources.getResourceAsStream("mybatis.xml");
//2.创建SqlSessionFactory的构建对象--框架使用的是构建者模式
builder = new SqlSessionFactoryBuilder();
//3.通过构建对象加载配置文件的输入流获取SqlSessionFactory
factory = builder.build(stream);
//4.通过工厂对象获取SqlSession对象----执行JDBC操作的
sqlSession = factory.openSession();
//5.通过SqlSession对象获取接口对应的代理对象
userDao = sqlSession.getMapper(UserDao.class);
}
@Test
public void testSelectAll() {
//6.通过代理对象执行查询方法
List<User> userList = userDao.selectAll();
for (User user : userList) {
System.out.println(user);
}
}
@Test
public void SelectByuid(){
User user=userDao.selectByuid(1);
System.out.println(user);
}
@Test
public void testAdd() {
//6.通过代理对象执行查询方法
User user=new User();
user.setUsername("xb");
user.setPassword("555");
user.setPhone("124");
user.setAddress("lxhzj");
int n= userDao.add(user);
if(n>0){
System.out.println("success");
}else{
System.out.println("error");
}
}
@Test
public void testDelete() {
//6.通过代理对象执行查询方法
int n = userDao.delete(5);
if (n > 0) {
System.out.println("success");
} else {
System.out.println("error");
}
}
@Test
public void testUpdate(){
User oldUser=userDao.selectByuid(7);
System.out.println("修改前:"+oldUser);
oldUser.setUsername("小白");
oldUser.setAddress("河南郑州");
userDao.update(oldUser);
User newuser=userDao.selectByuid(7);
System.out.println("修改后:"+newuser);
}
@After
public void distroy() throws IOException {
sqlSession.commit();
sqlSession.close();
stream.close();
}
}
运行结果
全查
"C:\Program Files\Java\jdk1.8.0_191\bin\java.exe" -ea -Didea.test.cyclic.buffer.size=1048576 "-
log4j:WARN No appenders could be found for logger (org.apache.ibatis.logging.LogFactory).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
User{uid=1, username='小绿', password='666', phone='18965423548', address='小蓝和小绿'}
User{uid=2, username='小蓝', password='333', phone='18754263548', address='小蓝和小绿'}
User{uid=3, username='小黑', password='123', phone='18565234759', address='罗小黑战记'}
Process finished with exit code 0
单查

添加


删除


修改
