执行select查询语句,接收对象为ResultSet类型
new PreparedStatement().executeQuery();
执行select查询语句,接收对象为ResultSet类型
new PreparedStatement().executeUpdate();
5.对查询结果集对象进行处理,如果不是查询语句的话就不需要进行这项步骤
6.释放资源
如果需要使用Mybatis技术的话,需要知道每一个Mybatis应用都是基于一个SqlSessionFactory的实例化对象为核心,基于该实例化对象之后进行调用build方法进行读取Mybatis核心的配置文件,这样使得核心配置文件(以及后续相关的Maper配置文件)和Java程序耦合在一起,同样利用xml配置文件使得某些固定数据直接固定在项xml文件中。每一个Mybatis应用中都需要进行获取的SqlSessionFactory对象可以封装在一个工具类中的。
public class MybatisUtil {
public MybatisUtil() {
}
private static SqlSessionFactory sqlSession = null;
static {
try {
sqlSession = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("Mybatis_config.xml"));
} catch (IOException e) {
e.printStackTrace();
}
//创建会话对象
}
public static SqlSession OpenSqlSession() {
//获取会话开启对象
return sqlSession.openSession();
}
}
注意在一个Mybatis项目中获取会创建多个session会话事物对象,所以这个工具类会多次使用,但是读取该配置文件只需要进行一次(这里是为了解释为什么将实例化以及读取核心配置文件放在静态代码块中)避免了多次创建会话对象重复读取核心配置文件造成的冗余。
1.核心配置文件的应用,模板:
DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<properties resource="Properties.properties">
<property name="org.apache.ibatis.parsing.PropertyParser.enable-default-value" value="true"/>
<property name="" value="">property>
<property name="" value="">property>
<property name="" value="">property>
properties>
<settings>
<setting name="logImpl" value="STDOUT_LOGGING"/>
settings>
<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/studentmanager"/>
<property name="username" value="root"/>
<property name="password" value="7895123L"/>
dataSource>
environment>
<environment id="DBZxr">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${DriverName}"/>
<property name="url" value="${studentmanager}"/>
<property name="username" value="${user}"/>
<property name="password" value="${password}"/>
<property name="poolMaximumActiveConnections" value="3"/>
<property name="poolTimeToWait" value="5"/>
dataSource>
environment>
<environment id="DBLab">
<transactionManager type="JDBC"/>
<dataSource type="JNDI">
<property name="" value=""/>
<property name="" value=""/>
dataSource>
environment>
environments>
<mappers>
<mapper resource="User.xml"/>
mappers>
configuration>
在该配置文件中有两种处理连接数据库所需要的用户名,密码,驱动位置,数据库名称,不同的资源处理方法或者配置位置可以使Mybatis操纵数据库变得更加灵活。因此可以根据自己的需求进行处理自己的配置方法,在原生态的jdbc中使用的方法是在根路径下创建一个properties文件,个人认为和Mybatis的效果是一样的,底层是一个Map集合一样。resource=“Properties.properties”,将自己配置的资源通过配置文件映射过来(可理解为传输出来)。当然也可以将配置文件资源直接放在这里
<property name="" value="">property>
<property name="" value="">property>
<property name="" value="">property>
无非是使用的方法不同,在这里不过多概述
其次就是Mappeer配置文件的使用,在核心配置文件中的代码就是最后映射文件的名字
<mappers>
<mapper resource="User.xml"/>
mappers>
可以进行配置多个映射对象来对不同索引和视图的处理,因此创建多个Mapper表对处理数据库中的多张表的很有必要。
这里举一个Mapper例子,来对Mapper表中利用Mybatis进行CRUD的操作以及可能会出现的错误。
DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="LoginMapper">
<select id="selectMapper" resultType="Model.User">
select *
from user;
select>
<select id="selectUsername">
select *
from user
where username = #{username};
select>
<select id="selectLevel">
select level
from user
where username = #{level}
select>
<select id="selectLogin" resultType="Model.User">
select *
from user
where username = #{username}
and password = #{password}
select>
<insert id="insertRegister">
insert into user(username, password, level)
values (#{username}, #{password}, #{level});
insert>
<select id="selectQueryuser" resultType="Model.User">
select *
from user
order by username;
select>
<insert id="InsertUser">
insert into user
values (#{username}, #{password}, #{level});
insert>
<delete id="DeleteUser">
delete
from user
where username = #{username};
delete>
<update id="UpdateUser">
update user
set username=#{after_username},
password=#{after_password},
level = #{after_level}
where username = #{username};
update>
mapper>
由于后续处理的表逐渐庞大,所以对xml表配置文件进行了命名,在Java程序中session对象进行操作读取配置文件注意命名的格式。
注意每一个具体配置操作都要有id
Insert操作
insert into 表名 (所要添加的字段名字) values(数据);
注意这里数据尽量需要设置成死的,因为在实际开发中所有的属性都是动态的,因此在后续Java程序中是可以传输一个Map集合或者一个JavaBean对象,让sql语句中的#{}字段自己进行通过映射获取数据。其中#{}该种方法可以避免sql注入现象。
Delete操作
delete from 表名 where 条件
Update操作
update set 字段=新的数据,字段=新的数据,where 条件
Select操作
select操作固定语句:select 字段名 from 表名 where 条件。注意在select语句中的属性信息,注意标注返回值类型是javabean对象。否则会爆出异常错误。
----详情待更,感谢各位大佬指教更正