1,常用框架
MVC框架:其实就是简化了Serviet的开发步骤
2,mybatis是什么
mybatis的前身是ibatis
mybatis特点:
支持自定义sql,存储过程。
对原有的JDBC进行了封装,几乎消除了所有JDBC代码,让开发者只需关注sQL本身。
支持XML和注解配置方式自定完成ORM操作,实现结果映射,就是对象的属性和数据表列的对应关系
MyBatis 是一款优秀的持久层框架
MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。
MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录
单表的增删改查 一对一查询 一对多查询
创建数据库
use mydb;
drop table if exists classInfo;
create table classInfo(
cid int primary key auto_increment,
cname varchar(20),
cinfo varchar(20)
);
insert into classInfo(cname,cinfo) values('移动2103','学风良好');
insert into classInfo(cname,cinfo) values('移动2104','班风良好');
insert into classInfo(cname,cinfo) values('移动2105','学风良好');
SELECT * from classInfo;
drop table if exists student;
create table student(
sid int primary key auto_increment,
sname varchar(20),
sex varchar(2),
phone varchar(11),
address varchar(50),
cid int
);
insert into student(sname,sex,phone,address,cid) values('小明','男','133','南阳',1);
insert into student(sname,sex,phone,address,cid) values('小美','女','123','郑州',2);
insert into student(sname,sex,phone,address,cid) values('小张','男','232','信阳',3);
SELECT * from student;
SELECT * from student INNER JOIN classInfo on classInfo.cid=student.cid;
导入相关依
mybatis.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="jdbc.properties"/>
<settings>
<setting name="logImpl" value="log4j"/>
</settings>
<typeAliases>
<package name="com.chen.bean"/>
</typeAliases>
<environments default="mysql">
<environment id="mysql">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.user}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper class="${mapper.dao}"/>
</mappers>
</configuration>
创建数据库连接信息配置文件
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mydb
jdbc.user=root
jdbc.password=root
mapper.dao=com.chen.dao.UserDao
核心配置文件
<?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="jdbc.properties"/>
<settings>
<setting name="logImpl" value="log4j"/>
</settings>
<typeAliases>
<package name="com.chen.bean"/>
</typeAliases>
<environments default="mysql">
<environment id="mysql">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.user}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper class="${mapper.dao}"/>
</mappers>
</configuration>
![](https://img-blog.csdnimg.cn/img_convert/929b46b163e5972a4261e5d601880c67.png)
UserDao.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="com.chen.dao.UserDao">
<select id="selectByuid" resultType="com.chen.bean.User">
select * from classInfo where cid=#{cid};
</select>
<select id="selectAll" resultType="com.chen.bean.User">
select *from classInfo;
</select>
<insert id="add" parameterType="com.chen.bean.User">
insert into classInfo(cname,cinfo) values(#{cname},#{cinfo});
</insert>
<delete id="delete" parameterType="int">
delete from classInfo where cid=#{cid};
</delete>
</mapper>
UserDao:
package com.chen.dao;
import com.chen.bean.User;
import java.util.List;
public interface UserDao {
//全查
List<User> selectAll();
//查询
User selectByuid(int cid);
//添加
int add(User user);
//删除
int delete(int cid);
}
创建UserTest实体
package com.chen.test;
import com.chen.bean.Student;
import com.chen.bean.User;
import com.chen.dao.StudentDao;
import com.chen.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 {
stream= Resources.getResourceAsStream("mybatis.xml");
builder=new SqlSessionFactoryBuilder();
factory=builder.build(stream);
sqlSession=factory.openSession();
userDao=sqlSession.getMapper(UserDao.class);
}
//全查
@Test
public void textselectAll(){
List<User> userList=userDao.selectAll();
for (User user:userList){
System.out.println(user);
}
}
//查询
@Test
public void textselectByid(){
User user=userDao.selectByuid(2);
System.out.println(user);
}
//添加
@Test
public void textadd() {
User user=new User();
user.setCname("xx");
user.setCinfo("xx");
int n=userDao.add(user);
if(n>0){
System.out.println("添加成功");
}
}
//删除
@Test
public void textdelete(){
int del=userDao.delete(5);
if (del>0){
System.out.println("删除成功");
}
}
@After
public void distory() throws IOException{
sqlSession.commit();
sqlSession.close();
stream.close();
}
}
完成单表的增删改查一对一查询
一对多
在Dept实体类中写入
List<Emp> emps;
StudentDao.xml中写入通过did查询员工信息
<mapper namespace="com.chen.dao.EmpDao">
<select id="selectByDid" parameterType="int" resultType="emp">
select * from emp where did=#{did}
</select>
</mapper>
在Student中写入映射
<mapper namespace="com.chen.dao.DeptDao">
<resultMap id="deptMap" type="com.chen.bean.Dept">
<id property="did" column="did" />
<result property="dname" column="dname"/>
<result property="dinfo" column="dinfo"/>
<!--配置一对多关系:自动根据did去关联查询emp表中该did的信息-->
<collection column="did" select="com.chen.dao.EmpDao.selectByDid" property="emps">
</collection>
</resultMap>
<select id="selectByDid" parameterType="int" resultMap="deptMap">
select * from dept where did=#{did};
</select>
</mapper>
实现一对多