1.倒入mysql驱动 , c3p0连接池 ,mybatis依赖
//mysql驱动依赖
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.40</version>
</dependency>
//c3p0依赖
<dependency>
<groupId>com.mchange</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.5.2</version>
</dependency>
//mybatis依赖
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.2</version>
</dependency>
//log4j依赖
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
MyBatis的xml映射文件:mybatis-config.xml
c3p0连接连接数据库
<?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>
<!-- 引入外部资源文件,将数据库配置设为外部链接 -->
<properties resource="database.properties"></properties>
<!--手动开启二级缓存 mybatis默认开启一级缓存 默认为true false代表关闭-->
<settings>
<setting name="cacheEnabled" value="true"/>
</settings>
<!--起别名-->
<typeAliases>
<package name="cn.yhy.entity"/>
</typeAliases>
<!--环境变量-->
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"></transactionManager>
<!--数据源 实现c3p0DataSourceFactory全类名-->
<dataSource type="cn.yhy.utils.c3p0DataSourceFactory">
<!--values写入database.properties中的具体名字 而不是写入具体值-->
<property name="driverClass" value="${driverClass}"/>
<property name="jdbcUrl" value="${jdbcUrl}"/>
<property name="user" value="${user}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<!--注册sql的映射文件-->
<mapper resource="static/CatMapper.xml"/>
<!--注解的方式 映射对应的接口-->
<mapper class="cn.yhy.mapper.CatMapperAnnotation"></mapper>
<!--接口实现注解 映射mapper包下的所有接口-->
<package name="cn.yhy.mapper"/>
</mappers>
</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/kh_83" />
<property name="username" value="root" />
<property name="password" value="123456" />
</dataSource>
</environment>
</environments>
database.properties外部文件的配置
# database.properties文件的配置
driverClass=com.mysql.jdbc.Driver
jdbcUrl=jdbc:mysql://localhost:3306/kh_83
user=root
password=123456
Utils工具类
c3p0链接池
public class c3p0DataSourceFactory extends UnpooledDataSourceFactory {
public c3p0DataSourceFactory(){
this.dataSource=new ComboPooledDataSource();
}
}
读取mybatis-config.xml的通用方法
public class SSF {
/**
* 通用的读取xml文件
* @return
*/
public static SqlSessionFactory getSqlSessionFactory(){
//接口
SqlSessionFactory sqlSessionFactory=null;
String resource = "mybatis-config.xml";
InputStream inputStream = null;
try {
//读取核心配置文件
inputStream = Resources.getResourceAsStream(resource);
} catch (IOException e) {
e.printStackTrace();
}
//创建sqlSessionFactory工厂
sqlSessionFactory= new SqlSessionFactoryBuilder().build(inputStream);
return sqlSessionFactory;
}
}
在相应的service中或者测试类中打开并加载相关文件
//使用工厂生产SqlSession对象
SqlSession session = SSF.getSqlSessionFactory().openSession();
//使用SqlSession 创建对应接口的代理对象
StudentMapper mapper = session.getMapper(StudentMapper.class);
编写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">
<!--namespace和接口关联起来-->
<mapper namespace="cn.yhy.mapper.PersonMapper">
<!--id调用方法 type调用实体类-->
<insert id="savePerson" parameterType="cn.yhy.entity.Person">
insert into tbl_person(name,age,birth,registerTime,salary)
values(#{name},#{age},#{birth},#{registerTime},#{salary})
</insert>
<update id="updatePerson" parameterType="cn.yhy.entity.Person">
update tbl_person set name=#{name} where id=#{id}
</update>
<delete id="removePerson" parameterType="int">
delete from tbl_person where id=#{id}
</delete>
<select id="getOne" resultType="cn.yhy.entity.Person" parameterType="int">
select * from tbl_person where id=#{id}
</select>
<select id="getAll" resultType="cn.yhy.entity.Person">
select * from tbl_person
</select>
</mapper>
日志文件:log4j.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM
"http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/log4j.dtd">
<log4j:configuration debug="true">
<appender name="log.console" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss,SSS} %5p (%C{1}:%M) - %m%n" />
</layout>
</appender>
<!-- -->
<logger name="org.apache.ibatis">
<level value="info" />
<appender-ref ref="log.console" />
</logger>
<logger name="cn.yhy">
<level value="debug" />
<appender-ref ref="log.console" />
</logger>
</log4j:configuration>
测试类
public class Test {
static SqlSessionFactory sqlSessionFactory=null;
static {
String resource = "mybatis-config.xml";
InputStream inputStream = null;
try {
inputStream = Resources.getResourceAsStream(resource);
} catch (IOException e) {
e.printStackTrace();
}
sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
}
public static void main(String[] args) {
SqlSession session=sqlSessionFactory.openSession();
try {
PersonMapper mapper = session.getMapper(PersonMapper.class);
//增加
// Person person=new Person(null,"admin11",21,new Date(),new Date(),8900.0);
// mapper.savePerson(person);
//修改
// Person person=new Person();
// person.setId(3);
// person.setName("123456");
// mapper.updatePerson(person);
//删除
// mapper.removePerson(2);
//查询所有
// List<Person> all = mapper.getAll();
// System.out.println(all);
//查询一条数据
Person one = mapper.getOne(3);
System.out.println(one);
//使用代理对象执行方法
session.commit();
}finally {
//释放资源
session.close();
}
}
}
具体思路
1.倒入mysql ,c3p0, mybatis 依赖
2.编写实体类 编写功能接口(CRUD)
3.编写mybatis-config.xml核心配置文件及日志文件
1.主要是连接数据库 可选用直连接或者连接池连接
2.如果用c3p0连接需要创建一个utils包 创建一个c3p0DataSourceFactory类继承UnpooledDataSourceFactory,并把 dataSource 实现
3.在核心配置文件引入database.properties文件的配置 并且实现c3p0DataSourceFactory类的全类名
4.编写sql配置文件 ,编写后的xxxMapper.xml文件映射到
1.在配置文件中编写sql语句,和相应的功能接口关联起来,最后将sql配置文件给到核心配置文件中
5.测试
调用核心配置文件 并且读取文件