MyBatis 是一个可以自定义SQL、存储过程和高级映射的持久层框架,使用mybatis框架能让我们更容易的访问数据库的DAL(数据访问)层。
mybatis使用的配置步骤
1.创建一个maven工程
2.配置pom.xml文件 导入依赖资源包
需要导入的jar包有mysql,mybatis 两个基础jar包 mysql 包用于连接数据库操作,版本可以根据本机安装的mysql版本选择,mybatis框架顾名思义也需要mybatis包,版本可以选用最新的版本,因为mybatis包一般都有很强大的向下兼容性。
(在pom.xml下配置下列代码,会自动导入依赖,如果不成功,可以maven 然后点击刷新下载并导入所需的依赖包。)
<!-- 导入依赖-->
<dependencies>
<!-- mysql驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.24</version>
</dependency>
<!-- mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.2</version>
</dependency>
3.编写xml文件配置连接数据库
environments 标签里的为配置连接数据库,
environments 里可以有多个environment标签,可以使用多种方式连接数据库,但是每次连接使用使用一种,通过属性default来绑定要使用的连接方式,
mappers 为绑定要执行sql语句的xml文件的位置
也可以使用<package 标签 属性name绑定对应的包的路径,来绑定包内的所有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>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=UTF-8"/>
<property name="username" value="root"/>
<property name="password" value="aaaa"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/kuang/dao/UserMapper.xml"/>
</mappers>
</configuration>
4.可以编写一个帮助类加载mybatis-config.xml文件(即配置连接数据库的文件)
这样可以用过帮助类直接获取到sqlSession 对象,便于直接执行需要运行的接口中的方法
public class MybatisUtlis {
private static SqlSessionFactory sqlSessionFactory;
static {
try {
//使用mybatis 第一步: 获取sqlSessionFactory 对象
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
//既然有了 SqlSessionFactory,顾名思义,我们可以从中获得 SqlSession 的实例。
// SqlSession 完全包含了面向数据库执行 SQL命令所需要的所有方法
public static SqlSession getSqlSession(){
SqlSession sqlSession = sqlSessionFactory.openSession();
return sqlSession;
}
}
5.编写xml文件执行sql语句
mapper 中的属性namespace绑定的为要执行规范的接口路径,标签里可以包含要执行的sql语句对应的标签,例如:select查询语句就需要select标签,id绑定的对应的方法,根据方法可以确定是否有返回值,是否有参数,如果有参数的话可以使用parameterType或者parameterMap属性注入,返回值可以使用resultType,resultMap等接收,视情况使用;注意这里的参数注入匹配sql语句需要使用#{ value }而不会使用${ value } 这样可以有效的避免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="com.kuang.dao.UserMapper">
<select id="getUserList" resultType="com.kuang.pojo.User">
select * from user
</select>
<select id="getUserById" parameterType="int" resultType="com.kuang.pojo.User">
select * from user where id=#{id}
</select>
<insert id="addUser" parameterType="com.kuang.pojo.User">
insert into user (uname,pwd) values(#{uname},#{pwd})
</insert>
<update id="updateUser" parameterType="com.kuang.pojo.User">
update user set uname=#{uname},pwd=#{pwd} where id=#{id}
</update>
<delete id="deleteUser" parameterType="int">
delete from user where id=#{id}
</delete>
</mapper>
6.最后,编写我们所需要的接口
public interface UserMapper {
//获取全部用户
List<User> getUserList();
// //根据id查询用户
User getUserById(int id);
//插入用户
int addUser(User user);
//修改用户
int updateUser(User user);
//删除用户
int deleteUser(int id);
}
mybatis-config.xml升级:可以通过db.properties文件加载数据库相关信息;mybatis-config.xml还可以配置别名,驼峰式命名等信息详情可以查看官网 mybatis
不过要注意的是配置标签的先后关系
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
附:
1.User类
public class User {
private int id;
private String uname;
private String pwd;
public User() {
}
public User(String uname, String pwd) {
this.uname = uname;
this.pwd = pwd;
}
public User(int id, String uname, String pwd) {
this.id = id;
this.uname = uname;
this.pwd = pwd;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", uname='" + uname + '\'' +
", pwd='" + pwd + '\'' +
'}';
}
}
2.测试代码(如果需要这段测试代码还得加入junit包,否则可以直接使用main方法测试)
@Test
public void test3(){
SqlSession sqlSession = MybatisUtlis.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
int res = mapper.addUser(new User("哈哈", "678678"));
if(res>0){
System.out.println("成功");
}
sqlSession.commit();
sqlSession.close();
}
}
总结mybatis使用步骤:
配置pom.xml —> 配置 mybatis.xml连接数据库 —> 加载mybatis.xml文件,获得sqlSessionFactory,通过sqlSessionFactory获取sqlSession实例 —> 编写执行sql代码相关的xml文件和相关接口 —>测试(完成)