前言
MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以对配置和原生Map使用简单的 XML 或注解,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
一、依赖导入
将这两个依赖加入poml.xml;
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.38</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
包结构图如下:
二、实体类创建
根据对应的数据库表创建对应的java实体类:
数据库表一览
java实体类创建
package cn.wsj.entity;
public class Local {
private int localid;
private String localname;
private int sublocal;
public int getLocalid() {
return localid;
}
public String getLocalname() {
return localname;
}
public int getSublocal() {
return sublocal;
}
public void setLocalid(int localid) {
this.localid = localid;
}
public void setLocalname(String localname) {
this.localname = localname;
}
public void setSublocal(int sublocal) {
this.sublocal = sublocal;
}
}
三、接口定义数据库操作方法
接口创建
:定义了操作数据库的方法
package cn.wsj.dao;
import cn.wsj.entity.Local;
import java.util.List;
public interface LocalDAO {
public void insertLocal(Local local);
public void deleteLocal(Local local);
public void updateLocal(Local local);
public List<Local> findAll();
public Local findById(int localid);
}
四、创建全局配置文件
这里对应包图的mybatis.cfg.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>
<!-- 设置别名-->
<typeAliases>
<typeAlias type="cn.kgc.entity.Local" alias="local"></typeAlias>
</typeAliases>
<!-- 环境配置:事务管理器和数据源配置 -->
<environments default="wsj">
<environment id="wsj">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://single:3306/myshops" />
<property name="username" value="root" />
<property name="password" value="root" />
</dataSource>
</environment>
</environments>
<!-- 映射器 与映射文件关联 -->
<mappers>
<mapper resource="mappers/local.xml" />
</mappers>
</configuration>
五、创建mapper映射文件
这里对应包图的local.xml文件,该文件都是由SQL语句构成:
<?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="cn.wsj.dao.LocalDAO">
<insert id="insertLocal" parameterType="local">
insert into local values (#{localid},#{localname},#{sublocal})
</insert>
<delete id="deleteLocal" parameterType="int">
delete from local where localid=#{localid}
</delete>
<update id="updateLocal" parameterType="local">
update local set localname=#{localname} , subloocal=#{sublocal} where localid=#{localid}
</update>
<select id="findAll" resultType="local">
select * from local
</select>
<select id="findById" parameterType="int" resultType="local">
select * from local where localid=#{localid}
</select>
</mapper>
六、测试连接
这里对应包图的Test.java:
package cn.wsj.test;
import cn.wsj.dao.LocalDAO;
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 java.io.IOException;
import java.io.Reader;
public class Test {
public static void main(String[] args) throws IOException {
//读取配置文件
Reader reader = Resources.getResourceAsReader("mybatis.cfg.xml");
//根据配置获得数据库操作会话工厂
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader);
//根据操作工厂生产操作会话
SqlSession session = factory.openSession();
//根据会话生成对应的数据库操作接口实例
LocalDAO localDAO = session.getMapper(LocalDAO.class);
//操作接口,测试效果
System.out.println(localDAO.findAll());
//测试单条数据查询
// System.out.println(localDAO.findById(21).getSublocal());
//测试update方法
// Local loc = new Local();
// loc.setLocalid(21);
// loc.setLocalname("南通");
// loc.setSublocal(2);
// localDAO.updateLocal(loc);
// session.commit();
//测试delete方法
// localDAO.deleteLocal(21);
// session.commit();
//
//关闭会话
session.close();
}
}
PS:如果有写错或者写的不好的地方,欢迎各位在评论区留下宝贵的意见或者建议,敬上!如果这篇博客对您有帮助,希望您可以顺手帮我点个赞!不胜感谢!
原创作者:wsjslient |