1、prom.xml中导入坐标
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.5</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.46</version>
</dependency>
2、在resources文件夹下新建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="jdbc.properties">
</properties>
<!--起别名-->
<typeAliases>
<package name="com.wk.entity"/>
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="${url}"/>
<property name="username" value="root"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<!--扫描mapper-->
<package name="com.wk.dao"/>
</mappers>
</configuration>
3、在resources资源包下新建jdbc.properties文件存储值
url=jdbc:mysql://localhost:3306/test?characterEncoding=utf8&useSSL=false
uname=root
password=123
driver=com.mysql.jdbc.Driver
4、包结构
5、在dao包下新建一个类dao接口(TeacherDao)存放数据库操作
public interface TeacherDao {
// @Select("select * from teacher")
//查询所有教师信息
List<Teacher> selectAllTeacher();
//增加一个教师信息
int addTeacher(Teacher teacher);
//更改教师信息
int updateTeacher(Teacher teacher);
//删除教师信息
int deleteTeacherById(Integer id);
}
6、 在resources包下建com/wk/dao包(显示为com.wk.dao)
新建TeacherDao.xml与dao包中的TeacherDao一一对应
<?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.wk.dao.TeacherDao">
<insert id="addTeacher">
insert into teacher (t_name,phone) values (#{teachername},#{phone})
</insert>
<update id="updateTeacher">
update teacher set phone=#{phone} where t_id=#{id}
</update>
<delete id="deleteTeacherById">
delete from teacher where t_id=#{id}
</delete>
<select id="selectAllTeacher" resultType="com.wk.entity.Teacher">
select * from teacher
</select>
</mapper>
6.1解决列名与属性名不一致问题
在TeacherDao.xml文件下加入
<resultMap id="teacherMap" type="com.wk.entity.Teacher">
<result column="t_id" property="id"/>
<result column="t_name" property="teachername"/>
<result column="phone" property="phone"/>
</resultMap>
并将 select标签中的resultType="com.wk.entity.Teacher"改为resultMap="teacherMap"
7、在entity包中新建类,存放数据库中对象信息
public class Teacher {
private int id;
private String teachername;
private String phone;
public Teacher() {
}
public Teacher(int id, String teachername, String phone) {
this.id = id;
this.teachername = teachername;
this.phone = phone;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getTeachername() {
return teachername;
}
public void setTeachername(String teachername) {
this.teachername = teachername;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
@Override
public String toString() {
return "Teacher{" +
"id=" + id +
", teachername='" + teachername + '\'' +
", phone='" + phone + '\'' +
'}';
}
}
数据库表信息
8、在util包下新建sqlsessionfactory关键对象
(1) SqlSessionFactory
1.SqlSessionFactory是MyBatis的关键对象,它是个单个数据库映射关系经过编译后的内存镜像。 2.SqlSessionFactory对象的实例可以通过SqlSessionFactoryBuilder对象类获得,而SqlSessionFactoryBuilder则可以从XML配置文件或一个预先定制的Configuration的实例构建出SqlSessionFactory的实例。 3.每一个MyBatis的应用程序都以一个SqlSessionFactory对象的实例为核心。 4.SqlSessionFactory是线程安全的,SqlSessionFactory一旦被创建,应该在应用执行期间都存在。在应用运行期间不要重复创建多次,建议使用单例模式。 5.SqlSessionFactory是创建SqlSession的工厂。
(2) SqlSession
1.SqlSession是MyBatis的关键对象,是执行持久化操作的独享,类似于JDBC中的Connection。 2.它是应用程序与持久层之间执行交互操作的一个单线程对象,也是MyBatis执行持久化操作的关键对象。 3.SqlSession对象完全包含以数据库为背景的所有执行SQL操作的方法,它的底层封装了JDBC连接,可以用SqlSession实例来直接执行被映射的SQL语句。 4.每个线程都应该有它自己的SqlSession实例。 5.SqlSession的实例不能被共享,同时SqlSession也是线程不安全的,绝对不能讲SqlSeesion实例的引用放在一个类的静态字段甚至是实例字段中。也绝不能将SqlSession实例的引用放在任何类型的管理范围中,比如Servlet当中的HttpSession对象中。 6.使用完SqlSeesion之后关闭Session很重要,应该确保使用finally块来关闭它。
(3) Resources
Resources类:从类路径中加载资源。
Resources可加载的配置文件
public class SqlSessionFactoryUtils {
private static SqlSessionFactory sqlSessionFactory;
static {
try {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
//Resources类:从类路径中加载资源。
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
public static SqlSessionFactory getSqlSessionFactory(){return sqlSessionFactory;}
}
9、在test包下编写测试类
public class Test01 {
private static SqlSessionFactory sqlSessionFactory = SqlSessionFactoryUtils.getSqlSessionFactory();
public static void main(String[] args) {
SqlSession sqlSession = sqlSessionFactory.openSession();
//利用sqlSession对象获取出想要的接口对象
TeacherDao mapper = sqlSession.getMapper(TeacherDao.class);
//查询所有教师信息
// List<Teacher> list= mapper.selectAllTeacher();
// System.out.println(list);
//添加教师信息
// Teacher teacher = new Teacher();
// teacher.setTeachername("史蒂夫");
// teacher.setPhone("123456789");
// int i = mapper.addTeacher(teacher);
// System.out.println(i);
// //手动提交事务
// sqlSession.commit();
//修改教师信息
// Teacher teacher = new Teacher();
// teacher.setPhone("88888888");
// teacher.setId(1);
// int i = mapper.updateTeacher(teacher);
// sqlSession.commit();
// System.out.println(i);
//删除教师信息
int i = mapper.deleteTeacherById(2);
System.out.println(i);
sqlSession.commit();
}
}
本文转载自: https://blog.csdn.net/qq_54351538/article/details/127616366
版权归原作者 wangkay88 所有, 如有侵权,请联系我们删除。
版权归原作者 wangkay88 所有, 如有侵权,请联系我们删除。