mybatis入门实操–(配置遇到问题–解决问题)
碎碎念–
花了一点时间,终于把mybatis给整入门了—自学还是比较费时间的
话不多说哦–直接开干
先来张数据表
建立表的时候可以参考多种方式,可以再cmd界面,也可以用其他工具怎么方便怎么来,初学者最好是在cmd界面因为可以练习sql语句;
整java代码–
因为要跟数据库中的表打交道,所以要先建立一个跟数据库列名和数据类型一样的,一个是为了方便写代码,另一个避免运行的时候会有数据类型不兼容的问题出现;
package charpter0619.one.next;
public class Animal {
private Integer animal_ID;
private String animal_type;
private String animal_name;
private float animal_price;
private Integer animal_num;
public Integer getAnimal_ID() {
return animal_ID;
}
public void setAnimal_ID(Integer animal_ID) {
this.animal_ID = animal_ID;
}
public String getAnimal_type() {
return animal_type;
}
public void setAnimal_type(String animal_type) {
this.animal_type = animal_type;
}
public String getAnimal_name() {
return animal_name;
}
public void setAnimal_name(String animal_name) {
this.animal_name = animal_name;
}
public float getAnimal_price() {
return animal_price;
}
public void setAnimal_price(float animal_price) {
this.animal_price = animal_price;
}
public Integer getAnimal_num() {
return animal_num;
}
public void setAnimal_num(Integer animal_num) {
this.animal_num = animal_num;
}
@Override
public String toString() {
return "Animal [animal_ID=" + animal_ID + ", animal_type=" + animal_type + ", animal_name=" + animal_name
+ ", animal_price=" + animal_price + ", animal_num=" + animal_num + "]";
}
}
//类中要有属性--与数据库中表的列名相对应(包括列名和数据类型),再就是setter和getter方法,还要覆写一个toString,还好eclipse提供了便捷的方式;
整mybatis–先整配置文件,在src根目录下新建log4j.properties文件,文件内容如下
#全局日志配置
#Global logging configuration
log4j.rootLogger=ERROR, stout
#MyBatis logging configuration...
#这里指定了将某包下所有的日志记录级别记录为DEBUG
log4j.logger.charpter0619.one=DEBUG
#控制台输出
Console output...
log4j.appender.stout=org.apache.log4j.ConsoleAppender
log4j.appender.stout.layout=org.apache.log4j.PatternLayout
log4j.appender.stout.layout.ConversionPattern=%5p [%t] - %m%n
接口–
package charpter0619.one;
import java.io.IOException;
//接口,定义涨价和降价的动物
public interface AnimalManger {
public void Transfer(String animalout,String animalin,float price );
public void FindAnimalById()throws IOException;
}
接口实现类–
package charpter0619.one.next;
import java.io.IOException;
import java.io.InputStream;
import javax.annotation.Resource;
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.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.stereotype.Controller;
import org.springframework.transaction.annotation.Transactional;
import charpter0619.one.AnimalManger;
@Controller("manageAimal") // 控制层
public class ManageAnaimal implements AnimalManger {
@Resource(name = "jdbcTemplate") // 注入
private JdbcTemplate jdbcTemplate;
public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
@Resource(name = "animal") // 注入
private Animal animal;
public void setAnimal(Animal animal) {
this.animal = animal;
}
@Transactional//事务管理,
@Override
public void Transfer(String animalout, String animalin, float price) {// 赠送动物
String sql = "update animalshop set animal_price=animal_price+? where animal_name=?";
this.jdbcTemplate.update(sql, price, animalin);
System.out.println(animalin + "--涨价成功");
String parm = "update animalshop set animal_price=animal_price-? where animal_name=?";
this.jdbcTemplate.update(parm, price, animalout);
System.out.println(animalout + "--降价成功");
}
//这个是接口实现方法--查找动物信息
@Override
public void FindAnimalById() throws IOException {
// String sql ="select * from animalshop where animal_id=id ";
// RowMapper<Animal> rowMapper=new BeanPropertyRowMapper<Animal>(Animal.class);
// 读取配置文件
String resource="mybatis-config.xml";
InputStream inputStream=Resources.getResourceAsStream(resource);
//格局配置文件构建SqlSesionFactory实例
SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
//通过SqlSessionFactory获得SqlSession实例
SqlSession sqlSession=sqlSessionFactory.openSession();
//sqlSession执行映射文件中的sql并返回结果
Animal animal=sqlSession.selectOne("chapter0619.mapper.AnimalMapper.FindAnimalById", 1001);
//打印输出结果
System.out.println(animal.toString());
//关闭sqlSession
sqlSession.close();
}
}
接着配置其他xml文件
在src目录下新建一个包用于存放映射空间–在该包下建立 (类名+Mapper.xml例如本例子就是AnimalMapper.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">
<!-- 定义映射空间 -->
<mapper namespace="chapter0619.mapper.AnimalMapper">
<!-- 根据动物编号来获取动物信息 -->
<!--定义sql语句的参数名,参数类型以及返回值类型,这里返回值是Animal类型,这根前面提到的animal类型的属性要跟数据表中列一一对应-->
<select id="FindAnimalById" parameterType="Integer" resultType="charpter0619.one.next.Animal">
select * from animalshop where animal_ID=#{id}
</select>
<!--#{}表示一个占位符,#{id}表示该占位符接收的参数名称为id-->
</mapper>
以上都配置好之后,要配置关于mybatis的配置文件,
在src目录下创建mybatis-config,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>
<!--1.配置环境,默认的环境id为mysq1 -->
<environments default="mysql">
<!--1.2配置id为mysql的数据库环境 -->
<environment id="mysql">
<!--使用JDBC的事务管理 -->
<transactionManager type="JDBC" />
<!--数据库连接池 -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver" />
<property name="url"
value="jdbc:mysql://localhost:3306/company?serverTimezone=UTC" />
<property name="username" value="root" />
<!--这里依然要加serverTimezone=UTC,不然也会提示时区错误-->
<property name="password" value="955945" />
</dataSource>
</environment>
</environments>
<!-- 2.配置Mapper的位置 -->
<mappers>
<mapper resource="chapter0619/mapper/AnimalMapper.xml" />
</mappers>
</configuration>
测试类
package charpter0619.one;
import java.io.IOException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Test {
public static void main(String[] args) throws IOException {
ApplicationContext app = new ClassPathXmlApplicationContext("NewFile.xml");
AnimalManger animal =(AnimalManger)app.getBean("managerAnimal");
animal.Transfer("小刚","小花", 100.5f);
animal.FindAnimalById();
}
}
这是文件目录
以上就是mybatis入门操作;
具体思路就是–
新建类,对应数据库中表中列名,在类中要写setter,getter方法以便获得数据,
配置xml
配置properties配置文件
写方法来查询数据
最后测试