JDBC(Java Data Base Connection,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成.JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序

DBUtils是Java编程中的数据库操作实用工具,小巧简单实用。
DBUtils封装了对JDBC的操作,简化了JDBC操作,可以少写代码。
DBUtils三个核心功能介绍
名字 | 解释 |
|---|---|
ORM | 对象关系映射 |
object | java对象 |
relational | 关系型数据 |
mapping | 映射 |
JdbcTemplate针对数据查询提供了多个重载的模板方法,你可以根据需要选用不同的模板方法.如果你的查询很简单,仅仅是传入相应SQL或者相关参数,然后取得一个单一的结果,那么你可以选择如下一组便利的模板方法。
MyBatis 是一款优秀的持久层框架/半自动的ORM,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>cn.tulingxueyuan</groupId>
<artifactId>mybatis_helloworld</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.4</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
</dependencies>
</project>
复制代码public class Emp {
private Integer id;
private String username;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
@Override
public String toString() {
return "Emp{" +
"id=" + id +
", username='" + username + ''' +
'}';
}
}
复制代码public interface EmpMapper {
// 根据id查询Emp实体
//@Select("select * from emp where id=#{id}")
Emp selectEmp(Integer id);
// 插入
Integer insertEmp(Emp emp);
// 更新
Integer updateEmp(Emp emp);
// 删除
Integer deleteEmp(Integer id);
}
复制代码<?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.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<mappers>
<!--<mapper resource="EmpMapper.xml"/>-->
<mapper class="com.mybatis.mapper.EmpMapper"></mapper>
</mappers>
</configuration>
复制代码<?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.mybatis.mapper.EmpMapper">
<!--根据id查询Emp实体-->
<select id="selectEmp" resultType="com.mybatis.pojo.Emp">
select * from Emp where id = #{id}
</select>
<insert id="insertEmp">
INSERT INTO
`mybatis`.`emp` ( `username`)
VALUES (#{username});
</insert>
<update id="updateEmp">
UPDATE EMP
SET username=#{username}
WHERE id=#{id}
</update>
<delete id="deleteEmp">
DELETE FROM emp
WHERE id=#{id}
</delete>
</mapper>
复制代码/***
*
* MyBatis 搭建步骤:
* 1.添加pom依赖 (mybatis的核心jar包和数据库版本对应版本的驱动jar包)
* 2.新建数据库和表
* 3.添加mybatis全局配置文件 (可以从官网中复制)
* 4.修改mybatis全局配置文件中的 数据源配置信息
* 5.添加数据库表对应的POJO对象(相当于我们以前的实体类)
* 6.添加对应的PojoMapper.xml (里面就维护所有的sql)
* 修改namespace: 如果是StatementId没有特殊的要求
* 如果是接口绑定的方式必须等于接口的完整限定名
* 修改对应的id(唯一)、resultType 对应返回的类型如果是POJO需要制定完整限定名
* 7.修改mybatis全局配置文件:修改Mapper
*/
public class MybatisTest {
SqlSessionFactory sqlSessionFactory;
@Before
public void before(){
// 从 XML 中构建 SqlSessionFactory
String resource = "mybatis.xml";
InputStream inputStream = null;
try {
inputStream = Resources.getResourceAsStream(resource);
} catch (IOException e) {
e.printStackTrace();
}
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
}
/**
* 基于StatementId的方式去执行SQL
* <mapper resource="EmpMapper.xml"/>
* @throws IOException
*/
@Test
public void test01() {
try (SqlSession session = sqlSessionFactory.openSession()) {
Emp emp = (Emp) session.selectOne("cn.tulingxueyuan.pojo.EmpMapper.selectEmp", 1);
System.out.println(emp);
}
}
/**
* 基于接口绑定的方式
* 1.新建数据访问层的接口: POJOMapper
* 2.添加mapper中对应的操作的方法
* 1.方法名要和mapper中对应的操作的节点的id要一致
* 2.返回类型要和mapper中对应的操作的节点的resultType要一致
* 3.mapper中对应的操作的节点的参数必须要在方法的参数中声明
* 3.Mapper.xml 中的namespace必须要和接口的完整限定名要一致
* 4.修改mybatis全局配置文件中的mappers,采用接口绑定的方式:
* <mapper class="com.mybatis.EmpMapper"></mapper>
* 5.一定要将mapper.xml和接口放在同一级目录中,只需要在resources新建和接口同样结构的文件夹就行了,生成就会合并在一起
*
* @throws IOException
*/
@Test
public void test02(){
try (SqlSession session = sqlSessionFactory.openSession()) {
EmpMapper mapper = session.getMapper(EmpMapper.class);
Emp emp = mapper.selectEmp(1);
System.out.println(emp);
}
}
/**
* 基于注解的方式
* 1.在接口方法上面写上对应的注解
*@Select("select * from emp where id=#{id}")
* 注意:
* 注解可以和xml共用, 但是不能同时存在方法对应的xml的id
*
*/
@Test
public void test03(){
try (SqlSession session = sqlSessionFactory.openSession()) {
EmpMapper mapper = session.getMapper(EmpMapper.class);
Emp emp = mapper.selectEmp(1);
System.out.println(emp);
}
}
}
复制代码public interface EmpMapper {
public Emp findEmpByEmpno(Integer empno);
public int updateEmp(Emp emp);
public int deleteEmp(Integer empno);
public int insertEmp(Emp emp);
}
复制代码<?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="com.mybatis.mapper.EmpMapper">
<!--
select:表示这个操作是一个查询操作
id表示的是要匹配的方法的名称
resultType:表示返回值的类型,查询操作必须要包含返回值的类型
#{属性名}:表示要传递的参数的名称
-->
<select id="findEmpByEmpno" resultType="com.mybatis.bean.Emp">
select * from emp where empno = #{empno}
</select>
<!--增删改查操作不需要返回值,增删改返回的是影响的行数,mybatis会自动做判断-->
<insert id="insertEmp">
insert into emp(empno,ename) values(#{empno},#{ename})
</insert>
<update id="updateEmp">
update emp set ename=#{ename} where empno = #{empno}
</update>
<delete id="deleteEmp">
delete from emp where empno = #{empno}
</delete>
</mapper>
复制代码public class MyTest {
SqlSessionFactory sqlSessionFactory = null;
@Before
public void init(){
// 根据全局配置文件创建出SqlSessionFactory
// SqlSessionFactory:负责创建SqlSession对象的工厂
// SqlSession:表示跟数据库建议的一次会话
String resource = "mybatis-config.xml";
InputStream inputStream = null;
try {
inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory= new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
@Test
public void test01() {
// 获取数据库的会话
SqlSession sqlSession = sqlSessionFactory.openSession();
Emp empByEmpno = null;
try {
// 获取要调用的接口类
EmpMapper mapper = sqlSession.getMapper(EmpMapper.class);
// 调用方法开始执行
empByEmpno = mapper.findEmpByEmpno(7369);
} catch (Exception e) {
e.printStackTrace();
} finally {
sqlSession.close();
}
System.out.println(empByEmpno);
}
@Test
public void test02(){
SqlSession sqlSession = sqlSessionFactory.openSession();
EmpMapper mapper = sqlSession.getMapper(EmpMapper.class);
int zhangsan = mapper.insertEmp(new Emp(1111, "zhangsan"));
System.out.println(zhangsan);
sqlSession.commit();
sqlSession.close();
}
@Test
public void test03(){
SqlSession sqlSession = sqlSessionFactory.openSession();
EmpMapper mapper = sqlSession.getMapper(EmpMapper.class);
int zhangsan = mapper.updateEmp(new Emp(1111, "lisi"));
System.out.println(zhangsan);
sqlSession.commit();
sqlSession.close();
}
@Test
public void test04(){
SqlSession sqlSession = sqlSessionFactory.openSession();
EmpMapper mapper = sqlSession.getMapper(EmpMapper.class);
int zhangsan = mapper.deleteEmp(1111);
System.out.println(zhangsan);
sqlSession.commit();
sqlSession.close();
}
}
复制代码public interface EmpMapperImpl {
@Select("select * from emp where id= #{id}")
public Emp findEmpByEmpno(Integer empno);
@Update("update emp set ename=#{ename} where id= #{id}")
public int updateEmp(Emp emp);
@Delete("delete from emp where id= #{id}")
public int deleteEmp(Integer empno);
@Insert("insert into emp(id,user_name) values(#{id},#{username})")
public int insertEmp(Emp emp);
}本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。