入门MyBatis+Spring :Mybatis在maven项目的导入与数据库操作
一、Mybatis简介:
sql和java编码分开,功能边界清晰,一个专注业务、一个专注数据
优点:
- 与JDBC相比,减少了50%以上的代码量。
- MyBatis是最简单的持久化框架,小巧并且简单易学。
- MyBatis相当灵活,不会对应用程序或者数据库的现有设计强加任何影响,SQL写在XML里,从程序代码中彻底分离,降低耦合度,便于统一管理和优化,并可重用。
- 提供XML标签,支持编写动态SQL语句。
- 提供映射标签,支持对象与数据库的ORM字段关系映射。
二、maven项目的基本目录结构:
main目录存放开发代码,test目录存放测试代码,pom.xml存放所有的项目依赖(查询项目依赖:https://mvnrepository.com/)
注:引入依赖后在外部库查看是否自动导入(很明显此过程需要联网环境进行)。
三、mybatis的主配置文件以及映射配置文件:
mybatis的主配置文件放在resources下,示例内容如下:
<?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="${driver}"//>
<property name="url" value=""${url}"//>
<property name="username" value="${username}"//>
<property name="password" value="${password}"//>
</dataSource>
</environment>
</environments>
<!-- 映射配置文件的路径 -->
<mappers>
<!--<mapper resource="org/mybatis/example/BlogMapper.xml"/>-->
<mapper resource="mapper/usersMapper.xml"></mapper>
</mappers>
</configuration>
显然通过上面的代码块可以看出mybatis通过映射实体类对象和表来对数据库操作。
那么接着我们在resources下建立mapper文件夹,在mapper下定义映射关系(映射配置文件)。示例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">
<!-- namespace 命名空间
通常情况,命名空间的值,就是当前操作实体类的全名称-->
<mapper namespace="bin.User">
<select id="userList" resultType="bin.User">
select * from user_b
</select>
<select id="findUserByName" resultType="bin.User">
select * from user_b where uname like '%${value}%'
</select>
</mapper>
代码块有相关注释,此处不再赘叙。
四、测试demo:
import bin.User;
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.Test;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
public class TestDemo {
@Test
public void testDemo1() throws IOException {
//初始化mybatis配置环境
String resource = "mybatis.xml";
InputStream ins = Resources.getResourceAsStream(resource);
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(ins);
//打开和数据库的会话
SqlSession session = factory.openSession();
List<User> list = session.selectList("findUserByName","p");
for (User user:list
) {
System.out.println(user);
}
session.close();
}
}
五、mybatis的数据库操作(部分)
1.查询表中全部信息:
mapper下xml内容:
<select id="userList" resultType="包名.类名">
select * from 表名
</select>
调用时相关代码:
List<User> list = session.selectList("findUserByName");
2.模糊查询:
mapper下xml内容:
<select id="findUserByName" resultType="包名.类名">
select * from 表名 where uname like '%${value}%'
</select>
调用时相关代码:
List<User> list = session.selectList("findUserByName","p");
注意:select标签中对SQL语句的“${}”符号,表示拼接SQL串,将接收到的参数内容不加任何修饰地拼接在SQL中,在大括号中只能使用value代表其中的参数,然而在Web项目中,如果没有防范SQL注入的机制,要谨慎使用此方式拼接SQL语句串,因为可能会引起SQL注入的风险。
未完待续…