在使用SSM做项目的时候,发现大量的配置文件要写,真的蛋疼。要知道懒是推进技术发展的源泉,所以有么有办法可以使用注解,以注解的形式让机器自己帮我们配置这些苦力活,毫无疑问,答案是肯定有的,因为懒,所以有了@mapper注解
和往常开发一样,dao接口层是我们要进行配置的,就在这里配置@mapper注解
@Mapper
public interface Inter {
@Insert("insert into sysuser values('e212te','2','jjj','pwd','ljk','男',1)")
int addUser();
}
有参数的情况
@Mapper
public interface Inter {
@select("select * from sysuser where userid=#{id}")
int queryUserByid(int id);
}
多参数情况
@Mapper
public interface Inter {
@select("select * from sysuser where userid=#{id} and uanme=#{uname}")
int queryUserByid(@param("id") int id,@param("uname") String uname);
}
如果是实体类呢
@Mapper
public interface Inter {
@Select("select * from sysuser where userid=#{userid} or username=#{username}")
List<Sysuser> selectUser(Sysuser u);
}
首先我们肯定要保证的是数据库连接成功,IOC环境一切正常
我们可以不用扫描mapper的映射文件,直接进行接口包扫描
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="A"/>
</bean>
其实可以猜测,当进行MapperScan的时候,检查到@Mapper,就拦截,生成代理类加入集合中,当执行该类的某一个方法时,检查方法的注解和参数,获取相应的值,执行方法和sql
不足的是,每一个接口都需要配置mapper注解,所以说懒是技术发展的中间力量,后来有又了@MapperScan注解
下面进行测试
public class InterTest {
public static void main(String[] args) {
ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring-dao.xml");
Inter bean = applicationContext.getBean(Inter.class);
int i = bean.addUser();
System.out.println(i);
}
}
"C:\Program Files\Java\jdk1.8.0_144\bin\java.exe" "-javaagent:D:\IntelliJ IDEA\IntelliJ IDEA 2018.2.4\lib\idea_rt.jar=59005:D:\IntelliJ IDEA\IntelliJ IDEA 2018.2.4\bin" -Dfile.encoding=UTF-8 -classpath "C:\Program Files\Java\jdk1.8.0_144\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_144\jre\lib\deploy.jar;C:\Program Files\Java\jdk1.8.0_144\jre\lib\ext\access-bridge-64.jar;C:\Program Files\Java\jdk1.8.0_144\jre\lib\ext\cldrdata.jar;C:\Program Files\Java\jdk1.8.0_144\jre\lib\ext\dnsns.jar;C:\Program bin\rep\org\springframework\spring-tx\5.2.4.RELEASE\spring-tx-5.2.4.RELEASE.jar"
九月 22, 2020 7:10:12 下午 com.alibaba.druid.support.logging.JakartaCommonsLoggingImpl info
信息: {dataSource-1} inited
1
Process finished with exit code 0