Mybatis应该管SqlSessionFactory
整合MyBatis1、导入坐标
org.springframework spring-context5.2.10.RELEASE com.alibaba druid1.1.16 org.mybatis mybatis3.5.6 mysql mysql-connector-java5.1.47 org.springframework spring-jdbc5.2.10.RELEASE org.mybatis mybatis-spring1.3.0
2、创建SpringConfig配置类,添加@Configuration注解,添加@ComponentScan注解
3、创建JdbcConfig配置类,创建DataSource的Bean
4、在SpringConfig配置类使用注解@Import,引入JdbcConfig配置类
5、创建MybatisConfig类,将其引入SpringConfig
- 创建SqlSessionFactoryBean
- //设置类型别名的包
- //使用装配注入datasource
- 创建MapperScannerConfigurer的Bean
6、创建App类,执行代码,测试能否链接成功
public class App {
public static void main(String[] args) {
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(SpringConfig.class);
UserService userService = ctx.getBean(UserService.class);
List users = userService.findALL();
System.out.println(users);
}
}
执行结果
com.mysql.jdbc.Driver
jdbc:mysql://localhost:3306/restaruant?characterEncoding=utf8&serverTimezone=Asia/Shanghai
7月 20, 2022 3:49:50 下午 com.alibaba.druid.support.logging.JakartaCommonsLoggingImpl info
信息: {dataSource-1} inited
[User{userid=1, usercode='admin', userpwd='admin', isadmin=true, username='华xx', telephone='23122333445', gender='男', age=30, address='江苏苏州', createdon=Tue May 11 22:10:57 CST 2021, updatetime=Sun May 23 21:08:59 CST 2021}, User{userid=2, usercode='tchuayekai', userpwd='1234567', isadmin=false, username='小华', telephone='222333344551', gender='男', age=21, address='江苏苏州', createdon=Tue May 11 22:11:01 CST 2021, updatetime=Mon May 17 22:46:45 CST 2021}, User{userid=3, usercode='tchuayekai1', userpwd='123456', isadmin=false, username='null', telephone='null', gender='null', age=null, address='null', createdon=Wed May 19 23:01:10 CST 2021, updatetime=Wed May 19 23:01:10 CST 2021}, User{userid=4, usercode='admin2', userpwd='123', isadmin=true, username='null', telephone='null', gender='null', age=null, address='null', createdon=Wed May 19 23:13:26 CST 2021, updatetime=Wed May 19 23:13:26 CST 2021}, User{userid=5, usercode='xiaohua', userpwd='123456', isadmin=false, username='null', telephone='null', gender='null', age=null, address='null', createdon=Sat May 22 15:15:30 CST 2021, updatetime=Sat May 22 15:15:30 CST 2021}, User{userid=6, usercode='xiaohuaadmin', userpwd='123456', isadmin=true, username='null', telephone='null', gender='null', age=null, address='null', createdon=Sat May 22 15:15:48 CST 2021, updatetime=Sat May 22 15:15:48 CST 2021}, User{userid=7, usercode='admin3', userpwd='123456', isadmin=true, username='null', telephone='null', gender='null', age=null, address='null', createdon=Sat May 22 15:17:48 CST 2021, updatetime=Sat May 22 15:17:48 CST 2021}, User{userid=8, usercode='admin4', userpwd='123456', isadmin=true, username='哈哈哈哈', telephone='13466774567', gender='男', age=44, address='北京', createdon=Sat May 22 15:18:22 CST 2021, updatetime=Sat May 22 16:31:37 CST 2021}, User{userid=9, usercode='admin5', userpwd='123456', isadmin=true, username='admin5', telephone='18722223333', gender='男', age=18, address='江苏无锡', createdon=Sat May 22 15:26:39 CST 2021, updatetime=Sat May 22 16:28:04 CST 2021}, User{userid=10, usercode='admin11', userpwd='admin', isadmin=true, username='admin11', telephone='null', gender='null', age=null, address='null', createdon=Sun May 23 22:22:33 CST 2021, updatetime=Sun May 23 22:22:33 CST 2021}]
各个类的完整代码
完整目录:
SpringConfig@Configuration
@PropertySource("classpath:jdbc.properties")
@ComponentScan("com.hyk")
@Import({JdbcConfig.class,MybatisConfig.class})
public class SpringConfig {
}
JdbcConfig
public class JdbcConfig {
@Value("${jdbc.driver}")
private String driver;
@Value("${jdbc.url}")
private String url;
@Value("${jdbc.username}")
private String username;
@Value("${jdbc.password}")
private String password;
@Bean
public DataSource dataSource(){
DruidDataSource dataSource = new DruidDataSource();
System.out.println(driver);
System.out.println(url);
dataSource.setDriverClassName(driver);
dataSource.setUrl(url);
dataSource.setUsername(username);
dataSource.setPassword(password);
return dataSource;
}
}
MyBatisConfig
public class MybatisConfig {
@Bean
public SqlSessionFactoryBean sqlSessionFactoryBean(DataSource dataSource){
SqlSessionFactoryBean ssfb = new SqlSessionFactoryBean();
//设置类型别名的包
ssfb.setTypeAliasesPackage("com.hyk.domain");
//使用装配注入datasource
ssfb.setDataSource(dataSource);
return ssfb;
}
@Bean
public MapperScannerConfigurer mapperScannerConfigurer(){
MapperScannerConfigurer msc = new MapperScannerConfigurer();
//设置映射的包
msc.setBasePackage("com.hyk.dao");
return msc;
}
}
jdbc.properties
根据引用的版本不同jdbc.driver = com.mysql.jdbc.Driver或者com.mysql.cj.jdbc.Driver
jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/restaruant?characterEncoding=utf8&serverTimezone=Asia/Shanghai jdbc.username=root jdbc.password=******UserDao
public interface UserDao {
@Select("select * from user")
List findALL();
@Select("select * from user where userid=#{id}")
public User findById(int id);
@Insert("insert into user(userid,usercode,username) values(#{userid},#{usercode},#{username})")
int save(User user);
@Update("update user set username=#{username},usercode=#{usercode} where userid=#{userid}")
int update(User user);
@Delete("delete from user where userid = #{id}")
int delete(int id);
}
User
public class User {
private Integer userid;
private String usercode;
private String userpwd;
private Boolean isadmin;
private String username;
private String telephone;
private String gender;
private Integer age;
private String address;
private Date createdon;
private Date updatetime;
@Override
public String toString() {
return "User{" +
"userid=" + userid +
", usercode='" + usercode + ''' +
", userpwd='" + userpwd + ''' +
", isadmin=" + isadmin +
", username='" + username + ''' +
", telephone='" + telephone + ''' +
", gender='" + gender + ''' +
", age=" + age +
", address='" + address + ''' +
", createdon=" + createdon +
", updatetime=" + updatetime +
'}';
}
public Integer getUserid() {
return userid;
}
public void setUserid(Integer userid) {
this.userid = userid;
}
public String getUsercode() {
return usercode;
}
public void setUsercode(String usercode) {
this.usercode = usercode;
}
public String getUserpwd() {
return userpwd;
}
public void setUserpwd(String userpwd) {
this.userpwd = userpwd;
}
public Boolean getIsadmin() {
return isadmin;
}
public void setIsadmin(Boolean isadmin) {
this.isadmin = isadmin;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getTelephone() {
return telephone;
}
public void setTelephone(String telephone) {
this.telephone = telephone;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public Date getCreatedon() {
return createdon;
}
public void setCreatedon(Date createdon) {
this.createdon = createdon;
}
public Date getUpdatetime() {
return updatetime;
}
public void setUpdatetime(Date updatetime) {
this.updatetime = updatetime;
}
}
UserService
public interface UserService {
List findALL();
public User findById(int id);
int save(User user);
int update(User user);
int delete(int id);
}
UserServiceImpl
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserDao userDao;
@Override
public List findALL() {
return userDao.findALL();
}
@Override
public User findById(int id) {
return userDao.findById(id);
}
@Override
public int save(User user) {
return userDao.save(user);
}
@Override
public int update(User user) {
return userDao.update(user);
}
@Override
public int delete(int id) {
return userDao.delete(id);
}
}
App
public class App {
public static void main(String[] args) {
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(SpringConfig.class);
UserService userService = ctx.getBean(UserService.class);
List users = userService.findALL();
System.out.println(users);
}
}



