使用idea 搭建Spring+mybatis
1、file-new-project
项目的结构如下:
在WEB-INF 下面新建一个 文件夹lib
右键WEB-INF ,new-Directory
所需要的jar 包有:
lib下载地址:
网盘地址:https://pan.baidu.com/s/1YmDtsuhTQQp-HrZB3affGQ 提取码:26bs
然后右键 lib文件夹,选择Add as Library..
点击Ok,如下:
右键项目,new-Directory,
然后,右键刚刚新建的文件夹config,选择 Make Directory as..--->Sources Root
然后,在config 文件夹下面新建三个文件夹,分别是:mybatis,spring,sqlmapperk,并创建三个空的文件夹,如下图所示:
然后,在src 下面新建三个文件夹,po(用于放实体类),test(用于单元测试),dao,dao.impl
如图所示:
在config文件夹下面新建一个db.properties 和 log4j.properties
到这里,文件夹就弄好了.
下面进行开发内容:
1、config/mybatis/SqlMapConfig.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>
<mappers>
<mapper resource="sqlmapper/UserMapper.xml"/>
</mappers>
</configuration>
2、config/spring/applicationContext.xml
<?xml version="1.0" encoding="UTF-8" ?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd " > <!--加载配置文件--> <context:property-placeholder location="classpath:jdbc.properties"/> <context:property-placeholder location="classpath:log4j.properties"/> <!--配置数据源--> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="${jdbc.driver}"/> <property name="url" value="${jdbc.url}"/> <property name="username" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> <property name="maxActive" value="10"/> <property name="maxIdle" value="5"/> </bean> <!--配置SqlSessionFactory--> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <!--加载SqlMapConfig.xml配置文件--> <property name="configLocation" value="mybatis/SqlMapConfig.xml"/> <!--数据源--> <property name="dataSource" ref="dataSource"/> </bean> <!--注入UserInfoDaoImpl 接口实现类--> <bean id="userInfoDao" class="com.wlc.dao.impl.UserMapperDaoImpl">
<property name="sqlSessionFactory" ref="sqlSessionFactory"></property>
</bean>
</beans>
3、编写UserMapper.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="test"> <select id="findUserById" parameterType="java.lang.Integer" resultType="com.wlc.po.UserInfo"> select * from userInfo where id =#{id} </select> </mapper>
4、编写jdbc.properties
jdbc.driver=oracle.jdbc.OracleDriver jdbc.url=jdbc:oracle:thin:@localhost:1521:orcl jdbc.username=scott jdbc.password=tiger
5、log4j.properties
log4j.rootLogger=INFO,Console,File #定义日志输出目的地为控制台 log4j.appender.Console=org.apache.log4j.ConsoleAppender log4j.appender.Console.Target=System.out #可以灵活地指定日志输出格式,下面一行是指定具体的格式 log4j.appender.Console.layout = org.apache.log4j.PatternLayout log4j.appender.Console.layout.ConversionPattern=[%c] - %m%n #文件大小到达指定尺寸的时候产生一个新的文件 log4j.appender.File = org.apache.log4j.RollingFileAppender #指定输出目录 log4j.appender.File.File = logs/ssm.log #定义文件最大大小 log4j.appender.File.MaxFileSize = 10MB # 输出所以日志,如果换成DEBUG表示输出DEBUG以上级别日志 log4j.appender.File.Threshold = ALL log4j.appender.File.layout = org.apache.log4j.PatternLayout log4j.appender.File.layout.ConversionPattern =[%p] [%d{yyyy-MM-dd HH\:mm\:ss}][%c]%m%n
6、编写UserMapperDao 接口
package com.wlc.dao; import com.wlc.po.UserInfo; /** * @author 王立朝 * @version 1.0 * @description com.wlc.dao * @date 2019/1/25 **/ public interface UserMapperDao { //根据用户id查看用户信息 UserInfo findUserById(Integer integer); }
7、编写UserMapperDaoImpl.java
package com.wlc.dao.impl; import com.wlc.dao.UserMapperDao; import com.wlc.po.UserInfo; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.mybatis.spring.support.SqlSessionDaoSupport; /** * @author 王立朝 * @version 1.0 * @description com.wlc.dao.impl * @date 2019/1/25 **/ public class UserMapperDaoImpl extends SqlSessionDaoSupport implements UserMapperDao { @Override public UserInfo findUserById(Integer integer) { SqlSession sqlSession = this.getSqlSession();
//sqlSession.selectOne("namespace.Sql方法的id"); UserInfo userInfo = sqlSession.selectOne("test.findUserById"); return userInfo; } }
8、编写UserInfo.java 实体类
package com.wlc.po; /** * @author 王立朝 * @version 1.0 * @description po * @date 2019/1/16 **/ public class UserInfo { //用户id private Integer id; //用户名 private String userName; //密码 private String passWord; //性别 private String sex; //邮箱 private String email; //联系方式 private String phone; //家庭住址 private String address; //年龄 private Integer age; //血型 private String bloodType; public UserInfo(Integer id, String userName, String passWord, String sex, String email, String phone, String address, Integer age, String bloodType) { this.id = id; this.userName = userName; this.passWord = passWord; this.sex = sex; this.email = email; this.phone = phone; this.address = address; this.age = age; this.bloodType = bloodType; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getPassWord() { return passWord; } public void setPassWord(String passWord) { this.passWord = passWord; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getPhone() { return phone; } public void setPhone(String phone) { this.phone = phone; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public String getBloodType() { return bloodType; } public void setBloodType(String bloodType) { this.bloodType = bloodType; } public UserInfo() { } @Override public String toString() { return "UserInfo{" + "id=" + id + ", userName='" + userName + '\'' + ", passWord='" + passWord + '\'' + ", sex='" + sex + '\'' + ", email='" + email + '\'' + ", phone='" + phone + '\'' + ", address='" + address + '\'' + ", age=" + age + ", bloodType='" + bloodType + '\'' + '}'; } }
9、编写测试类
UserMapperTest.java
package com.wlc.test; import com.wlc.dao.UserMapperDao; import com.wlc.po.UserInfo; import org.junit.Before; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; /** * @author 王立朝 * @version 1.0 * @description com.wlc.test * @date 2019/1/25 **/ public class UserMapperTest { private ApplicationContext applicationContext; @Before //@Before :执行单元测试方法之前会先执行下面这个方法 public void doBefore() { applicationContext = new ClassPathXmlApplicationContext("classpath:spring/applicationContext.xml"); System.out.println("可以到达"); } @Test //测试UserMapper public void testUserMapper() { UserMapperDao userMapperDao = (UserMapperDao) applicationContext.getBean("userMapperDao"); UserInfo userInfo = userMapperDao.findUserById(2); System.out.println("用户的信息为:"+"性别:"+userInfo.getUserName() +"年龄:"+ userInfo.getAge()); } }
结果如下:
阳光总在风雨后!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了