Java mybatis接口映射器
这个配置有什么问题?是否尝试使用接口而不是xml配置?我该怎么做?找不到任何教程。。。 导致我失败的原因是:java.io.IOException:找不到资源学生\ U映射器。“我的文件夹位置”是默认设置。Student-mapper.java位于“src/main/java”文件夹中。或者,我如何仅使用带有注释的bean configurarion来实现这一点?没有xml 这是我的密码: 学生地图绘制者Java mybatis接口映射器,java,sql,xml,mybatis,ioexception,Java,Sql,Xml,Mybatis,Ioexception,这个配置有什么问题?是否尝试使用接口而不是xml配置?我该怎么做?找不到任何教程。。。 导致我失败的原因是:java.io.IOException:找不到资源学生\ U映射器。“我的文件夹位置”是默认设置。Student-mapper.java位于“src/main/java”文件夹中。或者,我如何仅使用带有注释的bean configurarion来实现这一点?没有xml 这是我的密码: 学生地图绘制者 public interface Student_mapper { final
public interface Student_mapper {
final String getAll = "SELECT * FROM STUDENT";
final String getById = "SELECT * FROM STUDENT WHERE ID = #{id}";
final String deleteById = "DELETE from STUDENT WHERE ID = #{id}";
final String insert = "INSERT INTO STUDENT (NAME, BRANCH, PERCENTAGE, PHONE, EMAIL ) VALUES (#{name}, #{branch}, #{percentage}, #{phone}, #{email})";
final String update = "UPDATE STUDENT SET EMAIL = #{email}, NAME = #{name}, BRANCH = #{branch}, PERCENTAGE = #{percentage}, PHONE = #{phone} WHERE ID = #{id}";
@Select(getAll)
@Results(value = {
@Result(property = "id", column = "ID"),
@Result(property = "name", column = "NAME"),
@Result(property = "branch", column = "BRANCH"),
@Result(property = "percentage", column = "PERCENTAGE"),
@Result(property = "phone", column = "PHONE"),
@Result(property = "email", column = "EMAIL")
})
List getAll();
@Select(getById)
@Results(value = {
@Result(property = "id", column = "ID"),
@Result(property = "name", column = "NAME"),
@Result(property = "branch", column = "BRANCH"),
@Result(property = "percentage", column = "PERCENTAGE"),
@Result(property = "phone", column = "PHONE"),
@Result(property = "email", column = "EMAIL")
})
Student getById(int id);
@Update(update)
void update(Student student);
@Delete(deleteById)
void delete(int id);
@Insert(insert)
@Options(useGeneratedKeys = true, keyProperty = "id")
void insert(Student student);
}
<?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>
<typeAliases>
<typeAlias alias = "Student" type = "Student"/>
</typeAliases>
<environments default = "development">
<environment id = "development">
<transactionManager type = "JDBC"/>
<dataSource type = "POOLED">
<property name = "driver" value = "org.postgresql.Driver"/>
<property name = "url" value = "jdbc:postgresql://localhost:5432/postgres"/>
<property name = "username" value = "postgres"/>
<property name = "password" value = "postgres"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource = "Student_mapper.java"/>
</mappers>
</configuration>
主类
public class Annotations_Example {
public static void main(String args[]) throws IOException{
Reader reader = Resources.getResourceAsReader("SqlMapConfig.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
SqlSession session = sqlSessionFactory.openSession();
session.getConfiguration().addMapper(Student_mapper.class);
Student_mapper mapper = session.getMapper(Student_mapper.class);
//Create a new student object
Student student = new Student();
//Set the values
student.setName("zara");
student.setBranch("EEE");
student.setEmail("zara@gmail.com");
student.setPercentage(90);
student.setPhone(123412341);
//Insert student data
mapper.insert(student);
System.out.println("record inserted successfully");
session.commit();
session.close();
}
}
resources文件夹中的SQLMapConfig.xml
public interface Student_mapper {
final String getAll = "SELECT * FROM STUDENT";
final String getById = "SELECT * FROM STUDENT WHERE ID = #{id}";
final String deleteById = "DELETE from STUDENT WHERE ID = #{id}";
final String insert = "INSERT INTO STUDENT (NAME, BRANCH, PERCENTAGE, PHONE, EMAIL ) VALUES (#{name}, #{branch}, #{percentage}, #{phone}, #{email})";
final String update = "UPDATE STUDENT SET EMAIL = #{email}, NAME = #{name}, BRANCH = #{branch}, PERCENTAGE = #{percentage}, PHONE = #{phone} WHERE ID = #{id}";
@Select(getAll)
@Results(value = {
@Result(property = "id", column = "ID"),
@Result(property = "name", column = "NAME"),
@Result(property = "branch", column = "BRANCH"),
@Result(property = "percentage", column = "PERCENTAGE"),
@Result(property = "phone", column = "PHONE"),
@Result(property = "email", column = "EMAIL")
})
List getAll();
@Select(getById)
@Results(value = {
@Result(property = "id", column = "ID"),
@Result(property = "name", column = "NAME"),
@Result(property = "branch", column = "BRANCH"),
@Result(property = "percentage", column = "PERCENTAGE"),
@Result(property = "phone", column = "PHONE"),
@Result(property = "email", column = "EMAIL")
})
Student getById(int id);
@Update(update)
void update(Student student);
@Delete(deleteById)
void delete(int id);
@Insert(insert)
@Options(useGeneratedKeys = true, keyProperty = "id")
void insert(Student student);
}
<?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>
<typeAliases>
<typeAlias alias = "Student" type = "Student"/>
</typeAliases>
<environments default = "development">
<environment id = "development">
<transactionManager type = "JDBC"/>
<dataSource type = "POOLED">
<property name = "driver" value = "org.postgresql.Driver"/>
<property name = "url" value = "jdbc:postgresql://localhost:5432/postgres"/>
<property name = "username" value = "postgres"/>
<property name = "password" value = "postgres"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource = "Student_mapper.java"/>
</mappers>
</configuration>
不能混合使用xml和java配置,只能使用java配置
//Create data Source
public DataSource getDataSource() {
DataSourceBuilder dataSourceBuilder = DataSourceBuilder.create();
dataSourceBuilder.driverClassName("");
dataSourceBuilder.url("");
dataSourceBuilder.username("");
dataSourceBuilder.password("");
return dataSourceBuilder.build();
//Inject dataSourec to SqlSessionFactory
public SqlSessionFactory sqlSessionFactory() throws Exception {
SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
factoryBean.setDataSource(getDataSource());
return factoryBean.getObject();
//inject SqlSessionFactory to Mapper Suppose
public MapperFactoryBean<Object it can be return type> yourMapper() throws Exception {
MapperFactoryBean<YourMapper> factoryBean = new MapperFactoryBean<>(YourMapper.class);
factoryBean.setSqlSessionFactory(sqlSessionFactory());
return factoryBean;
}
//创建数据源
公共数据源getDataSource(){
DataSourceBuilder DataSourceBuilder=DataSourceBuilder.create();
dataSourceBuilder.driverClassName(“”);
dataSourceBuilder.url(“”);
dataSourceBuilder.username(“”);
dataSourceBuilder.password(“”);
返回dataSourceBuilder.build();
//将dataSourec注入SqlSessionFactory
公共SqlSessionFactory SqlSessionFactory()引发异常{
SqlSessionFactoryBean factoryBean=新的SqlSessionFactoryBean();
setDataSource(getDataSource());
返回factoryBean.getObject();
//将SqlSessionFactory注入映射程序
公共MapperFactoryBean yourMapper()引发异常{
MapperFactoryBean factoryBean=新的MapperFactoryBean(YourMapper.class);
setSqlSessionFactory(sqlSessionFactory());
返回factoryBean;
}
然后使用yurMapper对象调用其中定义的函数。不要混合使用xml和java配置,只能使用java配置
//Create data Source
public DataSource getDataSource() {
DataSourceBuilder dataSourceBuilder = DataSourceBuilder.create();
dataSourceBuilder.driverClassName("");
dataSourceBuilder.url("");
dataSourceBuilder.username("");
dataSourceBuilder.password("");
return dataSourceBuilder.build();
//Inject dataSourec to SqlSessionFactory
public SqlSessionFactory sqlSessionFactory() throws Exception {
SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
factoryBean.setDataSource(getDataSource());
return factoryBean.getObject();
//inject SqlSessionFactory to Mapper Suppose
public MapperFactoryBean<Object it can be return type> yourMapper() throws Exception {
MapperFactoryBean<YourMapper> factoryBean = new MapperFactoryBean<>(YourMapper.class);
factoryBean.setSqlSessionFactory(sqlSessionFactory());
return factoryBean;
}
//创建数据源
公共数据源getDataSource(){
DataSourceBuilder DataSourceBuilder=DataSourceBuilder.create();
dataSourceBuilder.driverClassName(“”);
dataSourceBuilder.url(“”);
dataSourceBuilder.username(“”);
dataSourceBuilder.password(“”);
返回dataSourceBuilder.build();
//将dataSourec注入SqlSessionFactory
公共SqlSessionFactory SqlSessionFactory()引发异常{
SqlSessionFactoryBean factoryBean=新的SqlSessionFactoryBean();
setDataSource(getDataSource());
返回factoryBean.getObject();
//将SqlSessionFactory注入映射程序
公共MapperFactoryBean yourMapper()引发异常{
MapperFactoryBean factoryBean=新的MapperFactoryBean(YourMapper.class);
setSqlSessionFactory(sqlSessionFactory());
返回factoryBean;
}
然后使用yurMapper对象调用其中定义的函数。我认为创建连接的方式存在一些问题。公共数据源getDataSource(){DataSourceBuilder DataSourceBuilder=DataSourceBuilder.create();DataSourceBuilder.driverClassName(“org.postgresql.Driver”);dataSourceBuilder.url(“”);dataSourceBuilder.username(“”);dataSourceBuilder.password(“”);return dataSourceBuilder.build();我认为您创建连接的方式有一些问题。public DataSource getDataSource(){dataSourceBuilder dataSourceBuilder=dataSourceBuilder.create();dataSourceBuilder.driverClassName(“org.postgresql.Driver”);dataSourceBuilder.url(“”);dataSourceBuilder.username(“”);dataSourceBuilder.password(“”);return dataSourceBuilder.build();这可以在任何类中使用吗?我想它需要使用springboot。如何不使用?这可以在任何类中使用吗?我想它需要使用springboot。如何不使用?